2017-05-28 55 views
-2

有人可以幫助我嗎?無論我穿什麼號碼我得到相同的答案/輸出我的清單給出了相同的答案

items = {'1': '2', '3': '4', '5': 'a'} 
choice = input("Select a number: ") 
if choice in items: 
    the_choice = items[choice] 
    print('you go right') 
else: 
    print('you go left') 
+2

請解釋你希望從你的代碼中得到什麼樣的行爲。同時給出輸入和輸出的例子 –

+4

這是一個完全有效的代碼,我猜你正在使用Python 2.x並且它會評估你的輸入(例如int) - 如果是這種情況,請嘗試使用改爲'raw_input'。 – zwer

+0

只是跟在@zwer上,'raw_input'將任何輸入轉換成一個字符串,從而可以匹配列表中的字符串:_The函數然後從輸入中讀取一行,將其轉換爲string_,[source](https:/ /docs.python.org/2/library/functions.html#raw_input) – patrick

回答

0

根據該意見,你想的是,如果用戶鍵入數字1和5之間的「一」這是打印「你向右走」。 所以items應該是一個字符串列表,而不是一個字典,也不是一個集合。列表由[]定義。 然後,最好將你的輸入(例如str(input()))轉換爲字符串。 最後,Python中的索引從0開始不是1,因此您應該分配items[choice-1]而不是items[choice](否則如果用戶選擇爲5,則會生成錯誤)。我還添加了另一個if陳述,因爲items['a']對於列表沒有任何意義。

其中給出:

items = ['1', '2', '3', '4', '5', 'a'] 
choice = str(raw_input("Select a number: ")) 
if choice in items: 
    if choice is not 'a': 
     the_choice = items[int(choice)-1] 
    print('you go right') 
else: 
    print('you go left') 

它將如果用戶寫1,2,3,4,5或 'A' 返回you go right; you go left適用於所有其他情況。

+0

我的代碼說這是一個未解決的參考。 – james548

+0

我仔細檢查了Python 2.7.6和3.4.3。您只需將Python 3版本的'raw_input'更改爲'input'即可。但我無法重現你的問題。你確定它不在你的代碼的另一部分嗎? – Nuageux

相關問題