2017-05-16 3 views
1
을 종료

내 문제는 파이썬 스크립트 내가 수있는 권리를 얻을 때 종료하지만,하지 않는 인쇄 것입니다 : You win!번호 게임 : 윌하지 인쇄 : 이길 수없는 당신에게 승리를하지만, 스크립트

import random 

number = random.randint(1,100) # This part works fine 

guess = input('Guess a number between 1 and 100: ') #Asks question 
guess = float(guess) 

tries = 10 

while guess != number and tries > 0 : 

    if guess < number: # This part works fine 
     print('Too low') 
     tries = tries - 1 
     print('You have %s tries left' % (tries)) 

    if guess > number: 
     print('Too high')  # This part is also good 
     tries = tries - 1 
     print('You have %s tries left' % (tries)) 

    if tries == 0: 
     print('You lose!') 
     print('The answer was ' + str(number)) 
     continue 

    if guess == number : 
     print('You win!') # Why doesn't this work? 
     #Python ends at this line if I get it right, but doesn't print: You win! 

    else : 
     guess = input('Try Again: ') 
     guess = float(guess) 

pass  # WHILE* 

저는 11 세에 불과하고 몇 달 전에 프로그래밍을 시작했습니다. 제발 도와주세요! 추측이 맞다면

+0

어쩌면 출력하지만 창을 닫아서 볼 시간이 없으십니까? – Julien

+0

그게 아니야 .. –

답변

2

코드는 첫 번째 조건을 실패 추측 루프가 다른 문 다음에 중단됩니다 완료 결코 추측에 대한 검사 if 상태로 반환

while guess != number and tries > 0 : 

합니다.

정답은 다음과 같이 항상이 쓸 수 입력 될 때까지 루프를지나 계속 할 수 없기 때문에 :

import random 

number = random.randint(1,100) # This part works fine 

guess = input('Guess a number between 1 and 100: ') #Asks question 

guess = float(guess) 

tries = 10 

while guess != number and tries > 0 : 

    if guess < number: # This part works fine 
     print('Too low') 
     tries = tries - 1 
     print('You have %s tries left' % (tries)) 

    if guess > number: 
     print('Too high')  # This part is also good 
     tries = tries - 1 
     print('You have %s tries left' % (tries)) 

    if tries == 0: 
     print('You lose!') 
     print('The answer was ' + str(number)) 
     continue 

    else : 
     guess = input('Try Again: ') 
     guess = float(guess) 

print('You win!') 

곰을 마음에 당신은 또한으로 승리하게됩니다이 버그가있다 사용자가 추측을 초과하면 인쇄됩니다. 나는 고치기가 쉽고 배우기에 자신을 해결하는 것이 좋을 것이라고 생각하면서 여기에 남겨두기로 결정했습니다. 그러나 당신이 나를 위해 그렇게하기를 원한다면 코멘트에 글을 남겨주세요.

게시물에 코드 주석을 사용하는 것도 좋습니다.

import random 

number = random.randint(1,100) # This part works fine 

guess = input('Guess a number between 1 and 100: ') #Asks question 

guess = float(guess) 

tries = 10 

while guess != number and tries > 0 : 

    if guess < number: # This part works fine 
     print('Too low') 
     tries = tries - 1 
     print('You have %s tries left' % (tries)) 

    if guess > number: 
     print('Too high')  # This part is also good 
     tries = tries - 1 
     print('You have %s tries left' % (tries)) 

    if tries == 0: 
     print('You lose!') 
     print('The answer was ' + str(number)) 
     continue 

    if guess == number : 
     print('You win!')  # Why doesn't this work? 
       # Python ends at this line if I get it right, but doesn't print: You win! 

    else : 
     guess = input('Try Again: ') 
     guess = float(guess) 

pass  # WHILE* 
+0

이것은 구문 오류가 아닙니다 (적어도 파이썬 2에서는 파이썬 3에서 나타 났습니까 ???) – Julien

1

코드에 비교를하고, 그것을 시도하고 한 번만 특정 질문을 (비교을) 요청하는 것이 최선입니다 다음과 같이이 경우에 나는 당신의 질문에 대한 코드를 제시한다. 여기에서는 질문을 한 번만 수행하기 위해 두 가지 질문 (올바른 추측 & 시도 중)을 재구성하는 방법을 보여 줬습니다.

import random 

number = random.randint(1, 100) 
guess = input('Guess a number between 1 and 100: ') # Asks question 
guess = float(guess) 

tries = 10 
while True: 
    tries -= 1 

    if guess < number: 
     print('Too low') 
     print('You have %s tries left' % (tries)) 

    elif guess > number: 
     print('Too high') 
     print('You have %s tries left' % (tries)) 

    else: 
     print('You win!') 
     break 

    if tries == 0: 
     print('You lose!') 
     print('The answer was ' + str(number)) 
     break 

    guess = input('Try Again: ') 
    guess = float(guess)