首页 > 解决方案 > Python While 循环中的初学者问题

问题描述

为什么这个 While 循环没有中断或停止

我添加了一些输出截图

term = 0
i = 13
while True:
    print i > 1
    print "i = ",i
    if i == 1:
        term += 1
        break
    if i%2 == 0:
        i = i / 2
        term += 1
    if i%2 != 0:
        i = i * 3 + 1
        term += 1

输出

我也试过这种方式

term = 1
i = 13
while i > 1:
    print i > 1
    if i%2 == 0:
        i = i / 2
        term += 1
    if i%2 != 0:
        i = i * 3 + 1
        term += 1

标签: pythonloopswhile-loop

解决方案


用于elif使案例互斥。您不希望if在同一个循环迭代中执行多个语句。

if i%2 == 0:
    i = i / 2
    term += 1
elif i%2 != 0:
    i = i * 3 + 1
    term += 1

或者只是做它,else因为第二个条件是多余的。

if i%2 == 0:
    i = i / 2
    term += 1
else:
    i = i * 3 + 1
    term += 1

2它在和书面之间振荡的原因4是因为2导致两个if语句都运行。2即便如此,第一个跑了一半i,成功了1。现在很奇怪,第二个触发,1变成4.

if i%2 == 0:
    i = i / 2       # 2 --> 1
    term += 1
if i%2 != 0:
    i = i * 3 + 1   # 1 --> 4
    term += 1

下一次迭代4变为2.

if i%2 == 0:
    i = i / 2       # 4 --> 2
    term += 1

这两个迭代在无限循环中一遍又一遍地重复。


推荐阅读