我有一个允许用户输入名称的代码,并且根据输入的名称,脚本将执行不同的操作。为简单起见,我将下面的代码片段放在了错误的位置。
print system
if "KH" or "Oberon" or "Bearcat" in system:
print"Type 2"
elif "Sentry" in system:
print"Type 1"
用户输入Sentry但脚本仍然在“Type 2”语句中。打印系统命令正在输出Sentry,所以我不太明白为什么它在这里没做正确的事。
答案 0 :(得分:2)
您需要将代码更改为:
if "KH" in system or "Oberon" in system or "Bearcat" in system:
目前您的代码执行此操作
if ("KH") or ("Oberon") or ("Bearcat" in system):
始终评估为true
,因为"KH"
和"Oberon"
都是非空字符串。
答案 1 :(得分:1)
您的or
表达式没有按您认为的那样做。 Python将其读作:
if "KH" or ("Oberon" or ("Bearcat" in system)):
相当于:
if "KH":
因为"KH"
是真实的并且or
运算符短路。一个修复是这样的:
if any(substr in system for substr in ('KH', 'Oberon', 'Bearcat')):