Προχωρημένο Μάθημα Ανάπτυξης σε Python
Κεφάλαιο
>
Επίπεδο
Προχωρημένες Λίστες
Δημιουργία Εμφωλευμένης Λίστας
Στόχος
Αποθηκεύστε τα καρυκεύματα σωστά στο ράφι μπαχαρικών χρησιμοποιώντας εμφωλευμένες λίστες.
Ένα από τα ράφια μπαχαρικών είναι άδειο και χρειάζεται να αναπληρωθεί σωστά, υπάρχουν καρυκεύματα στην αποθήκη αλλά πρέπει να τοποθετηθούν σωστά, οργανωμένα και τοποθετημένα στο ράφι μπαχαρικών.
Εξαιτίας του μεγάλου αριθμού αντικειμένων και του γεγονότος ότι αποθηκεύονται σε διαφορετικά ράφια σε ένα ράφι μπαχαρικών, οι κανονικές λίστες και τα λεξικά δεν θα αρκούν. Για καταστάσεις σαν αυτές μπορείτε να χρησιμοποιήσετε Εμφωλευμένες Λίστες, δηλαδή λίστες που περιέχουν μία ή περισσότερες λίστες μέσα τους.
Για να αποθηκεύσετε τα μπαχαρικά, πρέπει πρώτα να πάρετε βαζάκια ώστε να αποθηκεύσετε σωστά τα αντικείμενα, να πατήσετε προς το χρυσό σημάδι X, να στραφείτε προς το κουτί και να χρησιμοποιήσετε τη συνάρτηση collect() για να πάρετε το "empty jar" προκειμένου να διευκολύνετε την αποθήκευση.
Μόλις συλλεχθούν τα βαζάκια, περπατήστε προς τα ανοιχτά σημάδια X μπροστά από τα ξύλινα κουτιά. Υπάρχουν τέσσερις (4) σταθερές λίστας σε αυτό το επίπεδο, μία για κάθε κουτί, και αυτές είναι: crate1, crate2, crate3 και crate4. Χρησιμοποιήστε τη συνάρτηση speak() με αυτές τις σταθερές λίστας για να καθορίσετε το περιεχόμενο κάθε κουτιού. Οι σταθερές αντιστοιχούν στα κουτιά από τα δεξιά προς τα αριστερά, για παράδειγμα player.speak(crate1).
Μόλις προσδιορίσετε το περιεχόμενο των κουτιών, χρησιμοποιήστε List Comprehensions για να δημιουργήσετε νέες λίστες χωρίς περιττά αντικείμενα που υπάρχουν μέσα στις σταθερές λίστας. Αν το περιεχόμενο ενός κουτιού περιλαμβάνει: "package", "string" ή "stuffing", χρησιμοποιήστε τον ίδιο τύπο όπως στο προηγούμενο κεφάλαιο για να διαμορφώσετε τις λίστες, για παράδειγμα:
crate1 = ["bay herb", "cilantro herb", "ginger herb", "oregano herb", "string"] herbs = [x for x in crate1 if not "string" in x]
Ο παραπάνω κώδικας θα δημιουργήσει μια νέα λίστα με αντικείμενα που δεν περιέχουν τη λέξη "string". Οι λίστες πρέπει να ονομάζονται: herbs, spices, salts και sugars. Θα γνωρίζετε ποια λίστα πρέπει να ονομαστεί έτσι επειδή τα αντικείμενα μέσα στις λίστες φέρουν το αντίστοιχο όνομα.
Μόλις δημιουργηθούν και οι τέσσερις λίστες, ήρθε η ώρα να τις συνδυάσετε όλες σε μια Εμφωλευμένη Λίστα. Δημιουργήστε μια λίστα με όνομα seasonings και προσθέστε μέσα σε αυτή τις λίστες που δημιουργήσατε, ως εξής:
seasonings = [ ] seasonings.append(herbs) .......
Μόλις ενσωματωθούν όλα τα αντικείμενα στην Εμφωλευμένη Λίστα, περπατήστε προς το σκοτεινό σημάδι X πάνω στο πράσινο χαλί και στραφείτε προς το ράφι. Χρησιμοποιήστε τη συνάρτηση speak() σε συνδυασμό με την εμφωλευμένη λίστα seasonings ώστε να επιβεβαιώσετε τα αντικείμενα σε κάθε ράφι. Στη συνέχεια, χρησιμοποιήστε τη συνάρτηση place() με τη λίστα για να ολοκληρώσετε το επίπεδο, όπως φαίνεται εδώ: player.speak(seasonings).