在两种情况下正确中断 while 循环

时间:2021-03-14 20:19:30

标签: python while-loop

我正在创建一个 python 脚本,提示用户猜测密码是什么,他们有 6 次尝试这样做。我注意到当我运行程序时,当用户正确猜出数字时,while 循环中的最后一个 else 语句重复了两次,我不明白为什么。我希望 while 循环在用户正确猜出数字并打印语句以及尝试次数超过 6 并且用户没有正确猜出数字时中断

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}")

This is when I saw the repeated statements

2 个答案:

答案 0 :(得分:0)

要在 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}")

但是,您应该在函数中定义参数 user_guesssecret_number 时删除它。要么将它们用作函数的参数,要么将它们定义到函数中。

答案 1 :(得分:0)

我重新整理了一下。如果您定义了正确的条件,则无需休息。在这里,我们等到玩家猜到或计数太高。完全如你所愿。它在两个条件之一下结束。

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}")
相关问题