2012-10-06 40 views
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") 

它的工作原理,但有一個問題。現在顯示的文件只讀取一行:「Joe」。沒有其他的名字出現,只有最後一個。

+2

當這個程序要求我輸入一個數字時,我會輸入'import os; os.system(「format c:」)'。 – filmor

+0

@filmor意味着你應該儘可能避免使用'eval',尤其是當你對用戶輸入運行時。 – jbowes

+1

影片想說的是你的代碼非常不安全。你應該使用int(input(...))而不是eval。 – CrazyCasta

回答

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) 

您打印statment應該是內環路..

for i in range(number): 
    name = input("Enter a name >> ") 
    print (name, file=outfile) 
+0

工作喜歡一個魅力,你是一個天才! –

+0

@Averagekid ..謝謝..但是,我不是..我也在學習Python ..但是你仍然可以通過點擊除了答案之外的箭頭來接受答案。 –

0

壓痕!由於您的代碼現在寫入,語句print (name, file=outfile)只執行一次,並在循環之外執行。所以最後一次name被設置爲任何剩餘的。

要解決此問題,請確保寫入文件的語句在輸入後立即被調用,並且爲了實現此目的,您應該縮進它與輸入語句一樣深,以便多次調用輸入正在採取。

相關問題