Analyse et évalue de simples problèmes de mathématiques formulés en mots, puis renvoie la réponse sous forme de nombre entier.
Les problèmes sans aucune opération s'évaluent simplement au nombre donné.
What is 5?
S'évalue à 5.
Additionne deux nombres.
What is 5 plus 13?
S'évalue à 18.
Gère les grands nombres et les nombres négatifs.
Maintenant, effectue les trois autres opérations.
What is 7 minus 5?
2
What is 6 multiplied by 4?
24
What is 25 divided by 5?
5
Gère une suite d'opérations, dans l'ordre.
Comme ces problèmes sont formulés en mots, évalue l'expression de gauche à droite, en ignorant l'ordre habituel des opérations.
What is 5 plus 13 plus 6?
24
What is 3 plus 2 multiplied by 3?
15 (c'est-à-dire pas 9)
L'analyseur syntaxique doit rejeter :
Il est parfois nécessaire de lever une exception. Dans ce cas, tu dois toujours inclure un message d'erreur explicite pour indiquer la source de l'erreur. Cela rend le code plus lisible et facilite grandement le débogage. Lorsque tu sais que la source de l'erreur sera d'un certain type, tu peux choisir de lever l'un des types d'erreur intégrés, mais tu dois quand même inclure un message explicite.
Cet exercice en particulier demande d'utiliser l'instruction raise pour « lever » une ValueError si la question passée à answer() est mal formée ou invalide, ou si elle contient une opération inconnue. Les tests ne passeront que si tu lèves l'exception avec raise et que tu y joins un message.
Remarque : le message attendu est différent pour chaque scénario, même si c'est le même type d'erreur qui est levé.
Vérifie les tests attentivement.
Pour lever une ValueError avec un message, écris le message comme argument du type exception :
# if the question contains an unknown operation.
raise ValueError("unknown operation")
# if the question is malformed or invalid.
raise ValueError("syntax error")
Pour gérer une erreur levée dans un bloc de code donné, on peut utiliser un try-except.
Les blocs try-except « englobent » le code susceptible de provoquer une erreur, en associant toutes les exceptions à une erreur, à plusieurs erreurs, ou à d'autres portions de code chargées de traiter le problème :
while len(equation) > 1:
try:
# The questionable/error-prone code goes here,in an indented block
# It can contain statements, loops, if-else blocks, or other executable code.
x_value, operation, y_value, *rest = equation
...
...
except:
# Code for what to do when an error gets thrown in the code above.
# This could be one error, or more complicated logging, error checking and messaging.
raise ValueError("syntax error")
Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.