2017-05-05 146 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?")) 

,你应该是好去。