我怎样才能附上这份清单?

时间:2012-12-04 15:08:31

标签: python

这是我在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(输入(然后它适用于附加列表,但不会让我退出输入数字。 如果我做数字=输入 就像我现在一样,它不会让我追加列表

如何才能将这些数字附加到列表中?

2 个答案:

答案 0 :(得分:9)

有两个问题:

  1. 您将输入分配到numbers而不是n;
  2. append()位置错误。
  3. 尝试以下方法:

    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)')