2017-10-21 120 views
0

J'ai le code ci-dessous en python et je ne sais pas pourquoi mais cela ne fonctionne pas comme prévu.Si la déclaration ne correspond pas à la condition ne fonctionne pas comme prévu

La valeur de la variable isactive est qual à "True" et provient d'un dictionnaire json. Cependant, quand j'écris ci-dessous if déclaration, le programme est en train d'imprimer "Hola". S'il vous plaît voir ci-dessous le code:

response = requests.request("GET", url, headers=headers, params=querystring) 
variable = response.text 
variable = json.loads(variable) 

isactive = lista1[listanumber]['IsActive'] 

print isactive (ourput for this is giving me "True") 

     if isactive != "True": 
      print "hola" 

Cependant, au-dessus instruction if est l'impression « Hola » et je ne comprends pas pourquoi puisque la variable isActive est égal à « vrai ».

Savez-vous quel peut être le problème?

Merci

+0

Quelle est la longueur de la chaîne de isActive? Y a-t-il, peut-être, des espaces blancs inclus? – mpez0

+0

que 'print repr (isactive)' s'imprime? – MaximTitarenko

+0

Uhm, il est étrange .. quand j'essaie d'obtenir la longueur de isactive, j'ai eu erreur ci-dessous: Fichier "hoy.py", ligne 291, en impression len (isactive) TypeError: objet de type 'bool' n'a pas de len() –

Répondre

0
isactive == True and isactive != 'True' 

Test contre:

if isactive != True: 
    print 'hola' 
+0

Il semble fonctionner comme tu m'as suggéré. Merci! –

+0

Bienvenido, José, porfa marca mi respuesta como solución. – rollinger

1

Un vrai JSON est converti en python véritable. booléen, pas de chaîne. Dans votre comparaison, vous pouvez taper simplement if not isActive: