Python 中的逻辑运算符'OR'无法按预期工作?



我不明白为什么;或";在这种情况下,操作员没有按预期工作。

这是代码:

fuel = input()
liters = float(input())
if fuel != 'Gas' or fuel != 'Diesel' or fuel != 'Gasoline':
print('Invalid fuel!')
else:
if liters >= 25:
if fuel == 'Gas' or fuel == 'Diesel' or fuel == 'Gasoline':
print(f'You have enough {fuel.lower()}.')
elif liters < 25:
if fuel == 'Gas' or fuel == 'Diesel' or fuel == 'Gasoline':
print(f'Fill your tank with {fuel.lower()}!')

输入:

Gas
25

输出:Invalid fuel

输出应为You have enough gas.

当我把运算符改为"0"时;以及";,代码运行良好。

if fuel != 'Gas' and fuel != 'Diesel' and fuel != 'Gasoline':
print('Invalid fuel!')

有人能解释一下为什么会发生这种事吗?

这不是or运算符的位置,在这种情况下应该使用and

在那里使用or运算符,就是说只要fuel不是DieselGasGasoline之一,它就应该输出Invalid fuel。由于fuelGas,因此它不能是DieselGasoline,因此if语句将产生True并打印Invalid fuel

对于fuel = 'Gas',这是

if fuel != 'Gas' or fuel != 'Diesel' or fuel != 'Gasoline':

评估为:

if False or True or True:

与相同

if True:

事实上,您需要的是and,正如您所发现的:

if fuel != 'Gas' and fuel != 'Diesel' and fuel != 'Gasoline':

或者,更好的是,使用集合来提高查找速度和简洁性,将其分配给变量以避免重复:

allowed_fuels = set(['Gas', 'Diesel', 'Gasoline'])
if fuel not in allowed_fuels:
print(f'Invalid fuel: {fuel}')

相关内容

  • 没有找到相关文章

最新更新