2016-08-20 3 views
0

터미널 용 숫자 파이썬 게임을 추측했지만 게임이 플레이어가 이기면 그 이유를 이해하지 못합니다.파이썬 문제 번호 게임 추측

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' 조건에서 바깥 쪽 괄호를 제거해야합니다. 파이썬에서는 필요하지 않습니다. 따라서 if (a == 'y') 대신 : a == 'y':'이면'do'을 사용하십시오. 기타 –

+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'> 

당신은 그것이 randint 번호와 동일한 evalute하기 위해, 정수로 문자열을 변환해야합니다

if int(b) == r: