Erreur de calcul.

boujame123 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Furansujean Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tous le monde,

J’espère que mon message vous trouve en bonne santé.

j'ai fais un petit programme au niveau de Python et quand je le fait tourner ça marche pour tout les chiffres à part le a=16 et le b=11 qui me donne un 0, pourtant ça doit me donner 20.

voici le programme:

a = int(input())
b = int(input())
r = 1 or 3 or 5 or 7 or 9 or 12
n = 2 or 4 or 6 or 8 or 10 or 11
if  a == b:
    print(10*12)
elif a == 13 and b%2 == 0 :
    print(10 * 2)
elif a == 14 and b%2 == 1 :
    print(10 * 2)
elif a == 15  and b == r :
    print(10*2)
elif a == 16 and b == n :
    print(10 * 2)
else:
    print(0)
A voir également:

3 réponses

bendrop Messages postés 12727 Date d'inscription   Statut Contributeur Dernière intervention   8 378
 
Bonjour,

Merci d’utiliser les balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Afin d’avoir de la clarté dans votre demande.

Cdlt.
0
boujame123 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Bendrop pour ta reponse, mais le probléme est que je dois utilise seulement "if" et "else" et "elif"
0
bendrop Messages postés 12727 Date d'inscription   Statut Contributeur Dernière intervention   8 378 > boujame123 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Vous n’avez pas compris, pour plus de clarté dans votre message initial, on vous demande de le modifier et d’utiliser les balises de code Python et d’y insérer votre code afin que le topic soit plus lisible pour les intervenants qui vont vous aider.

Ce qui donnera =>

 a = int(input()) 
b = int(input()) 
r = 1 or 3 or 5 or 7 or 9 or 12 
n = 2 or 4 or 6 or 8 or 10 or 11 
if a == b: 
print(10*12) 
elif a == 13 and b%2 == 0 : 
print(10 * 2) 
elif a == 14 and b%2 == 1 : 
print(10 * 2) 
elif a == 15 and b == r : 
print(10*2) 
elif a == 16 and b == n : 
print(10 * 2) 
else: 
print(0) 


Cdlt.
0
boujame123 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour vos effort mais, le problème réside toujours;

je vous remercie pour voter collaboration qui m'aide vraiment à m’améliorer
0
Furansujean Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   5
 
Bonjour boujame123,

as-tu essayé de regarder ce que vaut
n
après l'instruction
n = 2 or 4 or 6 or 8 or 10 or 11
?
Voici ce que ça donne :
>>> n = 2 or 4 or 6 or 8 or 10 or 11
>>> n
2

Donc
n
ne vaudra jamais la valeur 11 que tu renseignes en entrée.

Pourquoi ?
Eh bien parce que quand tu lui demandes
2 or 4
, python évalue les nombres comme des booléens.
Est-ce que 2 est vrai ? oui : seul 0 est converti en
False
, tous les autres nombres sont converti en
True
.
Du coup comme python constate que la première expression (le chiffre 2) du
or
est vraie, il s'arrête là et renvoie la valeur vraie en question, donc 2.

Une solution
Une façon plus propre pour ton programme serait d'utiliser des listes.
liste_n=[2,4,6,8,10,11]

Et plus loin tu peux faire un test d'appartenance à la liste :
b in liste_n


Bon courage.
0