[英]Breaking while loop correctly under two conditions
我正在创建一个 python 脚本,提示用户猜测密码是什么,他们有 6 次尝试这样做。 我注意到,当我在用户正确猜测数字时运行程序时,while 循环中的最后一个 else 语句重复了两次,我不明白为什么。 我希望当用户正确猜出数字并打印语句以及尝试次数超过 6 并且用户没有正确猜出数字时,while 循环中断
def guessing_game(secret_number: int, user_guess: int):
num_tries: int = 0
user_name: str = input("Please enter your name: ")
print(f"Hello {user_name}, i am thinking of a number between 1 and 20")
secret_number: int = randint(1, 20)
user_guess: int = int(input("Guess what it is: "))
while num_tries != 6:
if user_guess > secret_number:
user_guess = int(input("Your guess is too high. Try again: "))
elif user_guess < secret_number:
user_guess = int(input("Your guess is too low. Try again: "))
else:
print(f"Congrats {user_name}, {secret_number} was the number i was thinking of")
num_tries += 1
if user_guess != secret_number and num_tries == 6:
print(f"The number I was thinking of was {secret_number}")
要在 Python 中留下一个循环,可以使用break
指令。 以下是如何在您的代码中使用它:
def guessing_game(secret_number: int, user_guess: int):
num_tries: int = 0
user_name: str = input("Please enter your name: ")
print(f"Hello {user_name}, i am thinking of a number between 1 and 20")
secret_number: int = randint(1, 20)
user_guess: int = int(input("Guess what it is: "))
while num_tries != 6:
if user_guess > secret_number:
user_guess = int(input("Your guess is too high. Try again: "))
elif user_guess < secret_number:
user_guess = int(input("Your guess is too low. Try again: "))
else:
print(f"Congrats {user_name}, {secret_number} was the number i was thinking of")
break
num_tries += 1
if user_guess != secret_number and num_tries == 6:
print(f"The number I was thinking of was {secret_number}")
但是,您应该删除在 function 中定义的参数user_guess
和secret_number
。 要么将它们用作 function 的参数,要么将它们定义到 function 中。
我对它进行了一些重组。 如果您正确定义条件,则无需休息。 在这里,我们等到玩家猜到或计数太高。 完全如你所愿。 它在两个条件之一下结束。
import random
num_tries = 0
guessed = False
user_name: str = input("Please enter your name: ")
print(f"Hello {user_name}, i am thinking of a number between 1 and 20")
secret_number: int = random.randint(1, 20)
user_guess: int = int(input("Guess what it is: "))
while num_tries < 6 and not guessed:
if user_guess > secret_number:
user_guess = int(input("Your guess is too high. Try again: "))
elif user_guess < secret_number:
user_guess = int(input("Your guess is too low. Try again: "))
else:
guessed = True
print(f"Congrats {user_name}, {secret_number} was the number i was thinking of")
num_tries += 1
if not guessed:
print(f"The number I was thinking of was {secret_number}")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.