python输入错误地记住过去的输入

时间:2017-02-13 13:11:57

标签: python

我一直在研究一个问题几个小时,但却找不到它为什么不起作用。我的代码基本完成,除了一个我无法摆脱的错误。问题来自于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”,就像它正在清空堆栈或其他东西一样。有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

由于你的函数被称为playGame(),这里有一个错误:

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

按'x'时再次调用playGame。这会在当前playGame循环的顶部堆叠另一个循环。尝试删除对playGame(wordList)的调用,它应该可以修复您的错误。