2014-04-01 196 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"