지금 몇 시간 동안 문제를 해결해 왔으며 왜 작동하지 않는지 알 수 없습니다. 내 코드는 기본적으로 제거 할 수없는 하나의 오류를 제외하고 완료됩니다. 문제는 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를 호출 : 함수 이후
당신의이 기능은 playHand()입니까? playHand()를 반복적으로 호출하면 스택이 시작되어 각 루프 스택을 중단해야합니다. playHand, dealHand 또는 playGame에 대한 호출을 제거하면 if/elif/else가 정상적으로 작동하는 것을 볼 수 있습니다. – ooknosi
이 함수는 playGame()이고 im은 dealHand() 및 playHand()를 호출합니다. 나는 그것이 작동하도록 그 기능들을 호출 할 필요가있다. 다른 방법은 없다. 문제에 대한 사양도 해당 함수를 호출하도록 요청합니다. – dmnte
playHand, dealHand 및 playGame에 대한 호출을 제거하면 if/else 코드가 자체적으로 작동하는지 확인하는 디버깅 프로세스의 일부입니다. 함수 호출 중 하나가 버그를 일으키는 지 확인하기 위해 하나씩 호출을 다시 추가 할 수 있습니다. – ooknosi