我已经研究一个问题好几个小时了,不知道为什么它不起作用。我的代码基本上完成了,除了一个我无法摆脱的错误。问题来自麻省理工学院关于edx的Python入门课程。这是习题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”,就像清空堆栈或其他东西一样。有人知道为什么会这样吗?你知道吗
因为函数名为playGame(),所以这里有一个bug:
当您按“x”时,您又在调用playGame。这将在当前的
playGame
循环上堆叠另一个循环。尝试删除对playGame(wordList)
的调用,它会修复您的bug。你知道吗相关问题 更多 >
编程相关推荐