Python if语句返回
我很难理解一个简单的if语句。我正在尝试传递要使用的VM文件格式的类型。即使我放入VMDK或VHD,它仍然返回VMDK是无效类型或VHD是无效类型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
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,所以我很容易犯新手错误。