鱼C论坛

 找回密码
 立即注册
查看: 2721|回复: 8

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

[复制链接]
发表于 2022-11-22 21:47:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 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?
最佳答案
2022-11-22 22:15:10
本帖最后由 jackz007 于 2022-11-23 00:03 编辑
  1.    1、for 循环只要不是 break 退出,最后都能进 else,当然,如果一开始就不满足循环条件,也是直接进 else,就是说,不能进入 for 循环和循环自然结束,都会进入 else。

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


for 不能进入:
  1. for x in range(3 , 1):
  2.     pass
  3. else :
  4.     print('Bingo!')
复制代码

for 自然结束:
  1. for x in range(1 , 3):
  2.     pass
  3. else :
  4.     print('Bingo!')
复制代码

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

使用道具 举报

发表于 2022-11-22 22:15:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-11-23 00:03 编辑
  1.    1、for 循环只要不是 break 退出,最后都能进 else,当然,如果一开始就不满足循环条件,也是直接进 else,就是说,不能进入 for 循环和循环自然结束,都会进入 else。

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


for 不能进入:
  1. for x in range(3 , 1):
  2.     pass
  3. else :
  4.     print('Bingo!')
复制代码

for 自然结束:
  1. for x in range(1 , 3):
  2.     pass
  3. else :
  4.     print('Bingo!')
复制代码

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

使用道具 举报

发表于 2022-11-22 22:15:27 | 显示全部楼层
又不是sum+=i,是sum+=1,每次循环sum加一,一共101次,那不就是101么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-23 10:40:40 | 显示全部楼层
你的 for……else 应该是没有问题的,就是:
  1. sum += 1
复制代码

朋友,这里是 sum += 1,不是 sum += i,测测视力好吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-23 15:46:50 | 显示全部楼层
jackz007 发表于 2022-11-22 22:15
for 不能进入:

for 自然结束:

请教一下为啥当break退出时,就无法进else语句?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-23 15:49:20 | 显示全部楼层
LEEFEI571 发表于 2022-11-23 15:46
请教一下为啥当break退出时,就无法进else语句?

           因为 break 不是通过 for 的条件判断退出循环的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-23 15:51:29 | 显示全部楼层
jackz007 发表于 2022-11-23 15:49
因为 break 不是通过 for 的条件判断退出循环的。

for 的条件判断具体是指啥?这块儿我一直理解不透.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-23 16:15:34 | 显示全部楼层
LEEFEI571 发表于 2022-11-23 15:51
for 的条件判断具体是指啥?这块儿我一直理解不透.

         指不能进入循环,我不是给你举例了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-23 19:51:28 | 显示全部楼层
jackz007 发表于 2022-11-23 16:15
指不能进入循环,我不是给你举例了吗?

清楚了,非常感谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 02:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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