2014-10-05 1 views
1

최근에 파이썬을 가르치고 있습니다. 게임을 처음 시도합니다. 아이디어는 사용자가 대답을 추측해야합니다 (정수) 내 코드가 아직 완료되지 않았지만 전반은 작동하지 않습니다.코드가 작동하지 않습니다. (Python 3.x.x)

내 코드 :;! "대답은 더 높다"

highest = 10 
answer = 7 
guess = int(input("What is your guess?")) 
def guessingGame(): 
    print("try again please") 
    guess = int(input("what is your guess?")) 

while (int(guess) != answer): 

    if (int(guess) < answer): 
     print ("Answer is higher!") 
     guessingGame(); 

    elif (int(guess) > answer): 
     print ("Answer is lower!") 
     guessingGame(); 

상관없이 내가 (7되는) 이상, 그것은 항상 말할 것이다 대답 적은 다음 값을 입력 여부 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사!

편집 : 또한 내 코드가 매우 버그가 있거나 저조한 것으로 인식되어 비판/개선을 좋아할 것입니다.

+0

'guessingGame' 함수의 맨 위에'global guess' 행을 추가하십시오. –

+0

@ 0O0O0O0 들여 쓰기가 나에게 잘 보입니다. 숫자를 추측하는 프로그램이기 때문에 사용자가 잘못된 입력을 할 때마다'guessingGame'을 호출하여'guess' 변수를 반드시 업데이트하려고합니다. –

답변

0

guessingGame에서 편집하는 guess 변수는 while 루프에서 비교하는 변수와 다릅니다.

guessingGame 함수의 맨 위에 global guess을 추가하면 해결됩니다.

나중에 참조 할 수 있도록 무언가가 작동하지 않으면 다양한 단계에서 변수를 인쇄하여 어떤 것이 있는지 확인하는 것이 좋습니다. (더 큰 프로그램의 경우 디버거가 더 유용하지만 이와 같은 것들은 인쇄가 좋다).

편집 : 비판에 대한/개선 코멘트 :

  • 함수 이름을 지정해야합니다 후 그들이 무엇. guessingGame의 이름은 updateUserGuess과 같이 지정해야합니다. 전역 변수에 의존하기보다는 함수가 추측을 리턴하도록하고 함수 외부의 추측 변수에 값을 할당한다고 생각합니다.

  • elif 조건이 필요하지 않습니다. 추측이 동일 < answer하지하지 않으면 그것은해야 그것이 밖으로 이동 될 수 있도록 추측이 높거나 낮은 지 여부 guessingGame 전화

  • 높은 당신이 캐스팅

  • /else 문

    경우 guess ~ int을 사용할 때마다 (guessingGame 함수에서 각 조건에서 다시 수행). 그다지 틀린 것은 없지만 필요하지는 않습니다. int으로 저장되어있는 경우 하나로 사용하십시오.