Python if语句返回

Python if语句返回,python,if-statement,Python,If Statement,我很难理解一个简单的if语句。我正在尝试传递要使用的VM文件格式的类型。即使我放入VMDK或VHD,它仍然返回VMDK是无效类型或VHD是无效类型 import sys vmtype = sys.argv[3] vmtype = str(vmtype).strip().upper() ## File format check if vmtype is not ("VHD") or ("VMDK"): print vmtype + " is an invalid type" sys

我很难理解一个简单的if语句。我正在尝试传递要使用的VM文件格式的类型。即使我放入VMDK或VHD,它仍然返回VMDK是无效类型或VHD是无效类型

import sys
vmtype = sys.argv[3]
vmtype = str(vmtype).strip().upper()
## File format check
if vmtype is not ("VHD") or ("VMDK"):
    print vmtype + " is an invalid type"
    sys.exit()
我已经用
尝试了if语句=并且不将参数放在括号中。我在网上搜索了一段时间,并尝试了我所发现的,但仍然遇到同样的问题

仅供参考,我正在运行Python 2.6.5,请尝试:

if vmtype not in ("VHD", "VMDK"):
您当前的代码解析为:

if (vmtype is not ("VHD")) or ("VMDK"):
这显然是错误的。因为
(“VMDK”)
是一个真实的值,所以整个语句总是真实的。因此,
if
语句将始终执行


请注意,即使您尝试了

if vmtype is not "VHD":
它不起作用,因为
测试身份,而不是值。您可以使用:

if vmtype != "VHD":
尝试:

您当前的代码解析为:

if (vmtype is not ("VHD")) or ("VMDK"):
这显然是错误的。因为
(“VMDK”)
是一个真实的值,所以整个语句总是真实的。因此,
if
语句将始终执行


请注意,即使您尝试了

if vmtype is not "VHD":
它不起作用,因为
测试身份,而不是值。您可以使用:

if vmtype != "VHD":

其他错误:
是测试对象身份而不是值相等。
不在
解决方案碰巧也解决了这个问题,但我不确定你是否注意到了。门把手,不在的效果很好。谢谢你的洞察力。我还在学习Python,所以我很容易犯新手错误。其他错误:
是测试对象标识,而不是值相等。
不在
解决方案碰巧也解决了这个问题,但我不确定你是否注意到了。门把手,不在的效果很好。谢谢你的洞察力。我还在学习Python,所以我很容易犯新手错误。