2013-08-28 54 views
0

我有一個文件名列表 例如。文件名= ['blacklisted.txt','abc.txt','asfafa.txt','heythere.txt']在python中爲列表索引手動鍵入一個數字

我想允許用戶手動選擇要顯示的文件名,

*

print "Please key in the first log file you would like to use: " 
choice1=raw_input() 
print"Please key in the second log file you would like to use: " 
choice2=raw_input() 
filename1=filenames[choice1] 
filename2=filenames[choice2] 
print filename1 
print filename2 

*

但是,我得到了錯誤: 文件名1 =文件名[選擇1] 類型錯誤:列表索引必須是整數,不能海峽。

有什麼建議嗎?謝謝!

+0

'選擇1 = INT(的raw_input())',使用'INT( )'。 –

回答

0

你必須先轉換輸入使用int()

print "Please key in the first log file you would like to use: " 
choice1=raw_input() 
. 
. 
filename1=filenames[int(choice1)] 
. 

爲int或者你可以輸入直接轉換爲int

choice1 = int(raw_input()) 
filename1 = filenames[choice1] 

你也應該與它們對應的索引方式顯示文件列表數字,以便用戶知道要選擇哪個。

UPDATE

的錯誤處理,你可以嘗試像

while True: 
    choice1 = raw_input('Enter first file name index: ') 
    if choice1.strip() != '': 
     index1 = int(choice1) 
     if index1 >= 0 and index1 < len(filenames): 
      filename1 = filenames[index1] 
      break // this breaks the while loop when index is correct 

與同爲選擇2

+0

您可能想要將其封裝在try/while循環中以清理輸入/重新提示用戶。如果用戶輸入的值不能強制爲int,則會引發TypeError;如果從列表的邊界輸入值,則會引發IndexError,並且您可能不希望程序在這些場景中崩潰。 –

+0

@SilasRay可能會做不同的檢查以避免錯誤和索引問題,但答案意味着作爲OP要求的最小解決方案 – mavili

+0

非常感謝幫助!解決了問題!會聽從你的建議和錯誤處理! – user2633882