繁体   English   中英

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

[英]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_guesssecret_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM