Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ Εισαγωγή στην γλώσσα προγραμματισμού Ακαδημαϊκό έτος 2016-2017, Εαρινό εξάμηνο Οι σημειώσεις βασίζονται στα συγγράμματα: A byte of Python (ελληνική μετάφραση): e-book στην τοποθεσία http://dide.flo.sch.gr/plinet/meetings/meeting23/a_byte_of_python-el.pdf ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 1 -
Λίστες στην Python Οι λίστες είναι οι βασικότερες δομές στην Python. Μια λίστα είναι μία ακολουθία από στοιχεία όπου: 1. Μπορούμε να αυξομειώσουμε το μέγεθος τους κατά βούληση (το μέγεθος δεν είναι σταθερό) 2. Τα στοιχεία που την αποτελούν μπορεί να είναι διαφορετικού τύπου (μπορεί να αποτελείτε από αριθμούς και αλφαριθμητικά) 3. Η λίστα οριοθετείται μέσα σε αγκύλες [ ] και τα στοιχεία της χωρίζονται με κόμμα. Σε κάθε στοιχείο μιας ακολουθίας ανατίθεται ένας ακέραιος που ονομάζεται δείκτης (index) του στοιχείου. ΠΡΟΣΟΧΉ!!!! Ο δείκτης του πρώτου στοιχείου μιας ακολουθίας είναι μηδέν, του δεύτερου ένα, του τρίτου δύο κ.ο.κ. Μπορούμε να ορίσουμε μια λίστα απαριθμώντας τα στοιχεία της μέσα σε τετραγωνικές παρενθέσεις και χωρίζοντας το ένα στοιχείο από το άλλο με κόμμα: >>> numbers = [3, 21, 8, 17, 9, 5] = ['John', 'Maria', 'Dina', 'Mike'] >>> course_grade = ['Math', 5, 'Chemistry', 8, 'Physics', 7] Αναφερόμαστε σε κάποιο συγκεκριμένο στοιχείο μιας λίστας γράφοντας το όνομα της λίστας ακολουθούμενο από το δείκτη του στοιχείου που μας ενδιαφέρει μέσα σε τετραγωνικές παρενθέσεις. Έτσι για τα προηγούμενα παραδείγματα: >>> print( 'My favourite number is', numbers[3] ) My favourite number is 17 [0] 'John' >>> print( 'My grade in', course_grade[2], 'was', course_grade[3]) My grade in Chemistry was 8 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 2 -
1. Πλήθος στοιχείων μιας λίστας: Συναρτήσεις πάνω στις λίστες Η συνάρτηση len() (σύνταξη len(όνομα_λίστας)) επιστρέφει το πλήθος των στοιχείων μιας λίστας: >>> len(names) 4 >>> print ('The length of list course_grades is', len(course_grade) ) The length of list course_grades is 6 2. Πρόσβαση σε υπολίστα Μπορούμε να αναφερθούμε σε ένα κομμάτι (slice) ή υπολίστα μιας λίστας, π.χ. της numbers, χρησιμοποιώντας το συμβολισμό numbers[i:j] ή numbers[i:j:step]. Για παράδειγμα, >>> numbers[0:2] [3, 21] >>> numbers[1:4] [21, 8, 17] >>> numbers[1:23] [21, 8, 17, 9, 5] >>> numbers[13:17] [] >> numbers[0:5:2] [3, 8, 9] ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 3 -
>>> numbers[4:23:3] [9] Κάθε μια από τις παραπάνω εντολές έχει σαν αποτέλεσμα μια λίστα. Οι κανόνες που διέπουν τον τρόπο αναφοράς σε κομμάτια μιας λίστας έχουν ως εξής: 3. Πρόσβαση στα στοιχεία μιας λίστας Η πρόσβαση στα στοιχεία μιας λίστας μπορεί να πραγματοποιηθεί με 2 τρόπους Α. μέσω μιας επανάληψης for Β. μέσω των δεικτών όπως αναφέρθηκε αρχικά. (Π.χ. numbers[2] θα δώσει σαν αποτέλεσμα το στοιχείο με τιμή 8). Εδώ πρέπει να πούμε επιπλέον ότι μπορούμε να χρησιμοποιήσουμε αρνητικούς δείκτες για να καθορίσουμε θέσεις στοιχείων σε σχέση με το τέλος της λίστας. Ο δείκτης -1 προσδιορίζει το τελευταίο στοιχείο μιας λίστας Ο δείκτης -2 το προτελευταίο στοιχείο 4. Εισαγωγή στοιχείων σε μια λίστα. Α. Η συνάρτηση append() προσθέτει το όρισμά της σε μιά λίστα. Η σύνταξη της συνάρτησης αποτελείται από το όνομα της λίστας που ακολουθείται από τελεία, την append (όνομα_λίστας.append(στοιχείο)).append('sofia') ['John', 'Maria', 'Dina', 'Mike', 'Sofia'] ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 4 -
B. Η συνάρτηση extend(l) (σύνταξη: όνομα_λίστας1.extend(λίστα_2)) επεκτείνει μια λίστα προσαρτώντας τα στοιχεία της λίστας L. Μπορούμε να επιτύχουμε το ίδιο αποτέλεσμα με τον τελεστή '+'..extend(['olga', 'Mark') ['John', 'Maria', 'Dina', 'Mike', 'Sofia', 'Olga', 'Mark'] = names + ['Laura'] ['John', 'Maria', 'Dina', 'Mike', 'Sofia', 'Olga', 'Mark', 'Laura'] Γ. Η συνάρτηση insert(i, x) (σύνταξη: όνομα_λίστας.insert(αριθμός, στοιχείο)) προσθέτει το αντικείμενο x πριν ακριβώς τη θέση i. Αν η θέση δοθεί ως 0, το αντικείμενο προστίθεται στην αρχή της λίστας. Αν ως θέση δοθεί το μήκος της λίστας το αντικείμενο προσαρτάται στη λίστα:.insert(3, 'Jenny') ['John', 'Maria', 'Dina', 'Jenny', 'Mike', 'Sofia', 'Olga', 'Mark', 'Laura'] 5. Διαγραφή στοιχείων από μια λίστα. Α. Η συνάρτηση remove(x) (σύνταξη: όνομα_λίστας.remove(στοιχείο)) διαγράφει από μια λίστα το πρώτο στοιχείο με τιμή ίση με x..remove('mike ) ['John', 'Maria', 'Dina', 'Jenny', 'Sofia', 'Olga', 'Mark', 'Laura'] Β. Μπορούμε να διαγράψουμε το στοιχείο της λίστας list στη θέση i γράφοντας del όνομα_λίστας [i] >>> del names[1] ['John', 'Dina', 'Jenny', 'Sofia', 'Olga', 'Mark', 'Laura'] ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 5 -
Γ. Η συνάρτηση pop([i]) (σύνταξη: όνομα_λίστας.pop()) διαγράφει και επιστρέφει το στοιχείο από τη θέση i. Οι τετραγωνικές παρανθέσεις γύρω από τον δείκτη i δηλώνουν ότι το όρισμα της συνάρτησης pop είναι προαιρετικό. Στην περίπτωση που η συνάρτηση αυτή καλείται χωρίς όρισμα, διαγράφει και επιστρέφει το τελευταίο στοιχείο της λίστας: >>> print names.pop() Laura ['John', 'Dina', 'Jenny', 'Sofia', 'Olga', 'Mark'] >>> gone = names.pop(2) >>> print gone, 'has left the company' Jenny has left the company ['John', 'Dina', 'Sofia', 'Olga', 'Mark'] Παρατηρήστε ότι μετά την εντολή names.pop(2) το στοιχείο 'Jenny' αποθηκεύτηκε στην μεταβλητή gone. 6. Άλλες συναρτήσεις Α. Η συνάρτηση reverse() (σύνταξη όνομα_λίστας.reverse(), ΠΡΟΣΟΧΗ χωρίς στοιχεία στην παρένθεση) αντιστρέφει τη σειρά των στοιχείων της λίστας.reverse() ['Mark', 'Olga', 'Sofia', 'Dina', 'John'] Β. Η συνάρτηση sort() (σύνταξη: όνομα_λίστας.sort()) ταξινομεί τα στοιχεία μιας λίστας κατ αύξουσα σειρά. Η ταξινόμηση συμβολοσειρών γίνεται λεξικογραφικά..sort() ['Dina', 'John', 'Mark', 'Olga', 'Sofia'] Μπορούμε να συνδυάσουμε τις συναρτήσεις reverse και sort ως εξής:.sort(reverse=true) ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 6 -
['Sofia', 'Olga', 'Mark', 'John', 'Dina'] Γ. Οι συναρτήσεις min() (σύνταξη: min(όνομα_λίστας)) και max() επιστρέφουν το ελάχιστο, αντίστοιχα, μέγιστο στοιχείο μιας λίστας: >>> grades = [4, 2.1, 5, 6.7, 9.2, 5.4, 5, 7.1, 5] >>> print( 'Min grade is', min(grades)) Min grade is 2.1 >>> print ('Max grade is', max(grades)) Max grade is 9.2 >>> max(names) 'Sofia' >>> min(names) 'Dina' Δ. Η συνάρτηση index(x) (σύνταξη: όνομα_λίστας.index(αριθμός)) επιστρέφει τη θέση του πρώτου στοιχείου στη λίστα με τιμή x, αν υπάρχει τέτοιο στοιχείο. >>> grades.index(5) 2 Ε. Η συνάρτηση count(x) (σύνταξη: όνομα_λίστας.count(αριθμός)) επιστρέφει τον αριθμό εμφανίσεων του στοιχείου x στη λίστα. >>> grades.count(5) 3 Στ. Τέλος οι εντολές x in list και x not in list επιστρέφουν True, αντίστοιχα False αν υπάρχει, αντίστοιχα, δεν υπάρχει, στοιχείο στη λίστα list με τιμή x. >>> 2.1 in grades True >>> 2.3 in grades ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 7 -
False >>> 2.3 not in grades True Ε. αν list είναι μια λίστα και n είναι ένας ακέραιος τότε list*n ή n*list είναι μια λίστα η οποία αποτελείται από n αντίγραφα της λίστας list: >>> list = [1, 2] >>> list*3 [1, 2, 1, 2, 1, 2] Άσκηση 1 Γράψτε ένα πρόγραμμα το οποίο κατασκευάζει μία λίστα με στοιχεία 0,1,2,, 99. L = [] for i in range(100): L = L + [i] print(l) επίσης L = [] for i in range(100): L.append(i) print(l) επίσης L = [i for i in range(100)] print(l) επίσης L = list(range(100)) print(l) Άσκηση 2 Γράψτε ένα νέο πρόγραμμα (list1.py) στο οποίο θα δημιουργήστε την παρακάτω λίστα: [15, 8, 7,10, 22,35, 28] και στην συνέχεια Α. Προσθέστε στο τέλος της το στοιχείο 18 και εμφανίστε την νέα λίστα. ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 8 -
Β. Βρείτε και εμφανίστε το στοιχείο που βρίσκεται στην 5 η θέση Γ. Διαγράψτε το στοιχείο 22 από τη λίστα και εμφανίστε την νέα λίστα. Δ. Προσθέστε στη 2η θέση της λίστας το στοιχείο 48. Ε. Ταξινομήστε τη λίστα Στ. Αντιστρέψτε τη λίστα Άσκηση 3 Κατασκευάστε πρόγραμμα που δημιουργεί μια λίστα με ονόματα τα οποία δέχεται από το πληκτρολόγιο. Σταματάει όταν το όνομα είναι 'end'. Άσκηση 4 Κατασκευάστε ένα πρόγραμμα που όπως στην άσκηση 3 δημιουργεί λίστα με ονόματα, και επιπλέον ζητάει από τον χρήστη επιπλέον ένα όνομα. Στη συνέχεια διατρέχει την λίστα και ενημερώνει εάν το όνομα που ζητήθηκε βρίσκεται στη λίστα ή όχι. Άσκηση 5 Κατασκευάστε ένα πρόγραμμα στο οποίο θα δημιουργήστε δύο λίστες. Η πρώτη λίστα θα έχει τους μονούς αριθμού από το 1 έως το 10 και η δεύτερη τους ζυγούς από το 0 έως το δέκα. Έπειτα θα δημιουργήστε μία τρίτη λίστα σε κάθε θέση της οποίας θα υπολογίζεται ο μέσος όρος των στοιχείων της ίδιας θέσης των άλλων δύο λιστών. Στο τέλος εμφανίστε την τρίτη λίστα. ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Σελίδα - 9 -