2013-11-01 75 views
2

我是一名Python初學者。我的程序是設置一個數字(我現在不使用random.randint),我試圖猜測它。因此,這裏是代碼:Python while語句錯誤

def game(): 
    print "I am thinking of a number between 1 and 10!" 
    global x 
    x = 7 
    y = raw_input("Guess!") 
    while x > y: 
     y = raw_input("Too low. Guess again!") 
    while x < y: 
     y = raw_input("Too high. Guess again!") 
    if x == y: 
     return "You got it! The number was" + x + " !" 

但是當我運行此,使得x < y中的程序狀態,無論我把什麼號碼 請,有人可以幫我嗎?謝謝。

+1

在Python 3,你不能再比較一個int和STR >>>打印(1 < '2') 回溯(最近通話最後一個): 文件 「」,1號線,在 TypeError:無法定型的類型:int() dstromberg

+0

謝謝,但我使用的是python 2而不是3.認爲str和int之間是一樣的東西,不管版本是什麼。 –

回答

9

您需要y轉換爲整數比較它x前:

y = int(raw_input("Guess!")) 

否則,你在比較不同類型的變量,結果並不總是直觀的(如x總是比少y)。您可以在您要求用戶輸入y的其他時間應用相同的方法。

+0

至少將它們轉換爲相同類型。由於用戶可能是一個聰明的笨蛋,並把1和10之間的無理數字:) – JonathanV

4

您可能希望這樣:

def game(): 
    print "I am thinking of a number between 1 and 10!" 
    global x 
    x = 7 
    while True: 
     y = int(raw_input("Guess! ")) # Casting the string input to int 
     if x > y: 
      y = raw_input("Too low. Guess again!") 
     elif x < y: 
      y = raw_input("Too high. Guess again!") 
     elif x == y: 
      print "You got it! The number was " + str(x) + " !" 
      break # To exit while loop 

game() 
1

Y具有成爲像X的整數。一個簡單的方法來做到這一點是:

y=int(raw_input("etc.")) 

在Python中,你不能比較兩個不同變量類型!希望這可以幫助!