三个语句break、continue、else和两个循环for循环、while循环

三个语句

break

与if配合使用,if...break的意思是如果满足了某一个条件,就提前结束循环,只能在循环内部使用。所以要注意break前的缩进!Tab键和空格键不能同时混用。

for...in...:
    ...
    if ...:
        break
# break语句搭配while循环
while...(条件):
    ...
    if ...:
        break

当然,break也可以和if条件同级,如:

for...in...:
    ...
    if ...:
    break
# break语句搭配while循环
while...(条件):
    ...
    if ...:
    break

不过这样子的话,循环只运行一次就被break,只运行了一次循环体,这时等同于直接运行循环体,而不用加循环和break。比如:

for i in range(5):
    a = int(input('输入一个数'))
    if a == 3:
        print(a)
    break

等同于:

a = int(input('输入一个数'))
if a == 3:
    print(a)

 

加break的时候要看明确是要达到什么样的结果才要跳出循环。

 

continue

在循环内部使用,当条件满足时,触发continue语句,将跳过之后的代码,直接回到循环的开始,即结束本次循环,开启下次循环。

for...in...:
    ...
    if ...:
        continue
# continue语句搭配while循环
while...(条件):
    ...
    if ...:
        continue  

只要触发了continue,后面的代码不管是什么都会被跳出,回到循环的开始。

for i in range(5):
    print('我真棒!')
    if i == 3 :
        continue
    print('这句话在i==3的时候不打印')

else

当循环中没有碰到break语句、continue语句等跳出循环的操作时,就会执行循环后面的else语句,否则就不会执行。

for i in range(5):
    a = int(input('请输入0结束循环,你有5次机会:'))
    if a == 0:
        print('你触发了break语句,导致else语句不会生效。')    
        break
else:
    print('5次循环你都错过了,else语句生效了。')

当去掉break语句之后,最后一句在循环结束之后都会打印出来。

 

两个循环

for循环

语法格式:

for i in <序列>:

    pass

介绍:

  • i 是变量名,可以修改;
  • in后可接列表、字典和字符串,但不允许接整数、浮点数;若是字典,则赋值给变量的是字典中的key,而不是value。即遍历的是key,若是字符串,会依次输出字符;
  • for...in...语句最后需要加冒号;
  • for...in...语句内部语句需要缩进,会被重复执行
  • 循环时,逐一访问全部数据;
  • 列表里的元素值依次赋值给变量i,i最终的值取决于最新一次的赋值
for i in [1,2,3,4,5]:
   print(i)
#显示结果为:
#1
#2
#3
#4
#5
for i in '我真棒':
    print(i)
#显示结果为:
#我
#真
#棒

d = {'小明':95,'小红':99,'小白':92,'小张':89}
for i in d:
    print(i)
#显示结果为:
#小明
#小红
#小白
#小张

d = {'小明':'醋','小红':'油','小白':'盐','小张':'米'}
for i in d:
    print(d[i])
#显示结果为:
#95
#99
#92
#89

补充一个range()函数:

  1. 使用range()函数,可以生成一个整数序列。
  2. 参数的意义:
  • range(n)与range(0,n)一样,都是生成一个从0到n-1的整数序列
  • range(m,n),n>m,生成从m到n-1的序列。取头不取尾。
  • range(m,n,p),n>m,生成m到n-1中间隔为p的整数序列。例如range(3,30,5)的意思就是从3开始每间隔5取一个数,直到29,结果为[3,8,13,18,23,28]。(只有两个参数时,p默认为1。)

range()也有偏移量,取值时跟列表类似。

可以用for...in...语句遍历range()函数生成的整数序列并打印。

for i in range(13,17):
    print(i)
#显示结果为:
#13
#14
#15
#16

for i in range(n):,表示循环n次。如下面例题中i=0,i=1,i=2时都执行一次语句内的代码,也就是3次。

for i in range(3):
    print('我很棒')
#结果显示为:
#我很棒
#我很棒
#我很棒

 

while循环

  1. 与if条件判断类似,while后条件若满足,会进入语句内部循环直至条件不再满足或内部打断。
  2. 用于处理未知循环次数或循环固定次数的问题。
  3. 格式:

while <条件>:

    pass

当while的条件中含有变量时,变量需要先定义;

初始值根据需要可灵活设置,条件要对应做更改。(后面做详细说明)

#代码1:
a = 0
#非格式要求,但在while循环前必须要定义变量 
while a < 5:
      a = a + 1
      print(a)


#代码2
a = 1
#非格式要求,但在while循环前必须要定义变量 
while a < 6:
      print(a)
      a = a + 1
#代码1和代码2的结果均为:
#1 
#2
#3
#4
#5
a = 0
while a < 5:
      a = a + 1
print(a)
#显示结果为:(因为print()在循环外,只输出最终a的赋值)

 

两种循环的对比

for循环和whlie循环最大的区别在于【循环的工作量是否确定】,for循环就像空房间依次办理业务,直到把【所有工作做完】才下班。但while循环就像哨卡放行,【满足条件就一直工作】,直到不满足条件就关闭哨卡。

 

 

循环次数确定的情况下:

一般循环次数确定的情况下,for循环和while循环是可以通用的,常见的就是计数。

比如:

#用for循环打印3遍
for i in range(1,4) :
    print('明日复明日,明日何其多。')


#用while循环打印3遍
j = 1
while j<4 :
    print ('明日何其多,明日何其多。')
    j =j+1

该段代码过程中没有用到 i 或 j 这两个变量,只是应用了其计数的作用。

 

下面这段代码就有用到循环条件中的变量:

#for循环完成1到100的整数分别乘以5的计算,第一个打印的值是5,最后一个是500
for i in range(1,101):
    print(i*5)

用while改写:

#while循环完成1到100的整数分别乘以5的计算,第一个打印的值是5,最后一个是500
#第一种方法:
i = 0
while i<100 :
    i = i+1
    print (i*5)

i的初始值不一样,后面【i=i+1】的位置以及while的条件都有变化,这个可以逐行进行分析

初始值是i=0,我们要打印出第一个值是5,那就需要把【i=i+1】放在print()之前,这样0加上了1之后,再乘以5,才能得出第一个打印的值,即5;最后一个值是500,那i的值在【i=i+1】之后要是100,并且打印之后跳出循环,所以while的条件是【i<100】,当i等于99时,满足【i<100】的条件,执行【i=i+1】,此时i的值变成100,然后print (i*5)为500,再到while条件判断,【100<100】,显然不成了,所以跳出。

#第二种方法:
i = 1
while i<101 :
    print (i*5)
    i = i+1

这个也是同样的道理。初始值是i=1,我们要打印出第一个值是5,那就需要把【i=i+1】放在print()之后,这样print (i*5)才能得出第一个打印的值,即5;最后一个值是500,那print(i*5)的时候i的值要是100。i=100时,要满足while条件,这时打印print (i*5),得到最后需要的值500,然后执行【i=i+1】并要求跳出循环,执行【i=i+1】之后i的值为101,所以while的条件是【i<101】。

print()语句不一样要放在最后,代码是一行一行运行的,print()之后有代码,还是会继续运行

 

 

"工作量"不确定的情况下

比如:

while True:

    print('while True')

当然,这是一个死循环,那么如何让循环终止呢?

加入break

while True:

    print('while True')

break

这样子就可以防止死循环,但是这个代码只能打印一遍,如何才能打印两遍呢?

这需要加入一个变量和if条件,变量主要是用于计算循环次数,if条件用来打断。

i = 1

while True:

    print('while True')

    if i == 2:

        break

    i += 1

改成其他初始值也可以:

i = 0

while True:

    print('while True')

    if i == 1:

        break

    i += 1

将【i += 1】放在条件句之前也可以

i = 0
while True:

    i += 1 # 放在print()后面也可以,只要在条件句之前
    print('while True')

    if i == 2:
        break

这几段代码都是可以,只要计算了两遍,就可以。(同学们有其他的想法也可以直接敲代码print()一下)

还有没有其他方法呢?

当然有。比如用for循环嵌套:

while True:

    for i in range(2):

      print('while True')

    break

for循环会自定义一个变量i,所以这里不要再给i定义初始值。

除了用range(2),还可以用range(1,3)、range(2,4)、[1,2]、['a','b']、'ab'、'12'等等。只是range()比较常用。可以很灵活的运用。

这一点大家能否理解呢?

解释一下:因为这里不需要用到变量i的值,所以只要能够使得for循环后面的序列给i赋值两次就可以。

range(1,3)会取数字1和2赋值给i,使得循环执行两遍;

range(2,4)会取数字2和3赋值给i,使得循环执行两遍;

[1,2]会取数字1和2赋值给i,使得循环执行两遍;

['a','b']会取字符串'a'和'b'赋值给i,使得循环执行两遍;

'ab'会取字符串'a'和'b'赋值给i,使得循环执行两遍;

'12'会取字符串'1'和'2'赋值给i,使得循环执行两遍。

 

另外,要注意的是,其实在这一段代码中,有点累赘了,还可以再优化。

试试直接运行循环体也可以出来一样的结果:

for i in range(2):
    print('while True')

 

同学们在写循环的时候,一定要思考一下,循环体包括那一部分?

在什么条件下需要打断跳出?

 

另外,在写循环之前可以先把循环体写出来,测试没问题之后再加入循环体。

 

 

-End-

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xin学数据

为你点亮一盏灯,愿你前进无阻。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值