2013-07-16 55 views
1

我在Python語句中遇到了麻煩。我在杜蘭講完整個「遊戲」,原諒拼寫,這意味着幽默的態度。抱歉。原始輸入if語句Python

下面是代碼:

import time 

def menu(): 
    print ("dogz r a supar hahrd tin 2 matsr it tak yrs 2 mastr ut u nw git 2 exprince it. pik a tin 2 du:\n") 
    menu = raw_input("1.)Ply Da Dogi gam\n2.)Halp\n") 

    if menu == 1: 
     game() 

    if menu == 2: 
     helpGame() 

    if menu < 2: 
     print ("dat not 1 ur 2 sry") 
     time.sleep(1) 
     menu() 

def game(): 
    print ("nuw u ply mi gme u lke it") 

def helpGame(): 
    print ("dis da halp u liek it") 
menu() 

這並不爲我工作,我從未有過直接的函數調用的if語句,我不得不實施「賽格方式」,它調用內部工作功能。

這是否適合您?它可能是我的Python安裝嗎?謝謝!

+4

*這對我不起作用* - 您需要比這更詳細。值得指出的是'raw_input'返回一個字符串 - 並且你可能需要'int(..)'和那個...'如果菜單<2'也會執行'if menu == 1' ...想想看如果條件應該是相互排斥的,則使用'elif'語句...除此之外 - 不知道你在做什麼之後... –

+1

作爲一個附註,從'menu'遞歸調用'menu'這樣的方法通常是不好的理念。最好把它寫成一個循環,在有效的答案中你可以「打破」或「返回」,而不是一個在無效答案上調用自己的函數。 – abarnert

回答

1

raw_input()返回一個字符串,您使用的是你的if語句一些,改變這一行:

menu = raw_input("1.)Ply Da Dogi gam\n2.)Halp\n") 

這樣:

menu = int(raw_input("1.)Ply Da Dogi gam\n2.)Halp\n")) 

你將要在處理錯誤條件看接下來雖然。

+0

謝謝!我教自己蟒蛇,並不知道這一點。這樣的生活品味! (注意,我只是做了if語句,如果菜單==「1」...它工作得很好。) 乾杯隊友! –

+0

你正在通過改變從int到字符串的比較來做相反的事情,但這不適用於'if menu <2',這就是爲什麼我使用int()方法:) –

+0

@JasonSperske:其實,'「1」<「2」'和'1 <2'一樣,所以這不成問題。但這並不意味着沒有問題:只要你有9個條目,'「10」<「9」'也是真的,你可能不希望這樣......顯然你的方法更好,這只是解釋爲什麼它很明顯的問題。 :) – abarnert

2

隨着您添加更多選項,if語句變得不實用。改爲使用這種基於字典的結構。

def menu(): 
    print ("dogz r a supar hahrd tin 2 matsr it tak yrs 2 mastr ut u nw git 2 " 
      "exprince it. pik a tin 2 du:\n") 
    prompt = "1.)Ply Da Dogi gam\n2.)Halp\n" 
    {'1': game, '2': helpGame}.get(raw_input(prompt), menu)() 
+0

我認爲將函數表詞典放入變量而不是調用文字上的方法會更清楚(至少對於新手來說),並且可能還會將'raw_input'的結果保留在變量中。 – abarnert