我一直在研究一个问题几个小时,但却找不到它为什么不起作用。我的代码基本完成,除了一个我无法摆脱的错误。问题来自于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”,就像它正在清空堆栈或其他东西一样。有谁知道为什么会这样?
答案 0 :(得分:0)
由于你的函数被称为playGame(),这里有一个错误:
elif uinput not in ('n','r', 'e'):
print("Invalid command.")
playGame(wordList)
按'x'时再次调用playGame。这会在当前playGame
循环的顶部堆叠另一个循环。尝试删除对playGame(wordList)
的调用,它应该可以修复您的错误。