0

ユーザーにいくつかの名前を入力させ、これらの名前でファイルを作成するプログラムを書いています。Python 3.2 を使用しています。

number = eval(input("How many names are there? "))
#Say the user enters 2
outfile = open('names.txt', 'w')

for i in range(number):
    name = input("Enter a name >> ")
#Say the user first enters Bob
#Then the user enters Joe

print (name, file=outfile)
outfile.close()
print ("Names have been written to file")

動作しますが、問題が 1 つあります。現在表示されているファイルは、「Joe」という 1 行だけを読み取ります。他の名前は表示されず、最後の名前のみが表示されます。

4

2 に答える 2

3

あなたはこのコードを持っています: -

for i in range(number):
    name = input("Enter a name >> ")
#Say the user first enters Bob
#Then the user enters Joe

print (name, file=outfile)

ステートメントはループ内にある必要があります..

for i in range(number):
    name = input("Enter a name >> ")
    print (name, file=outfile)
于 2012-10-06T20:40:45.427 に答える
0

インデント!コードが作成されたので、ステートメントprint (name, file=outfile)はループの外で 1 回実行されます。したがって、最後nameに何かに設定された時間が残ります。

これを修正するには、ファイルへの書き込みステートメントが入力直後に呼び出されるようにします。そのためには、入力ステートメントと同じくらい深くインデントし、入力が取得されている回数だけ呼び出されるようにする必要があります。

于 2012-10-06T20:42:20.067 に答える