Programmation python code if

Résolu/Fermé
lecorse Messages postés 126 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 - Modifié le 26 mars 2019 à 18:30
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 - 27 mars 2019 à 19:07
Bonjour à tous,

liste1=["I have","you have","he-she has","we have","you have","they have"]
print(liste1) #pour test

b = liste1
print (b)   # pour test 

#  jusque là OK    b = liste1



a = input("conjugues le verbe avoir au présent en anglais : ")

print(a)  # test a = b donc = liste1



#  C'est ici que ça marche pas , résultat toujours faux !!!! je ne trouve pas le problème

if (a) == (b):
    print("exact") 
else
    print("faux : réponse exacte ", b )

Merci pour votre aide.
A voir également:

2 réponses

[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 089
Modifié le 27 mars 2019 à 19:24
Salut lecorse,

Il manque un
:
à la fin de
else
en ligne 21, dans le code que tu as posté sur le forum, sinon ton code a une erreur de syntaxe et ne risque pas de s'exécuter du tout.

Sur le reste de ta question :

1.

Je pense que tu dois utiliser Python3.

Dans Python3,
input()
va retourner un objet
String
.

Comme tu compares un objet
String
à un objet
List
, Python te confirme qu'une chaîne n'est pas une liste et que les deux objets ne remplissent pas la condition d'égalité et ton
if
donne toujours faux, même si quelque chose correspondant au contenu et à la syntaxe de la liste est exactement saisi.

2.

Ton code fonctionne par contre avec Python2.

En effet, le comportement d'
input()
avec Python3 a changé par rapport à la version 2 de Python, où la fonction
input()
du langage procédait à une évaluation de ce qui était saisi et retournait un type dynamique en fonction de la saisie (la saisie d'une liste interprétable par Python 2, donnait une variable de type liste, la saisie d'un entier donnait une variable de type int, etc.).

Ce comportement n'existe plus pour Python3.

3.

En Python3, pour évaluer une
String
en une liste (ou autre chose), tu peux utiliser le module
ast
et la méthode
literal_eval
...

https://docs.python.org/3/library/ast.html#ast.literal_eval

import ast

a = input("conjugue le verbe avoir au présent en anglais : ")
a = ast.literal_eval(a)

Dal
1
yg_be Messages postés 23193 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 septembre 2024 Ambassadeur 1 534
26 mars 2019 à 19:03
bonjour, as-tu essayé sans les parenthèses en ligne 19?
0
lecorse Messages postés 126 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 18
27 mars 2019 à 08:21
Bonjour
oui merci mais ça marche pas
mais j'ai trouve : j'ai remplacé ma liste 1 par (I have,-you have,he-she has,we have,you have,they have) et ça marche

merci pour ta réponse
0