010课后练习
各位好!关于010课后练习动动手最后一个:答案中第一种方案用的while,
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
count = 0
length = len(member)
while count < length:
print(member, member)
count += 2
这边意思我理解了,但是我在想如果如下:
for i in range(len(member)):
if i<= len(member) -1:
print (member,member)
i +=2
if i >len(member) -1:
break
结果是:
小甲鱼 88
88 黑夜
黑夜 90
90 迷途
迷途 85
85 怡静
怡静 90
90 秋舞斜阳
秋舞斜阳 88
为什么定义了i +=2并没有起到限定作用呢?
谢谢帮助先!
因为你这里的代码:
for i in range(len(member)): # 这里你是用 i
每次循环,for 这边会重新给 i 赋值 导致你for循环里面对 i 进行赋值被 for循环重新赋值给覆盖了
但是你上面while 的代码,并不会再次给count 赋值,所以你可以这样的改下代码:
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
count = 0 # 用count赋值和索引
for i in range(len(member)//2): # 这边要除以二,因为你每次count+2 都是间隔两个了,如果不除以而,会导致count后面超出列表长度导致索引报错哦
if i<= len(member) -1:
print (member,member)
count +=2
if i >len(member) -1:
break
如果对你有帮助,记得设置最佳哦~{:10_287:}
我的理解哈,不一定标准:
首先, i += 1 是把 i的值改变了,第一次循环最后 i = 2 结束循环,进入下一次循环的时候因为运行 for i in range()这句,所以 i 的值又被从新定义了,所以 i += 1 没有起到限制效果
其次,检测方法就是感觉那里出问题了就在那里print(i)打印出结果看一下是否和自己的想法一样,如果不一样就想一下原因,我就是这么干的,虽然很慢。
再次,for循环和while循环的区别就在于for循环,每一次 i 都会被从新赋值,while循环是赋值后会随循环而改变,因为while本身没有值可以供变量使用的值,只有判断。
for i in range(len(member)):
if i<= len(member) -1:
print (member,member)
i +=2
i = 100
print(i)
运行这个代码,就可以发现,每一次“i”都会被从新赋值,而不是沿用上一次循环的值。
最后,对上述代码的更改我是这么做的,加个步长
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
for i in range(0,len(member),2):
if i<= len(member) -1:
print (member,member)
if i >len(member) -1:
break
写在最后的:我也是刚学python不久,刚学到18课,有什么说的不对的还望指正,一起加油!!!
最后的最后:有个方法,用for循环算一下1+2+3+...+100,从1加到100的结果是多少,就能明白for循环的意思了 for循环是遍历循环,它是把一个可迭代对象中的每个元素拿出来执行循环体内的程序。所以每次进入for循环,for后面的对象都会被赋值为in后面可迭代对象的下一个对象。
所以在循环体内部改变for后面的对象的赋值是不可行的,它在下次循环中会被可迭代对象的下一个对象给覆盖掉。
而while循环是判断循环,只要条件为真就执行循环体内的程序。
所以可以在循环体给改变对象的赋值。 for i in range(len(member)): 这一句条改成for i in range(0,len(member),2):
然后循环体里删除i+=2 Twilight6 发表于 2020-5-19 07:35
因为你这里的代码:
每次循环,for 这边会重新给 i 赋值 导致你for循环里面对 i 进行赋值被 for循环重新 ...
你的程序能解决问题,但是你的解释是不清楚的。
for循环会用 i 对可遍历对象逐个遍历,
他的程序中在for循环语句块内修改 i 不影响 i 对原可遍历对象的遍历,也就是每次循环 i 都会从列表中读取下一个元素,不管在for循环语句块中对 i 进行什么操作。
所以他的程序才会得到那个结果。
实例说话,开始for循环会得到i从0~9进行遍历
第一次循环 i=0,得到 '小甲鱼',在循环体内i进行了 i+=2,此时 i=2 ,但它不影响下一次循环i的赋值;
第二次循环 i=1,得到 '88',在循环体内i进行了 i+=2,此时 i=3 ,但它不影响下一次循环i的赋值;
……
需要修改的是循环开始时的遍历对象
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
for i in range(0,len(member),2):#range(0,10,2)遍历对象变成了:0 2 4 6 8
print (member,member)
sunrise085 发表于 2020-5-19 10:12
你的程序能解决问题,但是你的解释是不清楚的。
for循环会用 i 对可遍历对象逐个遍历,
他的程序中在 ...
非常感谢,很清晰~ majian890324 发表于 2020-5-19 07:56
我的理解哈,不一定标准:
首先, i += 1 是把 i的值改变了,第一次循环最后 i = 2 结束循环,进入下一次 ...
谢谢~了解了~ Twilight6 发表于 2020-5-19 07:35
因为你这里的代码:
每次循环,for 这边会重新给 i 赋值 导致你for循环里面对 i 进行赋值被 for循环重新 ...
谢谢~
页:
[1]