使更高或更低的游戏工作 Python 3 的问题.多个 if 语句



我对多个if语句有问题。我明白我的代码出了什么问题,我只是找不到解决方案。因此,当我运行程序时,"较高"部分有效,但如果我想"较低"则不起作用。解释器从阅读if语句转到elif语句。这不是我想要的。如何让它在进入 elif 语句之前先检查两个 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

你可能想要一些类似的东西:

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

请注意,由于中断语句,"错误猜测"将结束游戏。如果你想在得到"错误猜测"后继续,你可以简单地删除中断语句。

我想这是行不通的,因为每个周期都会获得两次输入。

你应该尝试这个:

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

所以基本上每次迭代你只需要在输入中获取一个命令,并在此基础上构建你的逻辑。

最新更新