2017-05-05 148 views
0

我試圖編碼一個隨機數猜測遊戲,主要是因爲我想知道如果/我的卡西歐CFX-9850G可以像goto那樣工作。 我沒有得到消毒輸入和生成錯誤消息(例如,設置max太低,輸入字母而不是數字,猜測超過最大值等)。我最初的問題是,雖然我的代碼沒有產生錯誤,但我似乎無法猜測數字,即使我將max設置爲3並嘗試0,1,2,3,4,5。這似乎是我創建了一個循環,我無法弄清楚在哪裏。 這裏是我的代碼:爲什麼我似乎陷入循環?

import random 

print "GUESS MY NUMBER" 

max=int(raw_input("Guess number between 1 and what?")) 

randomnumber = random.randint(1,max) 


def make_guess(guess): 
    if guess == randomnumber: 
    print "Congratulations, you guessed my number!" 
    else: 
    guess=raw_input("Guess again?") 
    make_guess(guess) 

guess=int(raw_input("What is your best guess?")) 
make_guess(guess) 


print "My number was" ,randomnumber 

,它產生:

GUESS MY NUMBER Guess number between 1 and what? 3 What is your best guess? 0 Guess again? 1 Guess again? 2 Guess again? 3 Guess again? 4

現在我想代碼循環,直到一個正確的猜測,但我期望的正確的猜測將觸發if代碼。

+0

將您的函數定義移到代碼的頂部或定義一個主函數。不要混淆頂級代碼和功能。 –

+0

@VaibhavAggarwal我不明白。你的意思是把我的'def make_guess'移到上面'print「GUESS MY NUMBER」?我嘗試過,並沒有解決我的問題。 – toonarmycaptain

回答

3

您忘記將輸入轉換爲您的else子句中的整數。如果你猜測第一次嘗試,它會起作用,因爲你在else之外進行轉換。

更改第一行的其他人:

guess=raw_input("Guess again?") 

guess=int(raw_input("Guess again?")) 

,你應該是好去。