Python:将用户输入存储在列表中直到退出

Python: store userinput in list until quit

这是我当前的代码:

    account_number = [" "]
uinput = int(input("Type some Bank account numbers. Type "quit" to stop: "))
while uinput != "quit":
    account_number.append(uinput)
else:
    print(Kontonummern, frozenset)

我想在我的列表“account_number”中存储“uinput”,直到用户输入“quit”。之后列表应该变成一个 frozenset 并打印出来。

目前我只能输入 1 个帐号,然后程序崩溃了。

试试这个:

account_number = [" "]
uinput = input("Type some Bank account numbers. Type quit to stop: ")
while uinput != "quit":
    account_number.append(int(uinput))
    uinput = input("Type some Bank account numbers. Type quit to stop: ")
else:
    print(Kontonummern, frozenset(account_number))

问题是您从未更新过您的 uinput。您的输入可以是“退出”,但您将其转换为 int,这也会导致问题。

您永远不会在循环中更改 uinput,因此一旦您的程序进入循环,它就永远不会离开(好吧,直到 Python 内存不足)。

最简单的方法是重构循环,使 input 调用在其中。单独的 if 语句用于测试输入和跳出循环。

account_number = []
while True:
   uinput = int(input("Type some Bank account numbers. Type "quit" to stop: "))
   if uinput == "quit":
       break
   account_number.append(uinput)
account_number = frozenset(account_number)
print(account_number)

您还可以使用两个 input() 语句,如 Jhanzaib 所示。这个策略(我学会了称之为“priming read”)但是难点在于,如果你需要改变它,你将需要在两个地方改变提示。当然,你可以利用它提供两种不同的提示(“输入第一个帐号”,“输入另一个帐号”)。

这不起作用,因为您没有在循环中调用任何更多输入。这意味着在第一次输入后你会调用一个无限循环。

另外,用“quit”终止也不起作用,因为您正试图将您的 uinput 加载到一个整数中。这意味着一旦用户输入“quit”,就会发生错误,因为这个字符串无法转换为整数值。

如果您只想使用字符串,现在可以这样工作:

account_number = [" "]
uinput = input("Type some Bank account numbers. Type quit to stop: ")
while uinput != "quit":
    account_number.append(uinput)
    uinput = input("Type some Bank account numbers. Type quit to stop: ")
else:
    print(account_number, frozenset)