Python脚本将进入不正确的if语句

时间:2015-12-14 17:01:34

标签: python if-statement input

我有一个允许用户输入名称的代码,并且根据输入的名称,脚本将执行不同的操作。为简单起见,我将下面的代码片段放在了错误的位置。

print system
if "KH" or "Oberon" or "Bearcat" in system:
    print"Type 2"
elif "Sentry" in system:
    print"Type 1"

用户输入Sentry但脚本仍然在“Type 2”语句中。打印系统命令正在输出Sentry,所以我不太明白为什么它在这里没做正确的事。

2 个答案:

答案 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')):