问题描述
我已经在研究一个问题了几个小时,无法找出为什么它不起作用。 我的代码基本上已经完成,除了一个我无法摆脱的错误。 问题来自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 break。 在尝试调试时,我看到它甚至将uinput值改回'x',就像它正在清空堆栈或其他东西一样。 有人知道为什么会这样吗?
1楼
由于您的函数称为playGame(),因此这里存在一个错误:
elif uinput not in ('n','r', 'e'):
print("Invalid command.")
playGame(wordList)
当您按“ x”时,您将再次调用playGame。
这会在您当前的playGame
循环之上堆叠另一个循环。
尝试删除对playGame(wordList)
的调用,它应该可以解决您的错误。