2014-10-05 46 views
1

我最近正在自學python,我正在做一個遊戲的第一次嘗試。這個想法是用戶必須猜測答案是什麼(整數)我的代碼還沒有完成,但前半部分將不起作用。代碼不能正常工作(Python 3.x.x)

我的代碼:;!「答案是較高的」

highest = 10 
answer = 7 
guess = int(input("What is your guess?")) 
def guessingGame(): 
    print("try again please") 
    guess = int(input("what is your guess?")) 

while (int(guess) != answer): 

    if (int(guess) < answer): 
     print ("Answer is higher!") 
     guessingGame(); 

    elif (int(guess) > answer): 
     print ("Answer is lower!") 
     guessingGame(); 

不管我是否輸入一個不那麼答案(也就是7)或更高版本,它總是會說值我究竟做錯了什麼?謝謝!

編輯:我也意識到我的代碼可能是令人難以置信的錯誤/寫得不好,並會喜歡任何批評/改進。

+0

在'guessingGame'函數頂部添加'global guess'行。 – 2014-10-05 21:55:41

+0

@ 0O0O0O0縮進對我來說很好。這是一個猜測數字的程序,所以他們肯定會在每次用戶輸入錯誤的輸入時通過調用'guessingGame'來更新變量'guess'。 – 2014-10-05 22:03:02

回答

0

您在guessingGame中編輯的guess變量與您在while循環中比較的變量不同。

global guess添加到guessingGame函數的頂部應解決它。

爲了將來的參考,如果某些行爲不起作用,在各個階段打印變量以查看事情是什麼常常是有用的。 (對於較大的程序來說,調試器更有用,但對於這樣的東西,打印很好)。

編輯:相對於批評/評論改進:

  • 功能應該被命名後,他們做了什麼。 guessingGame應該被命名爲updateUserGuess。我不想依賴全局變量,我想讓該函數返回猜測值,並將該值賦給函數外部的猜測變量。

  • elif條件是不需要的。如果猜測是不是< answer和不等於一定是更高

  • 你叫guessingGame猜測是否是高或低,因此它可以被移出的if/else語句

  • 你鑄造guessint每次使用它(在guessingGame功能,然後再在每個條件)。沒有什麼不對,但沒有必要。如果它存儲爲int,請將它作爲一個存儲。