Εργάζεσαι για μια κρατική υπηρεσία που έχει υποκλέψει μια σειρά από κρυπτογραφημένα σήματα επικοινωνίας από μια ομάδα ληστών τραπεζών. Τα σήματα περιέχουν μια μεγάλη ακολουθία ψηφίων. Η ομάδα σου πρέπει να χρησιμοποιήσει διάφορες τεχνικές ψηφιακής επεξεργασίας σήματος για να αναλύσει τα σήματα και να εντοπίσει τυχόν μοτίβα που μπορεί να υποδεικνύουν τον σχεδιασμό μιας ληστείας.
Η αποστολή σου είναι να αναζητήσεις μοτίβα στη μεγάλη ακολουθία ψηφίων του κρυπτογραφημένου σήματος.
Η τεχνική που θα χρησιμοποιήσεις εδώ ονομάζεται μεγαλύτερο γινόμενο σειράς.
Ας ορίσουμε πρώτα μερικούς όρους.
Ας δουλέψουμε ένα παράδειγμα, με είσοδο το "63915".
3, θα υπάρχουν τρεις πιθανές σειρές:
"639""391""915""639" είναι 162 (6 × 3 × 9 = 162)"391" είναι 27 (3 × 9 × 1 = 27)"915" είναι 45 (9 × 1 × 5 = 45)"63915" προέρχεται από τη σειρά "639".
Άρα η απάντηση είναι 162.Μερικές φορές είναι απαραίτητο να πετάξεις μια εξαίρεση. Όταν το κάνεις αυτό, θα πρέπει να συμπεριλαμβάνεις πάντα ένα ουσιαστικό μήνυμα σφάλματος που να δείχνει ποια είναι η πηγή του σφάλματος. Αυτό κάνει τον κώδικά σου πιο ευανάγνωστο και βοηθά σημαντικά στο debugging. Για περιπτώσεις όπου ξέρεις ότι η πηγή του σφάλματος θα είναι συγκεκριμένου τύπου, μπορείς να επιλέξεις να πετάξεις έναν από τους ενσωματωμένους τύπους σφαλμάτων, αλλά θα πρέπει και πάλι να συμπεριλάβεις ένα ουσιαστικό μήνυμα.
Αυτή η συγκεκριμένη άσκηση απαιτεί να χρησιμοποιήσεις την εντολή raise για να "πετάξεις" ένα ValueError όταν η συνάρτηση largest_product() λαμβάνει μη έγκυρη είσοδο. Τα tests θα περάσουν μόνο αν και κάνεις raise την exception και συμπεριλάβεις ένα μήνυμα μαζί της. Μη διστάσεις να ξαναχρησιμοποιήσεις τον κώδικά σου από την άσκηση series!
Για να κάνεις raise ένα ValueError με ένα μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο exception:
# span of numbers is longer than number series
raise ValueError("span must not exceed string length")
# span of number is negative
raise ValueError("span must not be negative")
# series includes non-number input
raise ValueError("digits input must only contain digits")
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.