在循环中将用户输入附加到列表中

3

我刚接触Python编程,正在进行一些实验。希望我的问题不会太傻:我正在编写一个小程序,将输入添加到列表中,并在输入等于4时打印出来,使用while循环。问题是它永远不会停止添加输入并打印列表。

我的代码是:

S=input()
L=[]
while S!=4:
    L.append(S)
    if S==4:
        break
print(L)

2
输入始终是字符串类型。当您键入“4”时,您添加到列表的不是数字4,而是字符串“4”。您需要先将其转换为整数类型(int),例如int(input()) - Ma0
你使用的是哪个版本的Python? - PM 2Ring
我正在使用Python 3.6。 - Franz
谢谢,使用int(input())非常完美。 - Franz
4个回答

1

input()函数返回字符串对象,因此它们永远不可能等于整数对象4。

要解决这个问题,请将4替换为'4'

这将把'4'视为字符串,当你输入4作为输入时,相等性将保持不变。


1
问题是因为你曾经读取了输入S = 1,例如,之后S始终为1,所以S永远不会变成4,你的循环永远不会停止,你必须把你的输入加入到while中:
list = []
number = -1
while number != 4:
    number = int(input())
    list.append(number)
print(list)

如果在while中检查到S != 4,就不需要在while中使用if语句。


1

您的代码还有一个大问题,即您没有更新 S。更正确的答案应该是:

S=input()
L=[]
while S!=4:
    L.append(S)
    if S=="4":
        break
    S = input()
print(L)

如果您不想让所有内容都等待新输入,则可以考虑添加线程,但如果仅是为了允许用户将值添加到数组中并通过添加4来停止执行此操作,则可以使用此方法。

这是没有使用 int 强制转换的,当然,如果你想让数组包含 int 类型的元素,这一点并没有被创建者明确提到。 - davy gillebert

-1

你的代码中创建了一个无限循环。在进入循环后,你没有改变S的值。你应该在循环内部添加另一个输入,像这样:

S=input()
L=[]
while S!=4:
   L.append(S)
   S = input()
print(L)

另外,你代码中的if条件是无用的,因为它已经在while循环声明中设置了。

好的,循环会一直运行,直到用户输入数字4。这怎么算是一个无限循环呢? - itaisls9
输入函数返回字符串,因此 S 永远不会是整数。 - PM 2Ring
在Python 3中,input()返回一个字符串,但在2.7中它返回用户输入表达式的类型。我在2.7上运行了它,问题中没有指定Python版本。 - itaisls9
在SO上,如果没有指定版本,应该假定使用Python 3。从print调用的样子来看,OP可能正在使用Python 3,虽然当然不能保证。然而,由于安全原因,应避免使用Python 2的input函数。此外,任何现在开始学习Python的人都应该学习Python 3而不是2。 - PM 2Ring
啊,好的,实际上我也已经将 "S = input()" 更正为 "S = int(input())",这是根据其他用户答案中的建议。我不能接受超过一个答案作为解决我的问题的方案,但我已经在评论中感谢了他们。 - Franz
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接