这是我在python 3.2.3上的代码IDLE:
numbers = []
numbers = input("(Enter a empty string to quit) Enter a number: ")
while numbers != "":
numbers = input("(Enter a empty string to quit) Enter a number; ")
numbers.append(n)
print ("The list is", numbers)
现在的问题是,我无法追加清单。
如果我使数字= int(输入(然后它适用于附加列表,但不会让我退出输入数字。
如果我做数字=输入
就像我现在一样,它不会让我追加列表
如何才能将这些数字附加到列表中?
答案 0 :(得分:9)
有两个问题:
numbers
而不是n
; append()
位置错误。尝试以下方法:
numbers = []
n = input("(Enter a empty string to quit) Enter a number: ")
while n != "":
numbers.append(n)
n = input("(Enter a empty string to quit) Enter a number; ")
print ("The list is", numbers)
如果要存储整数而不是字符串,请将append()
行更改为:
numbers.append(int(n))
从风格上讲,如果第一个提示与所有后续输入的提示相同,我将按如下方式重构代码:
numbers = []
while True:
n = input("(Enter a empty string to quit) Enter a number: ")
if n == "": break
numbers.append(n) # or int(n)
print ("The list is", numbers)
答案 1 :(得分:2)
尽管您已经遇到了问题,但对于简单的数据输入,这可以大大简化:
numbers = list(map(int, iter(input, '')))
从内到外工作(一点解释):
iter(input, '')
重复调用,直到''
(空输入)满足,yields
该值map(int,...)
获取这些值并尝试转换为整数 - 如果不能list(...)
然后接受并创建一个实际的list
对象numbers = ...
错误,因为它说:)然后,可能包装一个函数(在这里使用functools.partial
,但lambda很好):
def ask(prompt):
from functools import partial
prompt_func = partial(input, prompt)
return list(map(int, iter(prompt_func, '')))
numbers = ask('Keep entering valid numbers (or a blank line to quit)')