1

これは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(input( を作成すると、リストの追加には機能しますが、数字の入力をやめることはできません。現在のように数字 = 入力を作成すると、リストを追加できません。

これらの番号をリストに追加するにはどうすればよいですか?

4

2 に答える 2

9

2 つの問題があります。

  1. ;numbersの代わりに入力を割り当てています。n
  2. これ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)
于 2012-12-04T15:10:01.947 に答える
2

答えが得られた問題にもかかわらず、これは単純なデータ入力のために大幅に単純化できます。

numbers = list(map(int, iter(input, '')))

裏返しに作業する(少し説明):

  • iter(input, '')''(空の入力)が満たされ、yieldsその値が満たされるまで繰り返し呼び出します
  • map(int,...)それらの値を取り、整数に変換しようとします - 変換できない場合は例外がスローされます
  • 次に、list(...)それを取得して実際のlistオブジェクトを作成します
  • numbers = ...それが言うように、エラーです:)

次に、おそらく関数でラップします(functools.partialここで使用しますが、ラムダは問題ありません):

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)')
于 2012-12-04T15:15:40.200 に答える