当前位置:  开发笔记 > 编程语言 > 正文

为什么这个if语句不执行?

如何解决《为什么这个if语句不执行?》经验,为你挑选了1个好方法。

我正在尝试猜词游戏.一切都有效,除了最后一个if语句部分.如果用户正确猜出名称,则不会打印"赢了!".但是,如果没有,则执行else语句,它会打印"Lost!".这是为什么?我多次检查过,但我找不到任何错误.

注意:我使用Python 3.6

    import random

def get_random_word():
    words = ["Ronnie", "Deskty", "Lorrie"]
    word = words[random.randint(0, len(words)-1)]
    return word

def show_word(word):
    for character in word:
        print(character, " ", end="")
    print("")

def get_guess():
    print("Enter a letter: ")
    return input()

def process_letter(letter, secret_word, blanked_word):
    result = False

    for i in range(0, len(secret_word)):
        if secret_word[i] == letter:
            result = True
            blanked_word[i] = letter

    return result

def print_strikes(number_of_strikes):
    for i in range(0, number_of_strikes):
        print("X ", end="")
    print("")

def play_word_game():
    strikes = 0
    max_strikes = 3
    playing = True

    word = get_random_word()
    blanked_word = list("_" * len(word))

    while playing:
        show_word(blanked_word)
        letter = get_guess()
        found = process_letter(letter, word, blanked_word)

        if not found:
            strikes += 1
            print_strikes(strikes)

        if strikes >= max_strikes:
            playing = False

        if not "_" in blanked_word:
            play?ng = False


    if strikes >= max_strikes:
        print("Lost")
    else:
        print("Won")




print("Game started")
play_word_game()
print("Game over")

trentcl.. 8

看看这段代码:

    if not "_" in blanked_word:
        play?ng = False

你有一个?(U + 0131 LATIN SMALL LETTER DOTLESS I)代替i.Python会很乐意play?ng为您创建变量(与其他必须声明变量的语言不同).因此playing永远不会False在获胜案例中更新,并且函数永远不会退出.

正如Martijn在评论中指出的那样,通过发现错误拼写的变量和其他可能的错误,一个短信可能会有所帮助.考虑在编辑器或IDE中使用一个.两种流行的棉短绒是pylint的和Flake8.



1> trentcl..:

看看这段代码:

    if not "_" in blanked_word:
        play?ng = False

你有一个?(U + 0131 LATIN SMALL LETTER DOTLESS I)代替i.Python会很乐意play?ng为您创建变量(与其他必须声明变量的语言不同).因此playing永远不会False在获胜案例中更新,并且函数永远不会退出.

正如Martijn在评论中指出的那样,通过发现错误拼写的变量和其他可能的错误,一个短信可能会有所帮助.考虑在编辑器或IDE中使用一个.两种流行的棉短绒是pylint的和Flake8.


好眼力!Python 3的unicode名称支持确实使得需要在编辑器中使用linter.
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有