2017-04-27 190 views
-2

第一個IF語句被忽略,我不知道什麼可能導致這種情況。我檢查了壓痕,一切似乎fine.As你可以在它打印numberRolled代碼中看到的,但是當我運行它,它甫一忽略第一個IF.`IF語句跳過 - Python 2.7

import random 
numberRolled = random.randint(1,6) 
print numberRolled 
while True: 
    userGuess = raw_input("Guess a number\n") 
    if userGuess == numberRolled: 
     print "You got it right!" 
     quitYN = raw_input("Would you like to play again?\n").lower() 
     if quitYN == "yes": 
      continue 
     else: 
      break 
    elif userGuess != numberRolled: 
     print "Wrong!"` 
+5

'numberRolled'是一個整數,'userGuess'是一個字符串。 'raw_input(「猜數字\ n」)'=>'int(raw_input(「猜數字\ n」))''。你的elif也是多餘的!如果不相等,它只會達到這一點。你可以使用其他的。 –

+1

如果語句被「忽略」,表示條件不成立。一行一行的運行代碼,你會明白爲什麼 –

+0

感謝Pual魯尼,工作。 =) –

回答

0

raw_input()返回一個字符串,但random.randint()返回int。這意味着在做userGuess == numberRolled時,您將字符串與int進行比較(返回False)。

爲了解決這個問題簡單地轉換的變量之一,以正確的類型:

userGuess == str(numberRolled) 

看看this answer有關變量類型以及如何將它們在Python比較的更多信息。