进入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循环,即使它是假的的主要内容,如果未能解决你的问题,请参考以下文章