Projet calculatrice avec gestion des erreurs
Bonjour,
Je viens de terminer le projet de la calculatrice avec gestion des erreurs. J'ai fait 3 versions qui fonctionnent bien. Jusque-là pas de problème.
#V1
a = input("Entrez un premier nombre : ")
b = input("Entrez un deuxième nombre : ")
while not (a.isdigit() and b.isdigit()):
print("Veuillez entrer deux nombres valides.")
a = input("Entrez un premier nombre : ")
b = input("Entrez un deuxième nombre : ")
print(f"Le résultat de l'addition de {a} avec {b} est égal = {int(a) + int(b)}")
#V2
a = b = ""
while not (a.isdigit() and b.isdigit()):
print("Veuillez entrer deux nombres valides")#mais affiche le message alors que l'on a rien rentré
a = input("Entrez un premier nombre : ")
b = input("Entrez un deuxième nombre : ")
print(f"Le résultat de l'addition de {a} avec {b} est égal = {int(a) + int(b)}")
#V3 Meilleure version
a = b = ""
while not (a.isdigit() and b.isdigit()):
a = input("Entrez un premier nombre : ")
b = input("Entrez un deuxième nombre : ")
if not (a.isdigit() and b.isdigit()):
print("Veuillez entrer deux nombres valides.")
print(f"Le résultat de l'addition de {a} avec {b} est égal = {int(a) + int(b)}")
Mais j'aime bien tester plusieurs choses. Et dans les cas qui vont suivre ci-dessous, le script ne fonctionne pas si l'utilisateur rentre un chiffre et une lettre. S'il rentre deux lettres pas de problèmes...
# Version 1 qui ne fonctionne pas si on entre un chiffre et une lettre
a = b = ""
while not a.isdigit() and not b.isdigit():
a = input("Entrez un premier nombre : ")
b = input("Entrez un deuxième nombre : ")
if not a.isdigit() and not b.isdigit():
print("Veuillez entrer deux nombres valides")
print(f"Le résultat de l'addition de {a} avec {b} est égal = {int(a) + int(b)}")
# Version 2 ne fonctionne pas si on entre un chiffre et une lettre
a = b = ""
while a.isdigit() == False and b.isdigit() == False:
a = input("Entrez un premier nombre : ")
b = input("Entrez un deuxième nombre : ")
if a.isdigit() == False and b.isdigit() == False:
print("Veuillez entrer deux nombres valides.")
print(f"Le résultat de l'addition de {a} avec {b} est égal = {int(a) + int(b)}")
Dans la version 1 qui ne fonctionne pas j'ai utilisé deux fois not donc pas de parenthèse.
Dans la version 2 qui ne fonctionne pas j'ai utilisé isdigit == False.
Vous pouvez m'éclairer svp ?
Merci d'avance
Hello Gabriel,
premièrement lorsque tu as un and dans tes conditions, tu dois mettre des parenthèses sur chacun de tes conditions. Ensuite, ici en logique mathématiques
NON (condition 1 ET condition 2) est plutôt équivalent à (NON condition 1) OR (NON condition 2). C'est la Loi de De Morgan
Donc si tu veux couper en 2, il vaut mieux faire:
a = b = ""
while (not a.isdigit()) or (not b.isdigit()):
a = input("Entrez un premier nombre : ")
b = input("Entrez un deuxième nombre : ")
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte