LEEFEI571 发表于 2022-11-22 21:47:28

[求助]for...else语句的困惑!!!

本帖最后由 LEEFEI571 于 2022-11-22 21:47 编辑

请教各位大神:

在<零基础入门学习Python>第4章-<了不起的分支和循环>中,在第35页讲到else语句时,其中for...else语法如下标注:
for 变量 in 可迭代对象:
    循环体
else:
    条件不成立时执行的内容
问题1:对于for循环语句,出现何种情景时for语句条件不成立?(如对于的while循环语句,则有while True/False)

在后面的p4_14.py例子中:
sum = 0
for in in range(101):
    sum += 1
else:
   print(sum)
运行结果为何是101,而不是5050?

jackz007 发表于 2022-11-22 22:15:10

本帖最后由 jackz007 于 2022-11-23 00:03 编辑

   1、for 循环只要不是 break 退出,最后都能进 else,当然,如果一开始就不满足循环条件,也是直接进 else,就是说,不能进入 for 循环和循环自然结束,都会进入 else。

   2、for in in range(101): 在这里保留字 in 在首次循环中被赋值为 0,使 for 语句失去作用,从而直接进入 else

for 不能进入:
for x in range(3 , 1):
    pass
else :
    print('Bingo!')
for 自然结束:
for x in range(1 , 3):
    pass
else :
    print('Bingo!')

tommyyu 发表于 2022-11-22 22:15:27

又不是sum+=i,是sum+=1,每次循环sum加一,一共101次,那不就是101么

zhangjinxuan 发表于 2022-11-23 10:40:40

你的 for……else 应该是没有问题的,就是:
sum += 1
朋友,这里是 sum += 1,不是 sum += i,测测视力好吗{:10_250:}

LEEFEI571 发表于 2022-11-23 15:46:50

jackz007 发表于 2022-11-22 22:15
for 不能进入:

for 自然结束:

请教一下为啥当break退出时,就无法进else语句?

jackz007 发表于 2022-11-23 15:49:20

LEEFEI571 发表于 2022-11-23 15:46
请教一下为啥当break退出时,就无法进else语句?

         因为 break 不是通过 for 的条件判断退出循环的。

LEEFEI571 发表于 2022-11-23 15:51:29

jackz007 发表于 2022-11-23 15:49
因为 break 不是通过 for 的条件判断退出循环的。

for 的条件判断具体是指啥?这块儿我一直理解不透.

jackz007 发表于 2022-11-23 16:15:34

LEEFEI571 发表于 2022-11-23 15:51
for 的条件判断具体是指啥?这块儿我一直理解不透.

         指不能进入循环,我不是给你举例了吗?

LEEFEI571 发表于 2022-11-23 19:51:28

jackz007 发表于 2022-11-23 16:15
指不能进入循环,我不是给你举例了吗?

清楚了,非常感谢!!!
页: [1]
查看完整版本: [求助]for...else语句的困惑!!!