Εντόπισε παλινδρομικά γινόμενα σε ένα δεδομένο διάστημα.
Ένας παλινδρομικός αριθμός είναι ένας αριθμός που παραμένει ίδιος όταν αντιστραφούν τα ψηφία του.
Για παράδειγμα, το 121 είναι παλινδρομικός αριθμός αλλά το 112 δεν είναι.
Δεδομένου ενός διαστήματος αριθμών, βρες το μεγαλύτερο και το μικρότερο παλίνδρομο που είναι γινόμενα δύο αριθμών μέσα σε αυτό το διάστημα.
Η λύση σου θα πρέπει να επιστρέφει το μεγαλύτερο και το μικρότερο παλίνδρομο, μαζί με τους παράγοντες του καθενός μέσα στο διάστημα. Αν το μεγαλύτερο ή το μικρότερο παλίνδρομο έχει περισσότερα από ένα ζεύγη παραγόντων μέσα στο διάστημα, τότε επίστρεψε όλα τα ζεύγη.
Δεδομένου του διαστήματος [1, 9] (συμπεριλαμβανομένων και των δύο άκρων)...
Και δεδομένης της λίστας όλων των δυνατών γινομένων μέσα σε αυτό το διάστημα:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]
Τα παλινδρομικά γινόμενα είναι όλα μονοψήφιοι αριθμοί (στη συγκεκριμένη περίπτωση):
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Το μικρότερο παλινδρομικό γινόμενο είναι το 1.
Οι παράγοντές του είναι (1, 1).
Το μεγαλύτερο παλινδρομικό γινόμενο είναι το 9.
Οι παράγοντές του είναι (1, 9) και (3, 3).
Δεδομένου του διαστήματος [10, 99] (συμπεριλαμβανομένων και των δύο άκρων)...
Το μικρότερο παλινδρομικό γινόμενο είναι το 121.
Οι παράγοντές του είναι (11, 11).
Το μεγαλύτερο παλινδρομικό γινόμενο είναι το 9009.
Οι παράγοντές του είναι (91, 99).
smallest και largest:Και οι δύο συναρτήσεις πρέπει να δέχονται δύο ορίσματα με λέξεις-κλειδιά:
max_factor: intmin_factor: int, προεπιλεγμένη τιμή 0Η τιμή επιστροφής τους πρέπει να είναι ένα tuple -- (value, factors), όπου το value είναι το ίδιο το παλίνδρομο και το factors είναι ένα iterable που περιέχει και τους δύο παράγοντες του παλινδρόμου σε οποιαδήποτε σειρά.
Μερικές φορές είναι απαραίτητο να πετάξεις μια εξαίρεση. Όταν το κάνεις αυτό, θα πρέπει πάντα να συμπεριλαμβάνεις ένα ουσιαστικό μήνυμα σφάλματος που να δείχνει ποια είναι η πηγή του σφάλματος. Αυτό κάνει τον κώδικά σου πιο ευανάγνωστο και βοηθάει σημαντικά στην αποσφαλμάτωση. Σε περιπτώσεις όπου ξέρεις ότι η πηγή του σφάλματος θα είναι κάποιου συγκεκριμένου τύπου, μπορείς να επιλέξεις να πετάξεις έναν από τους ενσωματωμένους τύπους σφαλμάτων, αλλά θα πρέπει και πάλι να συμπεριλάβεις ένα ουσιαστικό μήνυμα.
Αυτή η άσκηση απαιτεί να χρησιμοποιήσεις την εντολή raise για να "πετάξεις" ένα ValueError όταν η συνάρτηση largest() ή smallest() δεχτεί ένα ζεύγος παραγόντων που δε βρίσκεται στο σωστό εύρος. Τα tests θα περάσουν μόνο αν και κάνεις raise την exception και συμπεριλάβεις ένα μήνυμα μαζί της.
Για να πετάξεις ένα ValueError με μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο exception:
# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.