while循环不会从嵌套的if语句中断,直到action重复两次

时间:2018-04-24 21:08:57

标签: python while-loop python-2.4

我仍在学习编程方面的问题并遇到了一个我在搜索答案后似乎无法解决的问题

我有一个while循环,它检查字典是否为空,或者用户是否输入了特定字符(转义字符)。

如果用户在第一个提示符下输入转义字符,但是如果他们先输入其他内容然后尝试它,则该程序似乎无法正常工作。

有人可以帮忙吗?

hand = {'p':1, 'y':1, 't':1, 'h':1, 'o':1, 'n':1}

def play_hand(hand):
    print hand
    word = raw_input('Enter word, or a "." to indicate that you are finished: ')
    while any(hand) is True or word not in '.':
        if word == '.':
            break
        elif (word == 'toy' or word == 'python') and (word != '.'):
            print '"'+ word +'"', 'earned', 'points.'
            play_hand(hand)
        else:
            print 'Invalid word, Please try again.'
            return word, play_hand(hand)
    else:
        print 'Ending'
        return

1 个答案:

答案 0 :(得分:0)

正如所建议的那样,我重新构造了代码并从内部IF ELSE语句中删除了递归。它成功了! 谢谢您的帮助。

以上是以相同方式完成的上述示例。您现在可以输入有效单词,也可以使用转义字符退出。

hand = {'p':1, 'y':1, 't':1, 'h':1, 'o':1, 'n':1}

def play_hand(hand):
    while any(hand) is True:
        print hand
        word = raw_input('Enter word, or a "." to indicate that you are finished: ')
        if word == '.':
            print 'Goodbye!'
            break
        else:
            if not (word == 'toy'):
                print 'Invalid word, Please try again.'
            else:
                print '"'+ word +'"', 'earned', 'points.'
                hand = {'p':1, 'h':1, 'n':1}