Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0
2 Internal use only Μεταβλητές
Μεταβλητές(1/3) Μεταβλητές οντότητες στις οποίες αποθηκεύουμε δεδομένα Τύποι δεδομένων : Αλφαριθμητικός ακολουθείς γραμμάτων και αριθμών κατόπιν ειδικής δήλωσης ώστε να γίνονται αντιληπτά ως κείμενο(dfdsf, sxoli, python3, 2 κτλ) Αριθμητικός κάθε σύμβολό με αριθμητική αξία ( 1,2,2323 κτλ) Λογικός True και False 3 Internal use only
Μεταβλητές(2/3) Στην Python μια μεταβλητή δεν δηλώνουμε τον τύπο των δεδομένων που περιέχει την μεταγλώττιση. Η ίδια η γλώσσα το ελέγχει κατά την στιγμή εκτέλεσης του προγράμματος και όχι κατά Η ιδιότητα αυτή ονομάζεται δυναμικός τύπος (dynamically typed) και επιτρέπει την σύνταξη συντομότερου και πιο ευέλικτου κωδικά. 4 Internal use only
Μεταβλητές(3/3) Κατά την τέλεση αριθμητικών υπολογισμών η Python ορίζει αυτόματα την απαιτούμενη ακρίβεια ώστε να γίνουν σωστά οι πράξεις. 5 Internal use only
6 Internal use only Δομές Δεδομένων
Δομές δεδομένων (1/14) Βασικές δομές δεδομένων στην Python : Αλφαριθμητικές (Strings): Λίστες (Lists) Πλειάδες (Tuples) Λεξικά (Dictionaries) Σύνολα (Sets) 7 Internal use only
Δομές δεδομένων(2/14) Αλφαριθμητικές(1/3) Τα αλφαριθμητικά στοιχεία διατάσσονται σε σειριακή ακολουθία (sequence). Έτσι κάθε στοιχείο τίθεται σε συγκεκριμένη αριθμημένη θέση βάσει της οποίας προσπελάζεται 8 Internal use only
Δομές δεδομένων(3/14) Αλφαριθμητικές(2/3) Παράδειγμα προσπέλασης αλφαριθμητικού 9 Internal use only
Δομές δεδομένων(4/14) Αλφαριθμητικές(3/3) Παράδειγμα αντιστροφής αλφαριθμητικού Θα εκτυπωθεί πρώτος ο χαρακτήρας με δείκτη 3, και ακολούθως όλοι μέχρι και τον χαρακτήρα με δείκτη 2 Προσοχή : στην Python, όπως και σε πολλές άλλες γλώσσες προγραμματισμού, η δεικτοδότηση αρχίζει από το 0 10 Internal use only
Δομές δεδομένων(5/14) Λίστες(1/4) Βασικά χαρακτηριστικά : Αντικαθιστούν τους πίνακες άλλων γλωσσών προγραμματισμού Περικλείονται σε αγκύλες [ ] Δυναμική δέσμευση της μνήμης που αυτοί απαιτούν. Άμεσα τροποποιήσιμες (mutable) Υπόδειγμα λίστας : [ ' These ', 3, 5.711, True,'Prime ' ] 11 Internal use only
Δομές δεδομένων(6/14) Λίστες(2/4) Γέμισμα λίστας Δημιουργία κενής λίστας Συνδυασμός λιστών 12 Internal use only
Δομές δεδομένων(7/14) Λίστες(3/4) Πλήθος στοιχείων λίστας Πρώτο στοιχείο λίστας Προσπέλαση στοιχείου 3 έως 4 Στοιχεία στο [i, j] ανά k 13 Internal use only
Δομές δεδομένων(8/14) Λίστες(4/4) Διαγραφή στοιχείων 3 έως 5 Ύψωση στην 2 κάθε Στοιχείου της λίστας Με επαναληπτική δομή FOR 14 Internal use only
Δομές δεδομένων (9/14) Πλειάδες(1/2) Τιμές χωρισμένες με κόμμα Περικλείονται από παρενθέσεις Περιέχουν οποιοδήποτε τύπο δεδομένων Είναι ένα στιγμιότυπο της λίστας Παράδειγμα πλειάδας: a=(1, 'asdf', 3.14) 15 Internal use only
Δομές δεδομένων (10/14) Πλειάδες(2/2) Επί της ουσίας, οι πλειάδες αποτελούν σύνολα αντικειμένων (ένα αντικείμενο που περικλείει μέσα του περισσότερα αντικείμενα) Αν για μια εφαρμογή μπορούμε να διαλέξουμε ανάμεσα σε λίστες και πλειάδες, επιλέγουμε τις πλειάδες καθώς είναι ο πιο γρήγορος τρόπος 16 Internal use only
Δομές δεδομένων (11/14) Λεξικά(1/2) Με ένα λεξικό αντιστοιχούμε σε λέξεις-κλειδιά τιμές (map σε C++...) Μπορούμε να το αντιμετωπίσουμε ως γενικευμένη λίστα Παράδειγμα: dict={'foss' : 1, 'satm' : 2.6, 'emp' : 3.2} 17 Internal use only
Δομές δεδομένων (12/14) Λεξικά(2/2) Δημιουργία Λεξικού Προσπέλαση και προσθήκη Προβολή κλειδιών Διαγραφή στοιχείου Έλεγχοι ύπαρξης στοιχείου στο λεξικό 18 Internal use only
Δομές δεδομένων (13/14) Σύνολα(1/2) Μια 'ανοργάνωτη' συλλογή μοναδικών εγγραφών Βασικές λειτουργίες που επιτελούνται πάνω σε ένα σύνολο, είναι ο έλεγχος συμμετοχής ενός στοιχείου σε ένα σύνολο και η διαγραφή των διπλοεγγραφών Υποστηρίζουν πράξεις μαθηματικών συνόλων 19 Internal use only
Δομές δεδομένων (14/14) Σύνολα(2/2) Α Ή Β Α ΚΑΙ Β ;;;;;; 20 Internal use only
21 Internal use only Είσοδος Δεδομένων
Είσοδος Δεδομένων από το πληκτρολόγιο (1) Υπάρχουν διάφοροι τρόποι για είσοδο δεδομένων στην Python. Ο πιο βασικός είναι να εισαχθεί η τιμή μιας μεταβλητής από το πληκτρολόγιο. Αυτό γίνεται με χρήση της συνάρτησης input : x=int( input ( Please enter a number ) ) print(x) Η input μας εμφανίζει παράλληλα ένα μήνυμα και περιμένει μια τιμή Σημείωση πως η συνάρτηση int() μετατρέπει την είσοδο σε ακέραιο αριθμό 22 Internal use only
Είσοδος Δεδομένων από το πληκτρολόγιο (2) Μπορούμε να εισάγουμε δεδομένα σε περισσότερες της μιας μεταβλητής: x=list() for i in range (0,9): x.append(int( input ("Please enter a number: ") )) print(x) 23 Internal use only
Είσοδος δεδομένων από αρχείο (1) Για να χρησιμοποιήσουμε ένα αρχείο θα πρέπει να δημιουργήσουμε ένα αντικείμενο το οποίο θα αντιπροσωπεύει το αρχείο μέσα στο πρόγραμμά μας Για να ανοίξουμε ένα αρχείο για ανάγνωση χρησιμοποιούμε τη μέθοδο open() Η μέθοδος open() δέχεται διάφορα ορίσματα, τα οποία επιτρέπουν να εκτελέσουμε διάφορες λειτουργίες πάνω στο αρχείο: Τρόπος ανοίγματος r (read) w (write) a (append) b (binary) Χρήση Μόνο ανάγνωση Μόνο εγγραφή Προσθήκη σε αρχείο διατηρώντας τυχόν παλαιότερες εγγραφές Αρχείο δυαδικής μορφής 24 Internal use only + Προσθήκη δεδομένων στο τέλος του αρχείου
Είσοδος δεδομένων από αρχείο (2) Σε περίπτωση που δε χρησιμοποιείται κάποιος από τους προηγούμενους τελεστές στη συνάρτηση open(), αυτόματα θεωρείται πως το αρχείο χρησιμοποιείται μόνο για ανάγνωση Δεν μπορούν να χρησιμοποιηθούν παράλληλα περισσότεροι του ενός ορίσματος μέσα στη συνάρτηση 25 Internal use only
Είσοδος δεδομένων από αρχείο (3) Παράδειγμα: f = open ( 'input_file' ) print ( f.name) print ( f. readlines ( ) ) print ( f. readlines ( ) ) f.seek ( 0 ) print( f. read ( ) ) f.close ( ) 26 Internal use only
Είσοδος δεδομένων από αρχείο (4) f = open ( 'input_file' ) for line in f: print(line, end=' ') 27 Internal use only
Χρήσιμες μέθοδοι... Η μέθοδος f.tell() επιστρέφει έναν ακέραιο που δηλώνει τη θέση του f μέσα στο αρχείο σε bytes από την αρχή του. Αν θέλουμε να αλλάξουμε θέση, μπορούμε να χρησιμοποιήσουμε τη μέθοδο seek(offset, from_what). H νέα θέση υπολογίζεται αν προστεθεί η ποσότητα offset στην παλιά. Η παράμετρος from_what δηλώνει την ΑΡΧΗ από την οποία μετρά η μέθοδος: 0: Από την αρχή του αρχείου 1: Από την τρέχουσα θέση 2: Από το τέλος του αρχείου 28 Internal use only
Χρήσιμες μέθοδοι... Παραδείγματα f = open ( 'input_file','rb+') print( f.seek (6) ) print(f.read(1)) print (f.seek (-2,2)) print (f.read(1) ) >>> 6 b's' 63 b'n' >>> 29 Internal use only
Επεξεργασία αρχείων Αφού τελειώσει η επεξεργασία ενός αρχείου, χρησιμοποιούμε τη μέθοδο close() για να κλείσει το αρχείο και να απελευθερωθούν πόροι του συστήματος Οποιαδήποτε απόπειρα χρήσης του αντικειμένου που αντιπροσώπευε το αρχείο, μετά το κλείσιμο αυτού, θα οδηγήσει σε αποτυχία 30 Internal use only
31 Internal use only Έξοδος - Μορφοποίηση
Έξοδος σε... τερματικό :-) (1) Η πιο απλή έξοδος μπορεί να γίνει με χρήση της συνάρτησης print() (print( something) ) Μπορεί να τροποποιηθεί με τη χρήση διάφορων συναρτήσεων: for x in range(1, 11): print(repr(x).rjust(2), repr(x*x).rjust(3)) 32 Internal use only
Έξοδος σε... τερματικό :-) (2) Αντίστοιχα με την rjust, υπάρχει η ljust και η center, που κάνουν αριστερή και κεντρική στοίχιση αντίστοιχα Επίσης η μέθοδος str.format() επιτρέπει την αντικατάσταση αριθμών οι οποίοι βρίσκονται ανάμεσα από {, } με άλλες τιμές print ( Hello {0} world {1}.format('new','!')) >>>Hello new world! Μπορεί να μορφοποιηθεί η έξοδος με πράξεις μεταξύ συμβολοσειρών a=2 s='1+1='+a print(s) >>>>>> 1+1=2 33 Internal use only
Έξοδος σε αρχείο (1) Η εγγραφή δεδομένων σε ένα αρχείο γίνεται αφού δηλωθεί κατά το άνοιγμα του αρχείου πως το αρχείο προορίζεται για το συγκεκριμένο σκοπό Για την εγγραφή μιας συμβολοσειράς σε ένα αρχείο, χρησιμοποιείται η μέθοδος write() η οποία γράφει τα περιεχόμενα της συμβολοσειράς στο αρχείο και επιστρέφει τον αριθμό των χαρακτήρων που εγγράφηκαν σε αυτό: >>> f.write('this is a test\n') 15 34 Internal use only
Έξοδος σε αρχείο (2) Για να γίνει μια εγγραφή σε ένα αρχείο, θα πρέπει πρώτα να μετατραπεί η εγγραφή σε συμβολοσειρά: value = ('the answer', 42) s = str(value) f.write(s) >>>>18 35 Internal use only
36 Internal use only Συναρτήσεις
Τι είναι μια συνάρτηση Με τη χρήση συναρτήσεων μπορούμε να οργανώσουμε το πρόγραμμά μας με ένα πιο κομψό τρόπο Μια συνάρτηση είναι ένα σύνολο δηλώσεων που εκτελείται όταν καλείται από κάποιο σημείο του προγράμματος 37 Internal use only
Δήλωση συναρτήσεων Μια συνάρτηση ξεκινά με το πρόθεμα def. Ακολουθείται από το όνομα της συνάρτησης Μετά το όνομα της συνάρτησης ακολουθούν μέσα σε παρένθεση τα ορίσματα της συνάρτησης Η γραμμή κλείνει με την άνω κάτω τελεία (που δηλώνει ) Παράδειγμα: def foo (a,b): 38 Internal use only
Παράδειγμα συνάρτησης def max (a,b): if (a > b): return a else: return b Η δήλωση return επιστρέφει έναν αριθμό όταν εκτελείται το πρόγραμμα σε μια μεταβλητή... 39 Internal use only
40 Internal use only
Αναφορές Οδηγός Εκμάθησης Python Βήμα Βήμα (Taspython) Οδηγός Python: http://docs.python.org/release/3.0.1/tutorial/ 41 Internal use only
42 Internal use only Eρωτήσεις - Απορίες