2013-06-29 96 views
2

我有一個Python腳本解析一個傳入的有效負載在設置一個名爲「confidence」和「id」的變量,那麼它將評估該ID是否等於sam @ sam,並且該置信度大於或等於70. 現在id等於山姆@山姆,但信心不是,它仍然會觸發!我的代碼有什麼問題!!?如果語句錯誤觸發

p = eg.event.payload[2] 
p = p.split(',') 
id = p[0].strip() 
confidence = p[1].strip() 
print confidence 
url = p[2].strip() 
if confidence >= 70 and id == "[email protected]": 
    eg.TriggerEvent("FaceRec", "Unlock Door") 
else: 
    eg.plugins.GoogleVoice.SendSMS(u'407#####', url) 
+7

向我們展示你的'p'! :) – mishik

回答

12

問題是「信心」是一個字符串,你將它與一個數字進行比較。將字符串與數字進行比較的結果是一致的,但不一定是您想要的。

修復:

confidence = int(p[1].strip()) 
4

好吧,讓我們看看你的代碼仔細看看。現在,p是一個字符串。所以當你分裂它時,結果(id和confidence)是字符串。那是你的問題。由於置信度在比較值時仍然是字符串,因此您正在比較字符串和整數。這樣做:

confidence = int(p[1].strip()) 

這將字符串轉換爲int首先,因此,信心將是一個int。比較將正常工作。