2017-02-13 2 views
0

지금 몇 시간 동안 문제를 해결해 왔으며 왜 작동하지 않는지 알 수 없습니다. 내 코드는 기본적으로 제거 할 수없는 하나의 오류를 제외하고 완료됩니다. 문제는 edx의 Python MIT 과정 소개입니다. 그것은 문제 4 문제 6을 설정했습니다.과거 입력을 잘못 기억하는 파이썬 입력

uinput = -1 
hand = -1 
while True: 
    uinput = input('Enter n to deal a new hand, r to replay the last hand, or e to end game:') 
    if uinput == 'n': 
     hand = dealHand(HAND_SIZE) 
     playHand(hand, wordList, HAND_SIZE) 
    elif uinput == 'r' and hand == -1: 
     print('You have not played a hand yet. Please play a new hand first!') 
    elif uinput == 'r' and hand != -1: 
     playHand(hand, wordList, HAND_SIZE) 
    elif uinput not in ('n', 'r', 'e'): 
     print("Invalid command.") 
     playGame(wordList) 
    else: 
     break 
    print('') 

이 코드는 다른 함수를 호출하지만 중요한 것은 아니라고 생각합니다. 내가 가지고있는 문제는 'e'를 누르면 휴식을 취하고 루프에서 빠져 나가야한다는 것입니다. 'e'를 처음 누르면이 작업을 수행하지만 그 전에 다른 키를 누르는 경우 실제로 증가하기 때문에 'e'를 여러 번 눌러야합니다. 예를 들어, 'e'를 누르기 전에 'x'를 두 번 누르면 'e'가 누락 될 때까지 총 세 번 눌러야합니다. 예 : xxeee 휴식. 디버깅을 시도하는 동안 스택이나 뭔가를 비우는 것과 같이 uinput 값을 'x'로 다시 변경한다는 것을 알았습니다. 왜 이런 일이 일어나는 지 아는 사람이 있습니까?

elif uinput not in ('n','r', 'e'): 
    print("Invalid command.") 
    playGame(wordList) 

당신은 'x'를 누를 때 당신은 다시에 PlayGame를 호출 : 함수 이후

+4

당신의이 기능은 playHand()입니까? playHand()를 반복적으로 호출하면 스택이 시작되어 각 루프 스택을 중단해야합니다. playHand, dealHand 또는 playGame에 대한 호출을 제거하면 if/elif/else가 정상적으로 작동하는 것을 볼 수 있습니다. – ooknosi

+0

이 함수는 playGame()이고 im은 dealHand() 및 playHand()를 호출합니다. 나는 그것이 작동하도록 그 기능들을 호출 할 필요가있다. 다른 방법은 없다. 문제에 대한 사양도 해당 함수를 호출하도록 요청합니다. – dmnte

+0

playHand, dealHand 및 playGame에 대한 호출을 제거하면 if/else 코드가 자체적으로 작동하는지 확인하는 디버깅 프로세스의 일부입니다. 함수 호출 중 하나가 버그를 일으키는 지 확인하기 위해 하나씩 호출을 다시 추가 할 수 있습니다. – ooknosi

답변

0

가 PlayGame을()라고하며, 여기에 버그가 있습니다. 이렇게하면 현재 playGame 루프 상단에 다른 루프가 스택됩니다. playGame(wordList)으로 전화를 제거하면 버그가 수정됩니다.

+0

예 thats right는 'n'과 'r'이외의 값을 누르고 문제 요구 사항을 충족시키기에 충분한 문제를 제거합니다. 하지만 'n'을 누른 다음 'e'를 눌러 빠져 나오려고 할 때 여전히 발생합니다. 피할 수 있습니까? – dmnte

+0

dealHand() 또는 playHand()에 playGame()에 대한 다른 호출이 있는지 확인하십시오. – ooknosi

+1

오른쪽 playHand()에 playGame()이 또 호출되었습니다. 나는 여전히 Python에 대해 매우 익숙하므로이 문제에 대해 알지 못했다. 도와 줘서 고마워. – dmnte

관련 문제