2013-06-29 2 views
2

У меня есть сценарий python, анализирующий входящую полезную нагрузку при установке переменной с именем «доверие» и «id», тогда она будет оценивать, равен ли id sam @ sam и что доверие больше или равно 70. Теперь id равен sam @ sam, но уверенности нет, он все равно срабатывает! Что не так с моим кодом !!?Если ложный запрос

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

Проблема в том, что «доверие» представляет собой строку, и вы сравниваете ее с числом. Результат сравнения строки с номером согласован, но не обязательно тот, который вы хотите.

Fix:

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

Хорошо, давайте внимательнее посмотрим на код. Теперь p является строкой. Поэтому, когда вы его разделяете, результаты (id и уверенность) являются строками. Это твоя проблема. Поскольку доверие по-прежнему является строкой при сравнении значений, вы сравниваете строку и int. Сделайте это:

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

Это преобразует строку в int сначала, поэтому доверие будет int. Затем сравнение будет работать правильно.

Смежные вопросы