鱼C论坛

 找回密码
 立即注册
查看: 4724|回复: 2

[学习笔记] 【python中for…else和while…else的用法】

[复制链接]
发表于 2018-11-29 15:49:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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联用)。

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


本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-17 23:43:29 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-18 14:01:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 08:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表