鱼C论坛

 找回密码
 立即注册
查看: 3214|回复: 5

[已解决]循环赋值问题

[复制链接]
发表于 2022-10-20 16:35:58 | 显示全部楼层 |阅读模式

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

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

x
a=5
for b in range(a):
        print(b)
        a-=1

打印值居然是
0
1
2
3
4
我的感觉是a的值在每次循环后都-1了为什么b 还能取到4 ,难道range(a)在for 的这个语句中并不循环赋值吗?
最佳答案
2022-10-20 16:48:00
本帖最后由 jackz007 于 2022-10-20 16:54 编辑
a=5
for b in range(a):
        就是
a=5
for b in range(5):
        无论在循环内怎么修改 a 和 b ,最终,该循环几次还是几次,下一次循环 b 的值该是多少还是多少,你的改变不会对循环产生任何影响,因为,这一切都是在循环开始的时候就固定死了的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-20 16:42:24 | 显示全部楼层
Python在执行for循环前,会先计算出range(a)的值,得到了一个range类的对象,并将b带入迭代
(用人话来说,就是range(a)是在循环前已经计算好的,循环过程中即使a改变了,也不会影响这个的值)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-20 16:48:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-20 16:54 编辑
a=5
for b in range(a):
        就是
a=5
for b in range(5):
        无论在循环内怎么修改 a 和 b ,最终,该循环几次还是几次,下一次循环 b 的值该是多少还是多少,你的改变不会对循环产生任何影响,因为,这一切都是在循环开始的时候就固定死了的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-20 18:08:23 | 显示全部楼层
jackz007 发表于 2022-10-20 16:48
就是

        无论在循环内怎么修改 a 和 b ,最终,该循环几次还是几次,下一次循环 b 的值 ...

这样确实可以理解 就是 in 后面的语句不参与循环,b参与循环
这个与下面while 的语句不一样, 如下面这个while中a b 都是参与循环的,即便是在套用公式中变量也是参与循环的?    大神不知道我这样理解对不?
a=0
b=0
while a<b:
        print(a)
        a+=1
        b-=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-20 18:10:37 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-20 18:12 编辑
paulwang 发表于 2022-10-20 18:08
这样确实可以理解 就是 in 后面的语句不参与循环,b参与循环
这个与下面while 的语句不一样, 如下面这 ...


         是的,在这一点上 while 和 for 有所不同,while 是接受人为改变循环变量的。所以,有些时候适合用 while 的时候就不要用 for,当然,用 while 需要专门操心驱动循环变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-10-22 10:10:05 | 显示全部楼层
看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 09:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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