2010-07-16 61 views
0

好吧,所以答案可能很明顯,但我不知道正確的方式讓程序根據用戶輸入的內容做出不同的響應。語法問題 - if/else和raw_input()

octopusList = {"first": ["red", "white"], 
      "second": ["green", "blue", "red"], 
      "third": ["green", "blue", "red"]} 
squidList = ["first", "second", "third"] 

squid = random.choice(squidList) 
octopus = random.choice(octopusList[squid]) 
名單和魷魚和章魚隨機生成一個短語
resp = raw_input("Please Type Something") 
while resp !=1: 
    if resp == octopusList: 
     print squid + " " +octopus 
     break 
    elif resp == "Something": 
     print "Elephants are pachyderms" 
     break 
    else: 
     print "That's another text to think about." 
     break 

print "One More Comment" 
據說這是如果用戶輸入的任何octopusList打印魷魚+「」 +章魚。或者,如果用戶輸入「Something」,則應該返回「Elephants is pachyderms」這個短語。如果用戶輸入任何東西,它應該返回「這是另一個需要思考的文本」。最後,它應該打印「更多評論」。實際上,無論用戶輸入什麼內容,它都會跳轉到其他地方。

它通向Else,所以我沒有得到關於if和elif的東西......感謝你能照亮的任何光。

+0

請編輯您的問題,並格式化您的所有代碼。很難弄清楚它應該做什麼,特別是因爲它是Python。 – GreenMatt 2010-07-16 19:23:25

+0

即使縮進後,我仍然不太確定該程序應該做什麼... – 2010-07-16 19:24:32

回答

1

比較字符串的字典沒有做什麼有用的(它永遠是假的,IIRC) - 你也許想「if resp in octopusList」?我不知道爲什麼第二個條件從不打,爲什麼你輸入「something」而不是「Something」?

+0

這兩個權利,謝謝 – Tehto 2010-07-16 19:53:15

0

您正在比較一個字符串(resp)和一個列表。你想是這樣的:

if resp == octopus: # not octopusList! 
    # do something 
else: 
    # ... 
3

編輯:Ned Batchelder格式化代碼後,我重新閱讀這個問題,看看我的猜測,你想做什麼並不完全正確......儘管如果你嘗試着仍然不是100%清楚的循環或不循環。如果你只想經歷一次,那麼就不需要while循環,只需刪除它。至於對稱爲octopusList的dictionary中的值的輸入測試,您可以使用in test,但該測試僅針對字典的鍵進行測試。如果你正在尋找字典條目中的值,你將不得不製作一個真正的列表(例如octopusList = ['red', 'white', 'blue', 'green']並做一個測試(例如if resp in octopusList:)或在解析字典時會稍微複雜一點)

原來的答覆: 看來你想創建一個循環來獲取用戶的輸入,並響應於該輸入打印字符串。如果是那樣的話,我看到了一些東西需要修正:

  • 你不想要break語句,因爲它們導致循環退出。
  • 正如其他人所說的,將輸入與octopusList進行比較將不起作用,只是com削減它到你隨機生成的章魚價值。
  • 如果您打算使用1作爲退出輸入,則需要針對字符串表單('1')而不是整數形式(1)來測試輸入。
  • 如果我的猜測對你正在做的是正確的,那麼raw_input需要在循環中。

這不是標記爲家庭作業,所以我已經發布了代碼來做我認爲你想要的代碼。如果你希望章魚價值對用戶來說是未知的,只要刪除print octopus這一行,但我把它放進去,這樣你就知道要輸入什麼值進行測試了。

import random 
octopusList = {"first": ["red", "white"], 
      "second": ["green", "blue", "red"], 
      "third": ["green", "blue", "red"]} 
squidList = ["first", "second", "third"] 

squid = random.choice(squidList) 
octopus = random.choice(octopusList[squid]) 
print octopus # So we know what value to use - necessary for testing at least 
resp = '' 
while resp != '1': 
    resp = raw_input("Please Type Something: ") 
    if resp == octopus: 
     print squid + " " +octopus 
    elif resp == "Something": 
     print "Elephants are pachyderms" 
    else: 
     print "That's another text to think about." 
    print "One More Comment" 

如果我的猜測&建議是沒譜,請提供一個更好的解釋,你試圖做什麼。