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

Προχωρημένες Λίστες
Κατανοήσεις Λίστας

Σε αυτό το κεφάλαιο θα εξερευνήσουμε νέους τρόπους χρήσης λιστών στην Python, όσον αφορά τη βελτιστοποίηση, την κατηγοριοποίηση και ακόμη και τη δημιουργία μεγάλων πολυδιάστατων λιστών, όπως πίνακες που μοιάζουν στενά με πίνακες.

Για αυτό το επίπεδο θα δουλέψουμε με τις List Comprehensions, δηλαδή λίστες που μπορούν να δημιουργηθούν από άλλες λίστες επιλέγοντας μόνο συγκεκριμένα στοιχεία από αυτές. Αυτό γίνεται επίσης με έναν απλό και ξεκάθαρο τρόπο, σε μια μόνο γραμμή κώδικα, χωρίς να χρειάζεται να εισάγεις χειροκίνητα μια λίστα ή να σκεφτείς πολύπλοκους αυτοματισμούς.

Guide

Στόχος

Πιάσε και ταξινόμησε όλα τα ρίζωμα λαχανικά στην αποθήκη ώστε να μπορέσεις να τα τοποθετήσεις στο σωστό τους μέρος χρησιμοποιώντας κατανοήσεις λίστας.

Η αποθήκη έχει αρκετές σακούλες γεμάτες με ρίζωμα λαχανικών που πρέπει να ταξινομηθούν, αυτοί είναι: potatoes, onions και garlic, πιθανώς περιέχουν λαχανικά που έχουν χαλάσει. Βγάλε τα λαχανικά που είναι καλά και αποθήκευσέ τα στα κιβώτια όπου ανήκουν.

Για να το πετύχεις αυτό, πρέπει να ταυτοποιήσεις ποια αντικείμενα βρίσκονται μέσα σε κάθε σακούλα. Υπάρχουν τρεις (3) σταθερές λίστας που περιέχουν τις πληροφορίες για κάθε μία από τις σακούλες, οι οποίες ονομάζονται: left_sack, middle_sack, right_sack. Αυτές οι σταθερές λίστας αντιστοιχούν σε σακούλες στον χώρο στις τοποθεσίες που υποδεικνύονται από τα ονόματά τους.

Πήγαινε στα σημάδια με το φως X που βρίσκονται μπροστά από κάθε σακούλα και χρησιμοποίησε τη συνάρτηση speak() για να ταυτοποιήσεις τα περιεχόμενα κάθε σακούλας με τη χρήση των σταθερών, για παράδειγμα: player.speak(left_sack). Μόλις ταυτοποιήσεις τα περιεχόμενα κάθε σακούλας, εντόπισε τα αντικείμενα που πρέπει να αφαιρεθούν, όπως λαχανικά με: "Bad", "Spoiled" ή "Rotten" στο όνομά τους.

Πρέπει να δημιουργήσεις νέες λίστες που να περιέχουν μόνο αντικείμενα που είναι κατάλληλα για κατανάλωση. Θα μπορούσες να το κάνεις αυτό χειροκίνητα, αλλά θα πάρει αρκετό χρόνο και μπορεί να γίνει αρκετά μπερδεμένο. Για να το επιτύχεις πιο αποτελεσματικά, μπορείς να δημιουργήσεις μια λίστα από μια άλλη λίστα, κάτι που είναι γνωστό ως Κατανόηση Λίστας.

Από τις τρεις (3) σταθερές λίστας: left_sack, middle_sack, right_sack δημιούργησε τρεις νέες λίστες με τα ονόματα: potatoes, onions και garlic που δεν θα περιέχουν ανεπιθύμητα αντικείμενα από τις σακούλες. Οι Κατανοήσεις Λίστας σου επιτρέπουν να δημιουργήσεις νέες λίστες χωρίς να χρειάζεται να γράψεις πολύ κώδικα, για παράδειγμα:

# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # This will create a list named potatoes with: # ["Potatoes", "Sweet Potatoes"]

Στο παραπάνω παράδειγμα, η λίστα που ονομάζεται potatoes δημιουργείται από τη λίστα που ονομάζεται sack περιέχοντας μόνο τα στοιχεία ["Potatoes", "Sweet Potatoes"] και εξαιρώντας το στοιχείο "Spoiled Potatoes". Αυτό επιτυγχάνεται δημιουργώντας έναν αυτόνομο βρόχο for, όπου χρησιμοποιείται το x ως δείκτης για να περάσει μέσα από τη λίστα και οι εντολές for / in χρησιμοποιούνται για να εντοπίσουν και να εξαιρέσουν το ανεπιθύμητο στοιχείο, δηλαδή οποιαδήποτε συμβολοσειρά που περιέχει τη λέξη "Spoiled".

Για να συνοψίσουμε, βρες αν οι σταθερές λίστα περιέχουν τη λέξη "Bad", "Spoiled" ή "Rotten" χρησιμοποιώντας τη συνάρτηση speak(), δημιουργώντας τις λίστες potatoes, onions και garlic χρησιμοποιώντας Κατανοήσεις Λίστας και αφαιρώντας τα ανεπιθύμητα στοιχεία που βρήκες σε κάθε λίστα.

Μόλις δημιουργηθούν αυτές οι λίστες, πήγαινε σε κάθε ένα από τα τρία (3) χρυσά σημάδια Χ μπροστά από τα κιβώτια με τα σημάδια των λαχανικών, και τοποθέτησε τις λίστες, χρησιμοποιώντας τη συνάρτηση place(), στα αντίστοιχα κιβώτια για να ολοκληρώσεις το επίπεδο. Οι τοποθεσίες υποδεικνύονται από τα σήματα, συγκεκριμένα το onions στο αριστερό κιβώτιο, το potatoes στο μεσαίο κιβώτιο και το garlic στο αριστερό κιβώτιο.

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