有人可以幫助我嗎?無論我穿什麼號碼我得到相同的答案/輸出我的清單給出了相同的答案
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')
有人可以幫助我嗎?無論我穿什麼號碼我得到相同的答案/輸出我的清單給出了相同的答案
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')
根據該意見,你想的是,如果用戶鍵入數字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
適用於所有其他情況。
請解釋你希望從你的代碼中得到什麼樣的行爲。同時給出輸入和輸出的例子 –
這是一個完全有效的代碼,我猜你正在使用Python 2.x並且它會評估你的輸入(例如int) - 如果是這種情況,請嘗試使用改爲'raw_input'。 – zwer
只是跟在@zwer上,'raw_input'將任何輸入轉換成一個字符串,從而可以匹配列表中的字符串:_The函數然後從輸入中讀取一行,將其轉換爲string_,[source](https:/ /docs.python.org/2/library/functions.html#raw_input) – patrick