text
上面的代码采用给定列表的所有元素并将它们除以2,并且一切正常,但是为了练习,我试图将其转换为while循环,但是由于某种原因,我没有出现任何错误,但代码仍在运行,我不得不强行停止它。
my_data = [4, 8, 15, 16, 23, 42]
index = 0
for item in my_data:
k = 0
for i in range(2, item+1):
if (i % 2 == 0):
k += 1
my_data[index] = k
index += 1
print(my_data)
这是我尝试实现的方法,就我而言,这似乎不起作用。如果有人可以为我澄清一下,我将不胜感激。预先谢谢你。
答案 0 :(得分:1)
在第5行:
if j % 2 == 0:
当i==3
和j==3
时,if语句将被忽略。 j
无法增加。由于停止条件为j<i+1
,因此它将永远循环
只需添加else
语句即可处理这种情况
答案 1 :(得分:1)
您的第二个while循环仅在j是成对的情况下才前进,如果j不成对(因为j仅增加1),则while循环将永远循环。 您将k替换为j时犯了一个小错误,您应该继续使用k
i = 0
while i < len(my_data):
j = 2
k = 0
while j < i+1:
if j % 2 == 0:
k+=1
j += 1
my_data[i] = k
i += 1
print my_data
答案 2 :(得分:1)
如果您只是尝试使用来划分列表的每个项目,而您也尝试这种方式。
my_data = [4, 8, 15, 16, 23, 42]
index = 0
while len(my_data) > index:
my_data[index] = int(my_data[index]/2)
index +=1
print(my_data)