heidern0612 发表于 2018-11-29 15:49:10

【python中for…else和while…else的用法】

说实话我也不太理解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 =
for x in list:
    print(x)
else:
    print("else")


使用continue:
list =
for x in list:
    continue
    print(x)
else:
    print("else")


不触发else:


list =
for x in list:
    print(x)
    break
else:
    print("else")


概括for else语句可以总结成以下:

如果我依次做完了所有的事情(for正常结束),我就去做其他事(执行else);若做到一半就停下来不做了(中途遇到break),我就不去做其他事了(不执行else)。

      1、只有循环完所有次数,才会执行 else 。

      2、break 可以阻止 else 语句块的执行




话说来这两个else语句似乎用途不太大啊,有同学这么想了(其实我也是这么想的哈),简单的可以过滤掉某些你不愿意给客户看见的东西,或者可以避免掉一些不必要的错误(else和raise联用)。

这里有篇文章写的挺有意思,留下查看吧。 戳我前进


lxping 发表于 2022-11-17 23:43:29

学习了

assasinchen 发表于 2022-11-18 14:01:10

{:10_257:}{:10_257:}
页: [1]
查看完整版本: 【python中for…else和while…else的用法】