Erreur de calcul.

Fermé
boujame123 Messages postés 4 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 14 septembre 2020 - Modifié le 14 sept. 2020 à 13:15
Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 - 14 sept. 2020 à 16:53
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 12599 Date d'inscription jeudi 30 juin 2005 Statut Contributeur Dernière intervention 23 novembre 2024 8 296
14 sept. 2020 à 12:42
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 samedi 12 septembre 2020 Statut Membre Dernière intervention 14 septembre 2020
14 sept. 2020 à 12:48
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 12599 Date d'inscription jeudi 30 juin 2005 Statut Contributeur Dernière intervention 23 novembre 2024 8 296 > boujame123 Messages postés 4 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 14 septembre 2020
Modifié le 14 sept. 2020 à 12:54
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 samedi 12 septembre 2020 Statut Membre Dernière intervention 14 septembre 2020
14 sept. 2020 à 13:07
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 lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 5
14 sept. 2020 à 16:53
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