Ανάλυσε και αξιολόγησε απλά μαθηματικά προβλήματα με λέξεις, επιστρέφοντας την απάντηση ως ακέραιο.
Τα προβλήματα χωρίς πράξεις αξιολογούνται απλώς στον αριθμό που δίνεται.
What is 5?
Αξιολογείται σε 5.
Πρόσθεσε δύο αριθμούς.
What is 5 plus 13?
Αξιολογείται σε 18.
Αντιμετώπισε μεγάλους και αρνητικούς αριθμούς.
Τώρα, εκτέλεσε τις άλλες τρεις πράξεις.
What is 7 minus 5?
2
What is 6 multiplied by 4?
24
What is 25 divided by 5?
5
Αντιμετώπισε ένα σύνολο πράξεων, με τη σειρά.
Επειδή αυτά είναι προβλήματα με λέξεις, αξιολόγησε την παράσταση από αριστερά προς τα δεξιά, αγνοώντας τη συνήθη σειρά των πράξεων.
What is 5 plus 13 plus 6?
24
What is 3 plus 2 multiplied by 3?
15 (δηλαδή όχι 9)
Ο αναλυτής πρέπει να απορρίπτει:
Μερικές φορές είναι απαραίτητο να πετάξεις μια εξαίρεση. Όταν το κάνεις αυτό, θα πρέπει πάντα να συμπεριλαμβάνεις ένα κατατοπιστικό μήνυμα σφάλματος που να δείχνει ποια είναι η πηγή του σφάλματος. Αυτό κάνει τον κώδικά σου πιο ευανάγνωστο και βοηθάει σημαντικά στο debugging. Σε περιπτώσεις που ξέρεις ότι η πηγή του σφάλματος θα είναι κάποιου συγκεκριμένου τύπου, μπορείς να επιλέξεις να πετάξεις έναν από τους ενσωματωμένους τύπους σφαλμάτων, αλλά και πάλι θα πρέπει να συμπεριλάβεις ένα κατατοπιστικό μήνυμα.
Αυτή η άσκηση απαιτεί να χρησιμοποιήσεις την εντολή raise για να "πετάξεις" ένα ValueError αν η ερώτηση που περνάς στην answer() είναι κακοσχηματισμένη/άκυρη ή περιέχει μια άγνωστη πράξη. Τα tests θα περάσουν μόνο αν κάνεις raise την exception και μαζί της συμπεριλάβεις ένα μήνυμα.
Προσοχή: Το μήνυμα που χρειάζεται είναι διαφορετικό για κάθε περίπτωση, ακόμα κι αν πετάγεται ο ίδιος τύπος σφάλματος.
Έλεγξε τα tests προσεκτικά.
Για να πετάξεις ένα ValueError με μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο exception:
# if the question contains an unknown operation.
raise ValueError("unknown operation")
# if the question is malformed or invalid.
raise ValueError("syntax error")
Για να χειριστείς ένα σφάλμα που πετάχτηκε μέσα σε ένα συγκεκριμένο μπλοκ κώδικα, μπορείς να χρησιμοποιήσεις ένα try-except. Τα μπλοκ try-except "τυλίγουν" τον κώδικα που θα μπορούσε δυνητικά να προκαλέσει σφάλμα, αντιστοιχίζοντας όλες τις εξαιρέσεις σε ένα σφάλμα, σε πολλαπλά σφάλματα ή σε άλλα κομμάτια κώδικα που θα αντιμετωπίσουν το πρόβλημα:
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")
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.