2016-08-20 97 views
0

我猜測了終端的數字python遊戲,但遊戲無法識別玩家何時獲勝,我不明白爲什麼。這裏是我的代碼:Python問題猜數字遊戲

from random import randint 

import sys 

def function(): 

    while (1 == 1): 

     a = raw_input('Want to Play?') 

     if (a == 'y'): 

      r = randint(1, 100) 

      print('Guess the Number:') 
      print('The number is between 1 and 100') 

      b = raw_input() 

      if (b == r): 

       print(r, 'You Won') 

      elif (b != r): 

       print(r, 'You Lose')  

     elif (a == 'n'): 

      sys.exit() 

     else: 

      print('You Did Not Answered the Question')   

function() 
+0

FWIW,'而真:'更清晰( &更有效率)比'while(1 == 1):'。你應該擺脫所有那些圍繞'if'條件的外部括號,它們在Python中不需要,它們只是增加了混亂。因此,而不是'if(a =='y'):'只要做'如果a =='y':'。等等 –

+0

請閱讀我的[評論](https://github.com/CrazyPython/code-review-diffs/commit/eec947bcfe8455ea8a103d054a3f259233e06b5c)你的代碼。說實話,這太可怕了。但我們都開始非常恐怖,不是嗎?下一次,使用'print()'語句和'type()'來調試你的程序 –

+0

(在你的其他問題上)。回答時不要刪除你的問題。 (如果你自己刪除它)它a)消除我辛苦贏得的聲譽b)意味着其他具有相同問題的人無法找到你的問題。 –

回答

0

這是正確的代碼版本,我寫了你的問題返回INT比較的字符串。

import random 
while (1 == 1): 
    a = raw_input('Want to Play?') 
    if (a == 'y'): 
    r = random.randint(1, 100) 
    print('Guess the Number:') 
    print('The number is between 1 and 100') 
    b = int(raw_input()) 
    if (b == r): 
     print(r, 'You Won') 
    elif (b != r): 
     print(r, 'You Lose')  
    elif (a == 'n'): 
    break 
else: 
    print('You Did Not Answered the Question') 

希望這會有所幫助。

+0

它的工作,謝謝。 – Andrea

2

FujiApple's answer所述: 默認情況下,輸入的類型是一個字符串。

所以:

>>>b = raw_input("Enter a number : ") 
Enter a number : 5 
>>>print b 
'5' 
>>>type(b) 
<type 'str'> 

您需要將字符串轉換爲整數,爲了它evalute等於randint號:

if int(b) == r: