将嵌套的for循环转换为嵌套的while循环

时间:2018-11-13 04:33:22

标签: python for-loop while-loop

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)

这是我尝试实现的方法,就我而言,这似乎不起作用。如果有人可以为我澄清一下,我将不胜感激。预先谢谢你。

3 个答案:

答案 0 :(得分:1)

在第5行:

if j % 2 == 0:

i==3j==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)