Python - 简单的输入程序挂在输入语句处
Python - Simple input program is hanging at input statement
我正在编写一个简单的程序,它接受 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
可能是什么问题?我在许多其他程序中使用了带拆分的输入,但它有时会挂起,但大部分时间都能正常工作。
您正在遍历您的列表 并同时向其添加 ,这意味着您的列表会增长到无穷大。
观察当你在循环体内打印一些东西时会发生什么:
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 ...
循环永远不会结束。
我正在编写一个简单的程序,它接受 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
可能是什么问题?我在许多其他程序中使用了带拆分的输入,但它有时会挂起,但大部分时间都能正常工作。
您正在遍历您的列表 并同时向其添加 ,这意味着您的列表会增长到无穷大。
观察当你在循环体内打印一些东西时会发生什么:
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 ...
循环永远不会结束。