提问者:小点点

Python-Simple输入程序在输入语句处挂起


我在写一个简单的程序,取5个数字,把它们放在一个列表中,把每个数字除以2,然后打印输出列表。

list1 = input("Type 5 numbers: ").split()
for eachElement in list1:
    list1.append(str(int(eachElement)//2))
print("final numbers are "," ".join(list1[5:]))

问题:程序在第一个输入行后挂起。 在终点站,它取5个号码,但从不上下一条线。

Type 5 numbers: 56 67 84 45 78


会有什么问题呢? 我在许多其他程序中使用过带有split的输入,但它有时会挂起,大部分时间都能工作。


共2个答案

匿名用户

您正在迭代您的列表并同时向其追加,这意味着您的列表将增长到无穷大。

观察当您在循环体中打印某些内容时会发生什么:

list1 = input("Type 5 numbers: ").split()
for eachElement in list1:
    val = str(int(eachElement)//2)
    print("Appending", val)
    list1.append(val)
print("final numbers are "," ".join(list1[5:]))

这将打印:

Type 5 numbers: 1 2 3 4 5
Appending 0
Appending 1
Appending 1
Appending 2
Appending 2
Appending 0
Appending 0
Appending 0
...

您可以先将新的数字放在另一个列表中来解决这个问题:

list1 = input("Type 5 numbers: ").split()
list2 = []
for eachElement in list1:
    val = str(int(eachElement)//2)
    print("Appending", val)
    list2.append(val)
list1.extend(list2)
print("final numbers are "," ".join(list1[5:]))

匿名用户

for eachElement in list1:
    list1.append(str(int(eachElement)//2))

循环体将更多的元素添加到list1中,因此for element in...循环将永远不会结束。