循环赋值问题
a=5for b in range(a):
print(b)
a-=1
打印值居然是
0
1
2
3
4
我的感觉是a的值在每次循环后都-1了为什么b 还能取到4 ,难道range(a)在for 的这个语句中并不循环赋值吗? Python在执行for循环前,会先计算出range(a)的值,得到了一个range类的对象,并将b带入迭代
(用人话来说,就是range(a)是在循环前已经计算好的,循环过程中即使a改变了,也不会影响这个的值) 本帖最后由 jackz007 于 2022-10-20 16:54 编辑
a=5
for b in range(a):
就是
a=5
for b in range(5):
无论在循环内怎么修改 a 和 b ,最终,该循环几次还是几次,下一次循环 b 的值该是多少还是多少,你的改变不会对循环产生任何影响,因为,这一切都是在循环开始的时候就固定死了的。 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 本帖最后由 jackz007 于 2022-10-20 18:12 编辑
paulwang 发表于 2022-10-20 18:08
这样确实可以理解 就是 in 后面的语句不参与循环,b参与循环
这个与下面while 的语句不一样, 如下面这 ...
是的,在这一点上 while 和 for 有所不同,while 是接受人为改变循环变量的。所以,有些时候适合用 while 的时候就不要用 for,当然,用 while 需要专门操心驱动循环变量 看不懂
页:
[1]