如何解决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.
当我将运算符更改为“and”时,代码工作正常。
if fuel != 'Gas' and fuel != 'Diesel' and fuel != 'Gasoline':
print('Invalid fuel!')
有人能解释一下为什么会这样吗?
解决方法
这不是 or
运算符的位置,在这种情况下您应该使用 and
。
通过在那里使用 or
运算符,您是说只要 fuel
不是 Diesel
、Gas
或 Gasoline
之一,它应该输出Invalid fuel
。由于fuel
是Gas
,所以它不能是Diesel
或Gasoline
,因此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':
或者更好的是,使用 sets 来提高查找速度和简洁性,将其分配给一个变量以避免重复:
allowed_fuels = set(['Gas','Diesel','Gasoline'])
if fuel not in allowed_fuels:
print(f'Invalid fuel: {fuel}')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。