马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
说实话我也不太理解for…else和while…else有啥区别,但是总归老师是讲到了,也就认真的扒了扒资料。
还真找到点不一样的东西。
Python的for...else和while...else语法,这是Python中最不常用,最为误解的语法特性之一。
Python中的for、while循环都有一个可选的else分支(类似if语句和try语句那样),在循环迭代正常完成之后执行。
换句话说,如果我们不是除正常以外的其他方式退出循环,那么else分支将被执行。
也就是在循环体内没有break语句、没有return语句,或者没有异常出现。
1、while…else语句
举个栗子:
猜数字的游戏应该大家都写过,假定我们定义个count =0的变量,while count < 3的时候,执行正常猜数字的步骤,提示猜大猜小。
else语句写在最外面,打印出一句“太多的尝试次数,游戏结束!”
每猜错一次count自增1,当count自增到3的时候,while语句不满足,会自动执行else语句,打印出来上面那句话。
好像跟普通的print没什么区别。
但是,假定用户在3次的范围内猜对了,while语句满足,else不满足的情况下,else语句是不会打印的。
说来说去好麻烦,上代码:
lucky_num = 18
guess_count = 0
while guess_count < 3:
input_num = int(input("Input the guess num: "))
if lucky_num == input_num:
print("Bingo!")
break
if input_num > lucky_num:
print("The real number is smalller!")
elif input_num < lucky_num:
print("The real number is bigger...")
guess_count += 1
else:
print("Too many retrys!Game Over")
大致就是这么意思,也就是说,while…else可以过滤掉某些你不愿意出现在用户面前的东西。
2、for…else语句:
如果说上面那个语句比较好理解的话,其实这个倒也不难。什么意思呢?
官方给的解释是这样:
用 break 关键字终止当前循环就不会执行当前的 else 语句,而使用 continue 关键字快速进入下一论循环,或者没有使用其他关键字,循环的正常结束后,就会触发 else 语句。
else的触发:
正常结束的循环:list = [1,2,3,4,5]
for x in list:
print(x)
else:
print("else")
使用continue:list = [1,2,3,4,5]
for x in list:
continue
print(x)
else:
print("else")
不触发else:
list = [1,2,3,4,5]
for x in list:
print(x)
break
else:
print("else")
概括for else语句可以总结成以下:
如果我依次做完了所有的事情(for正常结束),我就去做其他事(执行else);若做到一半就停下来不做了(中途遇到break),我就不去做其他事了(不执行else)。
1、只有循环完所有次数,才会执行 else 。
2、break 可以阻止 else 语句块的执行
话说来这两个else语句似乎用途不太大啊,有同学这么想了(其实我也是这么想的哈),简单的可以过滤掉某些你不愿意给客户看见的东西,或者可以避免掉一些不必要的错误(else和raise联用)。
这里有篇文章写的挺有意思,留下查看吧。 戳我前进
|