2014-04-01 140 views
1

由于某种原因,while循环从不中断,就好像userGuess永远不会等于compAnswer一样。我有它打印在一开始的答案,所以我们知道。在Pythonista上完成。Python猜测游戏

def guessing_game(): 
    compAnswer = random.randint(1,10) 
    print compAnswer 
    guesses = 1 
    print "Okay, I\'m thinking of a number between 1 and 10." 
    userGuess = raw_input("What number am I thinking of?: ") 
    while userGuess != compAnswer: 
     userGuess = raw_input("Nope! try again: ") 
     guesses += 1 
    playAgain = raw_input("You got it! My number was %s and it took you %d guesses. Play again?: " % (compAnswer, guesses)) 
    if playAgain == "yes": 
     guessing_game() 
    else: 
     print "Okay bye!" 
+0

这里使用了递归是没有意义的,而不是进入一个新的功能,只是其中'playAgain =“是使用'while'循环“' – cmd

+0

噢,这件事有我的一些功能同时也需要其他东西,但我知道如何完成这一点。 – teebles

回答

3

compAnswer是整数,userGuess是一个字符串;如果您希望它们是相等的,使用相同类型:

while userGuess != str(compAnswer): 
+0

谢谢,修复它。我忘了raw_input是字符串特定的。 – teebles

0

compAnswer是一个整数,而userGuess被的raw_input(),它在命令行接受字符串值,以便它们不相同的数据类型,所以将永远不会==所以它会保持循环。 试试这个六号线:

userGuess = int(raw_input("What number am I thinking of?: "))

,但您在接受输入的是数字式的始终,这可以打破,如果他们输入非数字字符,所以最好的是,你可以验证用户通过把该行的try块输入,并赶上ValueError异常:

try: userGuess = int(raw_input("What number am I thinking of?: ")) except ValueError: print "invalid input"