我怎样才能使Python while循环仅在只有一个条件为真的情况下继续?[复制]

How can I make a Python while loop continue only if exactly one condtition is true? [duplicate]

提问人:Knight Gamer650 提问时间:10/21/2023 最后编辑:philipxyKnight Gamer650 更新时间:10/21/2023 访问量:52

问:

如果我写 ,则仅当一个语句为真时,循环才应继续,但当两个条件为真时,就像我使用逻辑运算符一样。如果我写 ,那么当一个条件为真时,它就会运行。orandand

我希望它在 while 循环中只有一个条件为真时运行。

我该如何解决这个错误?

import random

def game():
    import random
    answer = random.randint(1, 100)
    print('Welcome to the Number Guessing Game!')
    print('I am thinking of a number between 1 and 100.')
    print(f'Pssst, the correct answer is {answer}.')
    diff = input('Choose a difficulty. Type e for easy h for hard:\n ')
    lives = 10
    if diff == 'h':
        lives = 5
    end = 0
    while end == 0 or lives != 0:
        print(f'You have {lives} attempts remaining to guess the number.')
        guess = int(input('Make a guess: '))
        if guess > answer:
            lives -= 1
            print("Too high.")
        if guess < answer:
            lives -= 1
            print('Too low.')
        if guess == answer:
            print(f'You got it! The answer was {answer}.')
            end = 1
python 调试 while 循环 逻辑运算符

评论

1赞 vnagy 10/21/2023
您的问题存在许多问题。最明显的两个是:1.很难理解你在问什么。2. 您插入的代码片段未格式化。这使得理解你的问题变得更加困难。(+1.它看起来很可疑,就像家庭作业,但事实可能并非如此)请记住,您基本上是在请人们帮忙解决您的问题。如果您没有费心正确格式化和措辞,没有人会费心去看它并回答。这也可以解释对你的问题投反对票的原因。
0赞 philipxy 10/21/2023
调试问题需要一个最小的可重现示例--剪切、粘贴和可运行的代码,包括初始化;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。对于包含您可以提供的最少代码的调试,即您显示的代码是好的,由您显示的代码扩展为“不正常”。 如何咨询帮助中心 当你得到一个你意想不到的结果时,找到执行中的第一个点,其中变量或子表达式的值不是你所期望的,并说出你所期望的和为什么, 通过文档证明是合理的。(调试基础。
1赞 philipxy 10/21/2023
请在发布前查看帖子的格式化版本。请参阅编辑帮助和高级帮助,重新阻止代码和引号的内联格式等。请使用标准拼写和标点符号。请避免在帖子中发表社交和元评论。你的写作不清楚。使用足够多的单词,句子和对部分示例的引用,以清晰而完整地表达您的意思。如何提出和回答家庭作业问题?
0赞 philipxy 10/22/2023
while end == 0 or lives != 0当 时停止。决定何时停止。然后循环播放。PS De Morgan 定律说是 .PS:要记录某事是否如此,请使用布尔值。end != 0 and lives == 0while not!(x one_of_AND_or_OR y)!x the_other_one !y

答:

-1赞 Irony-Bearheart 10/21/2023 #1

也许您想保持循环运行,当且仅当 中只有 1 且正好为 1 True 时。试试这个: 或 .
提示:对于一个对象,当且仅当 将为 False。否则将是.
[end == 0, lives != 0]while (end == 0 and lives == 0) or (end != 0 and lives != 0)bool(end) is bool(lives)intii == 0 bool(i)True