2013-07-19 212 views
1

我在推測是簡單的if語句時遇到了問題。我試圖通過使用的虛擬機文件格式的類型。即使我放置了VMDK或VHD,它仍會返回,VMDK是無效類型,或者VHD是無效類型。Python如果返回語句

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語句!=而不是將參數放在括號中。我在網上搜索了一段時間,並嘗試了我發現的並且仍然遇到同樣的問題。

FYI我正在運行的Python 2.6.5

回答

9

嘗試:

if vmtype not in ("VHD", "VMDK"): 

您當前的代碼分析如下:

if (vmtype is not ("VHD")) or ("VMDK"): 

這顯然是錯誤的。由於("VMDK")是一個真值,整個陳述總是如此。因此,if語句將始終執行。


注意,即使你試圖

if vmtype is not "VHD": 

這是行不通的,因爲is測試的身份,而不是價值。你可以使用:

if vmtype != "VHD": 
+0

很好的解釋:) – Maroun

+1

其他錯誤:'is'測試對象的身份,而不是價值相等。 「不在」解決方案恰好也解決了這個問題,但我不確定你是否注意到了。 – user2357112

+0

@ user2357112好點,我會將其編輯到我的答案中。 – Doorknob