在Python 3中制作更高或更低游戏的问题。多个if语句

在Python 3中制作更高或更低游戏的问题。多个if语句,python,python-3.x,Python,Python 3.x,我对多个if语句有问题。我知道我的代码出了什么问题,只是找不到解决方案。因此,当我运行程序时,“较高”部分起作用,但如果我猜“较低”部分不起作用。解释器从读取if语句转到elif语句。那不是我想要的。如何让它在进入elif语句之前先检查两个if语句。我试过嵌套式if,但似乎无法使其工作。 提前谢谢 # Higher or lower card game import random x = random.randint(1, 14) y = random.randint(1, 14) pr

我对多个if语句有问题。我知道我的代码出了什么问题,只是找不到解决方案。因此,当我运行程序时,“较高”部分起作用,但如果我猜“较低”部分不起作用。解释器从读取if语句转到elif语句。那不是我想要的。如何让它在进入elif语句之前先检查两个if语句。我试过嵌套式if,但似乎无法使其工作。 提前谢谢

# Higher or lower card game

import random

x = random.randint(1, 14)

y = random.randint(1, 14)

print('The number is ', x, '.')

while True:

    print('higher or lower?')
    if input() in {'higher', 'h'} and y >= x:
        print('Good guess the number was ', y)
        x = y
        y = random.randint(1, 14)
    elif y < x:
        print('Bad guess , the number was ', y)
        break
    if input() in {'lower', 'l'} and y < x:
        print('Good guess, the number was ', y)
        x = y
        y = random.randint(1, 14)
    elif y >= x:
        print('Bad guess, the number was ', y)
        break
    continue
#更高或更低的纸牌游戏
随机输入
x=random.randint(1,14)
y=random.randint(1,14)
打印('数字是',x'。)
尽管如此:
打印(‘较高还是较低?’)
如果{'higher','h'}中的input()和y>=x:
打印('猜得好,数字是',y)
x=y
y=random.randint(1,14)
如果y=x:
打印('猜错了,数字是',y)
打破
持续

您可能需要以下内容:

while True:

   print('higher or lower?')
   ans_in = input()

   if ans_in in {'higher', 'h'}:

       if (y >= x):
          print('Good guess the number was ', y)
          x = y
          y = random.randint(1, 14)

       elif (y < x):
          print('Bad guess , the number was ', y)
          break

   elif ans_in in {'lower', 'l'}:

       if (y < x):
          print('Good guess, the number was ', y)
          x = y
          y = random.randint(1, 14)

       elif (y >= x):
          print('Bad guess, the number was ', y)
          break

   continue
为True时:
打印(‘较高还是较低?’)
ans_in=输入()
如果{'higher','h'}中的ans_:
如果(y>=x):
打印('猜得好,数字是',y)
x=y
y=random.randint(1,14)
elif(y=x):
打印('猜错了,数字是',y)
打破
持续

注意,由于break语句,一个“坏猜测”将结束游戏。如果您想在得到“错误猜测”后继续,您可以简单地删除break语句。

我想这不起作用,因为您在每个循环中都会得到两次输入

您应该尝试以下方法:

import random

x = random.randint(1, 14)

y = random.randint(1, 14)

print('The number is ', x, '.')

while True:

    print('higher or lower?')
    guess = input()
    if guess in {'higher', 'h'} and y >= x:
        print('Good guess the number was ', y)
        x = y
        y = random.randint(1, 14)
    elif guess in {'higher', 'h'} and y < x:
        print('Bad guess , the number was ', y)
        break
    elif guess in {'lower', 'l'} and y < x:
        print('Good guess, the number was ', y)
        x = y
        y = random.randint(1, 14)
    elif guess in {'lower', 'l'} and y >= x:
        print('Bad guess, the number was ', y)
        break
    else:
        print('Invalid command')
        break
    continue
随机导入
x=random.randint(1,14)
y=random.randint(1,14)
打印('数字是',x'。)
尽管如此:
打印(‘较高还是较低?’)
猜测=输入()
如果{'higher','h'}和y>=x中的猜测:
打印('猜得好,数字是',y)
x=y
y=random.randint(1,14)
elif在{'higher','h'}和y=x中的猜测:
打印('猜错了,数字是',y)
打破
其他:
打印('无效命令')
打破
持续

因此,基本上每次迭代,您只需在输入中输入一个命令,并在此基础上构建您的逻辑。

您想在每次迭代中只输入一次吗?我对该平台不熟悉,似乎我把缩进搞糟了。我修复了它的ColdSpeed,我希望它在打印x值后提示我输入一个数字。如果可能的话,我希望if语句能够独立工作。因此,如果我选择回答“lower”,它应该读取第二段代码,跳过第一段。但是elif的声明引起了一个问题。这就是高-低的工作原理,当你错了,你就输了。你从来没有玩过这个游戏,tbh:)在英国,我们曾经有一个电视节目,这个游戏可能是主要的游戏,叫做Bruce's Play your Cards RightAh这就是我要找的。谢谢你的回答。