Coding for KidsCoding for Kids
Δημιουργικά ΕπίπεδαΠροκλήσειςΟδηγός Εκπαιδευτικού
Ψηφίστε για λειτουργίες
Προχωρημένο Μάθημα Ανάπτυξης σε Python
Κεφάλαιο
>
Επίπεδο

Προχωρημένες Λίστες
Απεικόνιση, Φιλτράρισμα, Αναγωγή

Στόχος

Ολοκληρώστε το μίξιμο και την παραγωγή παγωτού χρησιμοποιώντας τις συναρτήσεις Map, Filter και Reduce.

Μερικές από τις γεύσεις παγωτού είναι μειωμένες ή άδειες, αλλά έχουμε αρκετά υλικά για να αντισταθμίσουμε και να φτιάξουμε περισσότερο παγωτό. Για να το κάνετε αυτό, πρέπει να χρησιμοποιήσετε το Map, ένα ισχυρό εργαλείο που σας επιτρέπει να ελαχιστοποιήσετε τον όγκο του κώδικα που χρειάζεται να γράψετε συμπυκνώνοντας τους βρόχους και τον διακλαδισμένο κώδικα. Οι συναρτήσεις Filter και Reduce συμπληρώνουν τη Map και παρέχουν την πολυπλευρότητα που απαιτείται για τον προγραμματισμό σας.

Για να ξεκινήσετε, πρέπει να εισαγάγετε τη Reduce από τη βιβλιοθήκη functools για να χρησιμοποιήσετε τη συνάρτηση, προσθέτοντας αυτό τον κώδικα στην αρχή του προγράμματός σας: from functools import reduce. Οι συναρτήσεις Map και Filter είναι ενσωματωμένες στην Python και δεν χρειάζεται να εισαχθούν.

Πρώτα πρέπει να πάρετε μερικά συστατικά από το ψυγείο, να περπατήσετε μέχρι το χρυσό σημάδι X, να στραφείτε προς την πόρτα και να την ανοίξετε χρησιμοποιώντας τη συνάρτηση open(). Πιάστε όλα τα βάζα με "cream" από το ψυγείο και μετά περπατήστε μέχρι το φωτεινό σημάδι X πάνω από το πράσινο χαλί.

Υπάρχουν τρεις (3) σταθερές λίστας στον χώρο με ονόματα: vanilla, strawberry και chocolate. Κάθε σταθερά περιέχει έναν συνδυασμό συστατικών που συνιστούν τη γεύση του παγωτού. Στο πράσινο σημάδι X, επαληθεύστε τα περιεχόμενα της λίστας σταθεράς strawberry. Αρχικά, χρησιμοποιήστε τη συνάρτηση place() για να αποθέσετε το "cream" που είχατε πάρει προηγουμένως και στη συνέχεια χρησιμοποιήστε τη συνάρτηση speak() για να επαληθεύσετε τα περιεχόμενα της λίστας σταθεράς strawberry.

Μόλις επαληθευτούν, έχει έρθει η ώρα να χρησιμοποιήσετε τη συνάρτηση Map με τη σταθερά λίστας strawberry, όπου τα περιεχόμενα της λίστας είναι δεκαδικοί αριθμοί. Χρησιμοποιώντας τη συνάρτηση map(), μπορείτε να στρογγυλοποιήσετε όλα τα στοιχεία μιας λίστας, αντικαθιστώντας την ανάγκη να επαναλάβετε κάθε στοιχείο μέσα σε έναν βρόχο για να τα στρογγυλοποιήσετε ένα-ένα. Για να το κάνετε αυτό, δημιουργήστε μια λίστα με το όνομα map1 και χρησιμοποιήστε τη συνάρτηση map() σε συνδυασμό με τη λίστα strawberry και τη συνάρτηση round(), ως εξής: map1 = list(map(round, strawberry)). Μόλις ολοκληρωθεί, χρησιμοποιήστε τη συνάρτηση speak() με το map1 για να επαληθεύσετε το αποτέλεσμα.

Μόλις ολοκληρωθεί, προχωράμε στη συνάρτηση Filter, η οποία λειτουργεί παρόμοια με τη Map, αλλά απαιτεί μια συνάρτηση να χρησιμοποιηθεί σε συνδυασμό. Στην κορυφή του επεξεργαστή θα βρείτε μια προκαθορισμένη συνάρτηση με το όνομα main_ingredients, η οποία χρησιμοποιείται για να καθορίσει αν ένας αριθμός είναι μεγαλύτερος από το νούμερο 25.

def main_ingredients(value): return value > 25

Αντί να επαναλάβετε έναν βρόχο, μπορείτε να χρησιμοποιήσετε αυτή τη συνάρτηση σε συνδυασμό με τη συνάρτηση filter() για να δημιουργήσετε μια νέα λίστα με τα στοιχεία που είναι πάνω από το 25, που αποτελούν τα κύρια συστατικά. Δημιουργήστε μια νέα λίστα με το όνομα filter1 και εφαρμόστε τη συνάρτηση filter() με τις main_ingredients και map1 για να προσδιορίσετε όλα τα κύρια συστατικά που βρέθηκαν στη λίστα που δημιουργήσατε με τη Map, ως εξής: filter1 = list(filter(main_ingredients, value)). Μόλις ολοκληρωθεί, χρησιμοποιήστε τη συνάρτηση speak() με το filter1 για να επαληθεύσετε το αποτέλεσμα.

Τώρα προχωράμε στη συνάρτηση Reduce, η οποία χρησιμοποιείται με τον ίδιο τρόπο όπως η Filter, αλλά αντίθετα, μπορείτε να τη χρησιμοποιήσετε για να συμπιέσετε ή να μειώσετε μια λίστα σε μια ενιαία μονάδα. Όπως και η Filter, χρησιμοποιεί μια προσαρμοσμένη συνάρτηση, αυτή τη φορά με το όνομα custom_sum, η οποία προσθέτει δυναμικά δύο αριθμούς μεταξύ τους.

def custom_sum(first, second): return first + second

Δημιουργήστε μια μεταβλητή με το όνομα reduce1 και χρησιμοποιήστε τη συνάρτηση reduce() σε συνδυασμό με τη συνάρτηση custom_sum και τη λίστα filter1 για να ενοποιήσετε όλα τα στοιχεία σε μια ενιαία μονάδα, ως εξής: reduce1 = reduce(custom_sum, filter1). Μόλις ολοκληρωθεί, χρησιμοποιήστε τη συνάρτηση speak() με το reduce1 για να επαληθεύσετε το αποτέλεσμα.

Τώρα που έχετε ολοκληρώσει τον κύκλο Map, Filter, Reduce, επαναλάβετε τον ίδιο κύκλο στα φωτεινά σημάδια X πάνω στα κόκκινα και μπλε χαλιά. Στο κόκκινο χαλί, χρησιμοποιήστε τη σταθερά λίστας vanilla και δημιουργήστε τις λίστες map2, filter2 και reduce2. Στο μπλε χαλί, χρησιμοποιήστε τη σταθερά λίστας chocolate και δημιουργήστε τις λίστες map3, filter3 και reduce3.

Περπατήστε μέχρι το τελευταίο φωτεινό σημάδι X πάνω από το μωβ χαλί, προσθέστε τα reduce1, reduce2 και reduce3 συνδυάζοντας τα κύρια συστατικά της βανίλιας, της φράουλας και της σοκολάτας. Δημιουργήστε μια μεταβλητή με το όνομα neapolitan και προσθέστε όλα τα αποτελέσματα από τη Reduce, ως εξής: neapolitan = reduce1+reduce2+reduce3. Χρησιμοποιήστε τη συνάρτηση speak() με τον συνδυασμό για να το επαληθεύσετε και χρησιμοποιήστε τη συνάρτηση place() μαζί του, προκειμένου να δημιουργήσετε παγωτό Neapolitan και να ολοκληρώσετε το επίπεδο.

Βιβλίο Κώδικα