当前位置: 首页 > 知识库问答 >
问题:

虽然循环输入为false

毕宇
2023-03-14
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语句为false,必须退出循环。但在这种情况下,即使循环为false,也会执行循环。

共有1个答案

上官自明
2023-03-14

我可以看出,我们可以通过简化解决方案来解决这个问题,我们只需要更改guess函数,下面是代码,我将对此进行解释:

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-我们需要至少循环{生命数量}次

2-如果用户猜测的{guess\u number}是==数字,那么打印“你知道了!答案是…”然后return语句将退出函数,所以我们只有一个成功的故事,这就是它/

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

4-如果循环已经完成,而我们仍然在函数中,这意味着用户在没有正确答案的情况下完成了他的{lives},因此它将打印“你没有动作了。你松开了”

 类似资料:
  • 我对java非常陌生,需要帮助。基本上,我有一个程序,要求用户输入一个数字。当输入该数字时,它会将该数字之前的所有奇数相加。我正在尝试(但失败)做的是,做另一个循环,当提示用户请求一个数字来求奇数之和时,我想让它只在输入奇数时继续,否则它将不断重复询问用户,直到他们输入奇数为止。我知道使用循环可以解决这个问题,但我不知道如何让它工作。 这是我的密码: 提前谢谢!

  • 我试图创建一个函数,使用不同的字段作为权重将数据分成十分之一,这样我就可以有相等的暴露桶。在这样做的时候,我创建了一个简单的例子,我试图进入3个桶。我确实在第一部分遇到了困难,那就是让这个while循环工作起来: 我的成绩是0,0 谢谢!

  • 如果输入了非int值,如何创建一个会中断的while循环? 例如,如果用户输入字符串、double或int以外的其他基本类型,循环将退出。

  • hasNext()的定义是“如果此扫描仪的输入中有另一个标记,则返回true。此方法可能会在等待输入扫描时阻塞。扫描仪不会前进超过任何输入。” 当我把 standardInput.hasNext() 放在 for 循环中时,程序会向无穷大运行。但是如果我把它放在 while-loop 中,它不会运行到无穷大。这两个程序之间的区别在哪里,为什么其中一个有效而另一个无效? for循环: while-l

  • 我正在学习Python,并有一些困难理解虽然循环。我试图计算负数的总数,但无法正确计算。 这是我计算正数之和的代码(工作正常)

  • 我正在尝试编写一个函数,该函数将取一个整数,将其除以数字,将其相加,如果总和为 我并不是真的在寻找一个最佳的解决方案,我只是想知道为什么这不起作用。