Python:在WHILE循环中嵌套了IF:使用exit还是让WHILE“正常”完成?

问题描述

在学习Python基础知识的同时编写一个简单的猜谜游戏。 游戏规则:程序反复要求用户输入一个猜测,并将猜测的计数器( guess_count )加1。如果计数器达到某个限制( guess_limit ) ,游戏说(“您松动”)。如果猜对了:(“您赢了”)

我有两种实现方式,无法理解,从概念上讲哪种设计更正确。

变量1 :创建布尔变量 out_of_guesses 并将其初始设置为False

secret_word = "pythoniac"
guess = ""
guess_count = 0
guess_limit = 3
out_of_guesses = False

然后,程序将执行WHILE循环,如果猜出单词或达到猜想限制并且out_of_guesses == True,则WHILE循环结束。

while guess != secret_word and not out_of_guesses:
    if guess_count < guess_limit:
        guess = input("Enter a guess: ")
        guess_count += 1
    else:
        out_of_guesses = True

此后,在WHILE循环之外,程序将检查out_of_guesses == True,并进行打印(“您松动”)。否则,它会打印(“您赢了”)。

if out_of_guesses:
    print("You Lose!")
else:
    print("You Win!")

变量2 :没有其他布尔变量:

secret_word = "pythoniac"
guess = ""
guess_count = 0
guess_limit = 3

在WHILE循环中,如果达到猜测限制,则程序将打印(“您输了”)并使用exit()退出循环。如果猜到了密码,程序将在WHILE循环外打印(“您赢了”):

while guess != secret_word:
    if guess_count < guess_limit:
        guess = input("Enter a guess: ")
        guess_count += 1
    else:
        print("You loose!")
        exit()
print("You Win!")

问题:一般来说,哪种变体更好?要在WHILE循环中实现不同的结果,然后使用exit()/ break打破WHILE循环?还是引入其他布尔变量来存储不同的结果并在WHILE循环之外实现这些结果?

非常感谢!

解决方法

这是您要考虑的另一个想法:使其成为函数。

def do_game(word,max_tries=5):
    for _ in range(max_tries):
        answer = input("Enter a guess: ")
        if answer == word:
            return True
    return False

if do_game("pythoniac"):
    print("yes")
else:
    print("no")