进入while循环,即使它是假的

Posted

技术标签:

【中文标题】进入while循环,即使它是假的【英文标题】:while loop is entered even though it is false 【发布时间】:2021-11-30 12:12:34 【问题描述】:
import random
print("Welcome to the Number Guessing Game!")
number=random.randint(1,100)
print("I'm thinking of a number between 1 and 100.")
print(number)

def guess(lives):
    guess_number=int(input("Make a guess: "))    
    while guess_number!=number and lives>0: 
        if guess_number>number:
            print("Too High")
          
        elif guess_number<number:
            print("Too Low")
           
        else:
            print(f"You got it! The answer was number")
         
        if lives==0:
            print("You are out of moves.YOu loose")
        else:
            print(f"You have lives-1 attempts remaining to guess the number")
            print("Guess Again:")
            guess(lives-1)

def set_lives():
    level=input("Choose a difficulty.Type 'easy' or 'hard': ")
    if level=="easy":
        lives=10
    else:
        lives=5
    return lives   

guess(set_lives())

在生命数 ==0 之后,while 语句为假,它必须退出循环。 但在这种情况下,即使它为假,也会执行循环。

【问题讨论】:

您不会在循环中减少 lives 的值。您递归调用具有较低值的guess,但在 this 调用中,lives 的值仍然相同。您不应该使用 while 循环 递归。任选其一。 【参考方案1】:

我可以看到我们可以通过简化解决方案来解决这个问题,我们只需要更改猜测函数,这里是代码,我会解释它:

def guess(lives):
while lives > 0:
    guess_number = int(input("Make a guess: "))
    if guess_number == number:
        print(f"You got it! The answer was number")
        return

    if guess_number > number:
        print("Too High")

    elif guess_number < number:
        print("Too Low")
    lives -= 1
    print(f"You have lives attempts remaining to guess the number")

print("You are out of moves. You loose")

现在这段代码说的是:

1- 我们需要至少循环 number of alives 次

2- 如果用户猜测 guess_number 是 == 的数字,则打印“你知道了!答案是...”然后 return 语句将退出函数,所以我们只有一个成功故事就是这样/

3- 其他 2 个 if 条件仍然会循环,因为用户没有得到所需的猜测。

4- 如果循环已经结束并且我们仍然在函数中,这意味着用户在没有正确答案的情况下完成了他的 lives,所以它会打印“你没有动作。你松了”

【讨论】:

以上是关于进入while循环,即使它是假的的主要内容,如果未能解决你的问题,请参考以下文章

循环(while,do...while)

do-while循环结构

do-while循环结构

流程控制06-do..while循环

为什么我的while循环执行,即使条件是不是真的?

Python基础