009了不起的分支3的疑惑
for i in range(0, 10, 2):print('I Love FishC')
为什么这里第一次出现的变量i不用在前面定义,也不会报错呢 因为这是局部变量 如果你说i的话,这就是for循环的语法呀,
定义一个变量,遍历in后面的东西 因为i在for循环的时候,就已经定义好了,这是规定。
就像你问,为什么打印要用Print指令,而不是中文的“打印”似的。
这都是规定.. liuzhengyuan 发表于 2020-4-27 13:43
因为这是局部变量
在Python中不是 因为这里就是变量i的定义 在for循环里面这就是在定义i这个变量…… heidern0612 发表于 2020-4-27 13:48
因为i在for循环的时候,就已经定义好了,这是规定。
就像你问,为什么打印要用Print指令,而不是中文的 ...
那可以用x或y其他变量替代i么 Lucky.Jobling 发表于 2020-4-27 14:28
那可以用x或y其他变量替代i么
可以,随便。
因为这个i用的并不多,所以就随便定义个变量即可。
也不用写太繁琐,因为下面可能会调用标号之类的。 heidern0612 发表于 2020-4-27 14:29
可以,随便。
因为这个i用的并不多,所以就随便定义个变量即可。
谢谢大神,还有个问题哈
for i in range(10):
if i%2!=0:
print(i)
continue
i+=2
print(i)
这个后面的i+=2是不是和for条件里的i没有关系?就像你说的for条件里变量也可以设定x或y,就算后面i的变化和for里面的不一样,也不影响for后面的i顺次在0和10之间取下去?后面的也可以写成别的变量?
for x in range(10):
if i%2!=0:
print(x)
continue
y+=2
print(i)
这样也是可以的?但是这样y是不是会又没定义了啊 Lucky.Jobling 发表于 2020-4-27 14:43
谢谢大神,还有个问题哈
for i in range(10):
if i%2!=0:
不,这里的i+=2,就是for循环里定义的那个i。i在for循环的时候就已经定义好了,依次取值在0到10之间。
你前面定义了i,所以下面才能用i+=2。你前面没定义y,下面就用不了y+=2.逻辑就是这么简单。 heidern0612 发表于 2020-4-27 14:29
可以,随便。
因为这个i用的并不多,所以就随便定义个变量即可。
for i in range(10):
if i%2!=0:
print(i)
continue
i+=2
print(i)
这个程序结果没看懂{:5_100:}
i=0时,if是不成立的,就会继续执行,输出0+2
i=1时,if成立,输出1,回到条件循环
i=2了,if不成立,继续执行,输出2+2
这以后执行,for后面的i是从3还是4执行啊,从结果看,是从3执行,if成立,输出3
这里的i+=2不会影响for后面的i取值么 Lucky.Jobling 发表于 2020-4-27 14:43
谢谢大神,还有个问题哈
for i in range(10):
if i%2!=0:
如果你不喜欢用i这个变量,可以换成y。那么for循环里也要换成Y。或者Y提前定义好也是可以的。
y = 0
for x in range(10):
if i%2!=0:
print(x)
continue
y+=2
print(y) 本帖最后由 heidern0612 于 2020-4-27 15:07 编辑
Lucky.Jobling 发表于 2020-4-27 14:52
for i in range(10):
if i%2!=0:
print(i)
i +=2循环的只是当次i的结果,不影响上面的for循环。
或者你可以这么理解,当i等于0的时候,给i重新赋值为2,当i等于1的时候,重新给i复制为1.
for循环赋值,然后运行程序i重新赋值;for循环i又重新赋值,然后程序运算,i重新赋值…循环
实际上这个牵扯到内存机制的问题,当你for循环写好的时候,__next__一遍遍的就已经执行好了你需要迭代的次数。
你下面无论怎么运算,这个迭代次数已经在你for循环定义好了,存在内存机制中。
在你从0到10的这10次运算中,i已经从0到10定义完毕,下面执行的只是你运算的结果而已。 heidern0612 发表于 2020-4-27 14:54
如果你不喜欢用i这个变量,可以换成y。那么for循环里也要换成Y。或者Y提前定义好也是可以的。
嗯嗯,觉得写成两个变量清楚多了。但是一个程序中,同样的变量符号可以有不同的变量计算方式么,什么情况下可以这样用,就是他出现的时候怎么知道到底该用哪种计算方式啊,这样用一个字母表示不同的变量有什么好处么,我感觉反而没那么清楚o(╯□╰)o 本帖最后由 heidern0612 于 2020-4-27 15:17 编辑
Lucky.Jobling 发表于 2020-4-27 15:06
嗯嗯,觉得写成两个变量清楚多了。但是一个程序中,同样的变量符号可以有不同的变量计算方式么,什么情况 ...
为什么同一个变量的变化,要用俩变量表示呢?
简单说个生活中的问题:
假设你需要做10次搬运工作。
每当你遇到偶数搬运工作时,可能因为工作量大,你就需要和你的伙伴一起做(假设你跟你的伙伴是同一个人,可以叠加。或者说你的影分身)。
难道这个时候我还重新再找个人别人,让我的伙伴(或者你的影分身)和别人一起做吗?
这种自增的变量在解python数学题的时候应用很多,如果你实在理解不了,可以先放下,往后学。
heidern0612 发表于 2020-4-27 14:59
i +=2循环的只是当次i的结果,不影响上面的for循环。
或者你可以这么理解,当i等于0的时候,给i重新 ...
或者你可以这么理解,当i等于0的时候,给i重新赋值为2,当i等于1的时候,重新给i复制为1.
这句不明白{:5_100:}{:5_100:}{:5_100:}
是不是
i=0的时候,执行第一次for和后面的程序,这个时候i=2了啊,返回for条件继续执行,i又从1开始
该怎么理解啊……
是不是就机械得记成,for后面的条件有规定取值方式,就不受后面程序的影响对变量赋值{:5_94:} Lucky.Jobling 发表于 2020-4-27 15:17
或者你可以这么理解,当i等于0的时候,给i重新赋值为2,当i等于1的时候,重新给i复制为1.
这句不明白{ ...
你就简单理解为:
for循环定义的时候,就已经定义好了循环次数。
后面程序运算的结果,不会影响循环的次数即可。 Lucky.Jobling 发表于 2020-4-27 15:17
或者你可以这么理解,当i等于0的时候,给i重新赋值为2,当i等于1的时候,重新给i复制为1.
这句不明白{ ...
哇……兄弟,你可是已经把别人选为最佳了耶…… heidern0612 发表于 2020-4-27 15:20
你就简单理解为:
for循环定义的时候,就已经定义好了循环次数。
太谢谢大神了!!!!!{:5_109:}
页:
[1]
2