2014-11-04 82 views
-6

我想在python中做一個猜謎遊戲。我的python代碼有什麼問題?

from random import randint 
print "\nI'm thinking of a number, you have to guess what it is.\n" 

num = randint(1,100) 
guess = 0 

while guess != num: 
    guess = raw_input("Guess the number \n") 
    if guess < num: 
     print "Guess higher next time \n" 
    elif guess > num: 
     print "Guess lower next time \n" 
    elif guess == num: 
     print "That's correct \n" 

問題是無論我輸入什麼號碼,我都會每次都得到「猜測較低的數字」。那麼,怎麼了?

+5

你必須將'guess'轉換爲'int':'guess = int(raw_input(「猜數n」))''。否則,您總是將一個字符串與一個int進行比較,並且該字符串將始終評估爲「大於」。 – dano 2014-11-04 20:05:35

+3

至於爲什麼字符串大於任何數字,請參閱http://stackoverflow.com/a/3270689/3557327 – user3557327 2014-11-04 20:06:40

+3

作爲一個方面說明,這是Python 3.x中更好的許多事情之一。如果你把它搞砸了,而不是以一種對你沒有意義的方式成爲代碼的作者/調試者,它會給你一個很好的例外,它會告訴你到底發生了什麼錯誤。 – abarnert 2014-11-04 20:21:51

回答

5

有了這個:

guess = raw_input("Guess the number \n") 

guess是一個字符串,而不是數字。

你可以這樣做:

guess = int(raw_input("Guess the number \n")) 

得到一個int。

+1

如果程序輸入錯誤會導致程序崩潰......但是+1完全相同,因爲這實際上超出了問題範圍 – 2014-11-04 20:10:23

+2

@JoranBeasley:它不會「崩潰」,它會引發一個「ValueError」對於int()用10來表示'無效的字面值':'你的程序很糟糕,你吸''。無論是讓用戶閱讀,還是將其封裝在'try' /'except'中,取決於您嘗試爲什麼類型的用例制定哪種程序。 – abarnert 2014-11-04 20:20:35

+2

(PS,我不是想說如果你給他們一個提示,你的用戶總是會嘗試輸入''你的程序很爛,你吸'',但我的用戶通常會這樣做:)) – abarnert 2014-11-04 20:22:30