2017-05-25 86 views
0

我是Python新手,一般編碼。我正在嘗試創建一個填空題測驗來練習。第一部分要求用戶選擇一個難題。一旦輸入,代碼附加一個空列表。我將使用列表來加載問題和答案。但是,我遇到的問題是if語句不會識別用戶輸入。我想確保用戶只輸入簡單,中等或難度。爲了查看代碼是否工作,我使用了打印功能。但是,我的代碼直接轉到else語句並打印「再試一次」。有任何想法嗎?If-statements Not Regonizing User Input

這是我的代碼。

choice = [] 

new_choice = raw_input('Select your quiz difficulty: Easy, Medium, Hard: ') 
choice.append(new_choice) 
print choice 

if choice == 'easy': 
    print 'True' 
elif choice == 'medium': 
    print 'True' 
elif choice == 'hard': 
    print 'True' 
else: 
    print 'Try again.' 
+1

或許你也應該學習Python 3中,如果你是新來的Python之前。 – chepner

+0

我大約是Udacity.com編程課程的3/4,他們用2.7教學。 – Brad

回答

1

choice是包含您的輸入,而不是輸入的列表。您存儲在new_choice變量中的用戶輸入。試試這個

choice = raw_input('Select your quiz difficulty: Easy, Medium, Hard: ') 
print choice 

if choice == 'easy': 
    print 'True' 
elif choice == 'medium': 
    print 'True' 
elif choice == 'hard': 
    print 'True' 
else: 
    print 'Try again.' 
+0

謝謝ktb。我錯過了那個邏輯錯誤, – Brad

+0

我不想聽起來有需要,但是因爲你是新手,我會提醒你,如果有人回答你的問題,通過點擊帖子旁邊的複選標記。快樂的小路上您的冒險編程! – ktb

+0

我以爲我事先做過。當我這樣做時,它表示我的upvote已記錄,但沒有顯示,因爲我的重新分數低於15。 – Brad

2

在其目前的形式choice是一個列表,而你正試圖把它比作字符串/文本。相反,試試這個:

choices = [] 

new_choice = raw_input('Select your quiz difficulty: Easy, Medium, Hard: ') 
choices.append(new_choice) 
print choices 

if choices[-1] == 'easy': 
    print 'True' 
elif choices[-1] == 'medium': 
    print 'True' 
elif choices[-1] == 'hard': 
    print 'True' 
else: 
    print 'Try again.' 

我改名的列表choices,表明它擁有多個對象。 -1讓我們來訪問你添加到列表中的最後一件事。因此,如果您打算將所有用戶回覆存儲在列表choices中,則可以對最後一個答案執行比較並繼續。

+0

我可能也會重命名變量('choice' - >'choices') – SwiftsNamesake

+0

好主意,應該加上! – Antimony

0

您正在比較變量列表。

也許使用:

variable = choice[0] 
if variable == 'easy': 
    # rest of program 

此外,確保 '易', '中等' 和 '硬' 沒有大寫字母。

您可以使用:

new_choice.lower() # converts to lowercase 

追加到列表

相關問題