为什么我的while循环会陷入无穷大?

时间:2016-10-16 19:27:37

标签: python-3.x while-loop

我想输入一系列数字并以“stop”结束,while循环是检查x是否不等于'stop',它会继续加上输入数并输出每个循环的总和,然而,while循环落入无穷大。例如,我的输入是:

12

35

56

23

56

455

556

344

22

22

停止

    #read the input

    x = input()

    #add up by a loop
    T = 0
    x_int = int(x)
    while x != 'stop':
        for i in range(1, 10):
            T += x_int
            print(i, T)

2 个答案:

答案 0 :(得分:2)

您需要提示while循环中的下一个输入。作为看台,您永远不会提示输入其他数据,因此您永远不会看到停止。我添加了一个提示,以便更清楚。

#add up by a loop
T = 0
while True:
    x = input("enter data: ")
    if x == 'stop':
        break
    x_int = int(x)
    for i in range(1, 10):
        T += x_int
        print(i, T)

我们中的一些人对您想要如何输入数据感到困惑。如果您不想要任何提示并且想要从用户读取任意数量的行(或者可能是从另一个程序管道输出),您可以直接读取stdin。

#add up by a loop
import sys
T = 0
for line in sys.stdin:
    x = line.strip()
    if x == 'stop':
        break
    x_int = int(x)
    T += x_int
    print(i, T)

答案 1 :(得分:0)

试试这个程序,看它是否有效。您的代码存在的问题是不需要for循环。我不明白为什么在你的程序中使用它,希望你理解。

T = 0
i = 0
while True:
    x = input("enter data: ")
    if x == 'stop':
        break
    else:
       i =i+1
       x_int = int(x)
       T += x_int
       print(i, T)