ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό Εισαγωγή στην Python Χειµερινό Εξάµηνο 2014
Εγκατάσταση Από το www.python.org è Downloads Υπάρχουν εκτενείς οδηγίες για όλα τα λειτουργικά (π.χ., Windows, Mac OS X) Δύο βασικές εκδόσεις της Python: Python 2.X Python 3.X Οι διαφορές τους (τουλάχιστον στο επίπεδο αυτού του µαθήµατος) δεν είναι πολύ µεγάλες. Δεν είναι όµως συµβατές µεταξύ τους. Στο µάθηµα θα ακολουθήσουµε την Python 3.X. 2
Ο Διαδραστικός Διερµηνέας Μετά την εγκατάσταση, µπορούµε να «ανοίξουµε» το διαδραστικό διερµηνέα (interactive interpreter) Μέσω του κελύφους, πληκτρολογώντας python3 Τρέχοντας το πρόγραµµα IDLE Ο διερµηνέας σας επιτρέπει να εισάγετε εντολές Python γραµµή-γραµµή, που εκτελούνται άµεσα. Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "copyright", "credits" or "license()" for more information. >>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable. Visit http://www.python.org/download/mac/tcltk/ for current information. >>> 3
Εξοικείωση Μια πρώτη εντολή: >>> print("hello, world!") Hello, world! Κάτι άκυρο: >>> The Spanish Inquisition SyntaxError: invalid syntax 4
Αριθµητικές Πράξεις >>> 2+2 4 >>> 1/2 0.5 >>> 4/2 2.0 µπορείτε να χρησιµοποιήσετε την Python σαν αριθµητήριο! 5
int και float Οι πραγµατικοί αριθµοί στις γλώσσες προγραµµατισµού λέγονται «αριθµοί κινητής υποδιαστολής» (floating-point numbers) int (integer, ακέραιος) float (floating-point number, πραγµατικός) Οι αριθµοί 3 και 5 είναι ακέραιοι. Οι αριθµοί 3.5 και 5.0 είναι αριθµοί κινητής υποδιαστολής. Οι ακέραιοι µετατρέπονται σε floats κατ ανάγκην 6
int και float Οι ακέραιοι στην Python µπορούν να είναι όσο µεγάλοι θέλουµε >>> 2**1024 1797693134862315907729305190789024733617976978942306572734300811577326 7580550096313270847732240753602112011387987139335765878976881441662249 2847430639474124377767893424865485276302219601246094119453082952085005 7688381506823424628814739131105408272371633505106845862982399472459384 79716304835356329624224137216 Οι floats περιορίζονται σε 64bits >>> 2.0**1024 Traceback (most recent call last): File "<pyshell#37>", line 1, in <module> 2.0**1024 1.79*10 308 OverflowError: (34, 'Result too large') >>> sys.float_info sys.float_info(max=1.7976931348623157e+308, min=2.2250738585072014e-308) 7
Τελεστές Ακέραιας Διαίρεσης >>> 5/2 2.5 >>> 5//2 2 >>> 5%2 1 διαίρεση πραγµατικών ακέραια διαίρεση υπόλοιπο ακέραιας διαίρεσης 8
Ύψωση σε δύναµη >>> 2**3 8 >>> -3**2-9 >>> (-3)**2 9 9
Μη δεκαδικοί αριθµοί Το AF στο δεκαεξαδικό σύστηµα ισούται µε 10*16+15=175 στο δεκαδικό σύστηµα. >>>0xAF 175 To 10 στο οκταδικό σύστηµα ισούται µε 1*8+0=8 στο δεκαδικό σύστηµα. >>>0o10 8 >>> 0b1001000101001 4649 10
Απλές Μαθηµατικές Συναρτήσεις >>> abs(-4) 4 >>> max(2,-5,6) 6 >>> min(2,-5,6) -5 >>>pow(2,3) 8 >>>round(3.8) 4 11
Modules Επεκτείνουν την Python πέρα από τις βασικές εντολές/συναρτήσεις της >>> import math >>> math.floor(3.5) 3 >>> math.sqrt(9) 3.0 Το math είναι module µεγαλύτερος ακέραιος µικρότερος ή ισος του 3.5 συνάρτηση τετραγωνικής ρίζας 12
Module fraction Χειρισµός κλασµάτων Αν θέλουµε µεγαλύτερη ακρίβεια από floats >>> import fractions >>> a = fractions.fraction(3,4) >>> b = fractions.fraction(1,2) >>> c = a+b >>> c Fraction(5, 4) Το κλάσµα 3/4 13
Module fraction Χειρισµός κλασµάτων Αν θέλουµε µεγαλύτερη ακρίβεια από floats >>> 0.5**1075 0.0 >>> fractions.fraction(1,2)**1075 Fraction(1, 404804506614621236704990693437834614099113299528284236713 802716054860679135990693783920767402874248990374155728633 623822779617474771586953734026799881477019843034848553132 722728933815484186432682479535356945490137124014966849385 397236206711298319112681620113024717539104666829230461005 064372655017292012526615415482186989568) 14
Δυαδικές Εκφράσεις >>> 2<3 True >>> 3<2 False >>> 5-1>2+1 True δεσµευµένες λέξεις στην Python για δυαδικές εκφρασεις 15
Τελεστές Σύγκρισης Αριθµών >>> 3 == 3 True >>> 3+5 == 4+4 True >>> 3 == 5-3 False >>> 3 <= 4 True >>> 3 > 5 False >>> 3!= 5 True 16
Δυαδικοί Τελεστές >>> 2 < 3 and 4 > 5 False >>> 3 < 5 and True True >>> 3 < 4 or 4 <3 True >>> 3 < 2 and 2 < 1 False >>> not (3 < 4) False p T F not p F T πίνακες αληθείας p q p and p T T T T F F F T F F F F p q p or p T T T T F T F T T F F F 17
Σχέση τύπων bool, int, float True = 1 και False = 0 Μετατροπή τύπων µε bool(), int(), float() >>> 5+True 6 >>> bool(5-5) False >>> bool(3-2.8) True >>> float(false) 0.0 >>> int(4.8+true) 5 µετατροπή σε True/False όλοι οι αριθµοί εκτός του 0 µετατρέπονται σε True µετατροπή σε πραγµατικό ακέραιο µέρος του 5.8 18
Μεταβλητές >>> x=3 >>> x*2 6 >>> print(x*3) 9 απόδοση τιµής <µεταβλητή> = <έκφραση> 19
Προσοχή! >>> x=1 >>> y=x >>> x=100 >>> y 1 Η τιµή µιας µεταβλητής µετά την αρχικοποίησή της είναι ανεξάρτητη από τις άλλες µεταβλητές! 20
Ποια η διαφορά; >>> 2*3 6 >>> print(2*3) 6 Η έκφραση αυτή δεν θα κάνει τίποτα σε ένα πρόγραµµα Python Η εντολή αυτή θα τυπώσει 6 σε ένα πρόγραµµα Python 21
Απόδοση τιµής από το χρήστη >>> name = input("please input your name: ") Please input your name: Nikos >>> name 'Nikos >>> x = input("x: ") x: 3 >>> x '3' >>> x = int(input("x: ")) x: 4 >>> x 4 To x δεν είναι αριθµός! Η συνάρτηση int() αρχικοποιεί έναν ακέραιο παίρνοντας σαν είσοδο ένα αλφαριθµητικό 22
Αλλά... >>> x = int(input("x: ")) x: 4.5 Traceback (most recent call last): File "<pyshell#64>", line 1, in <module> x = int(input("x: ")) ValueError: invalid literal for int() with base 10: '4.5 >>> x = float(input("x: ")) x: 4.5 >>> x 4.5 >>> x = eval(input("x: ")) Η συνάρτηση µετατροπής περιµένει ακέραιο! Αυτόµατη µετατροπή 23
Ονόµατα Μεταβλητών Στα Αγγλικά! Επιτρεπτοί χαρακτήρες: A..Z, a..z, _, 0..9 Μια µεταβλητή ΔΕΝ µπορεί να αρχίζει µε ψηφίο (0..9) π.χ. my_list, mylist, mylist, _list, αλλά όχι 5list, list-3 Διαλέγουµε ονόµατα που βγάζουν νόηµα π.χ. interestrate, tempvar θα βοηθήσουν άλλους να κατανοήσουν το πρόγραµµά µας...και εµάς(!) για να το θυµηθούµε ή να το εκσφαλµατώσουµε ΔΕΝ χρησιµοποιούµε δεσµευµένα ονόµατα (reserved keywords), π.χ. False, for, class 24
Αλφαριθµητικά Ακολουθίες χαρακτήρων κλεισµένες σε εισαγωγικά "Hello World" ή 'Hello World', αλλά όχι "Hello World >>> "Hello World!" 'Hello World!' >>> s = "hello" >>> s 'hello' 25
Προσοχή! >>> 'Let's go' SyntaxError: invalid syntax >>> "Let's go" "Let's go" >>> 'Let\'s go' "Let's go" 26
Σύγκριση αλφαριθµητικών >>> s = "hello" >>> s == "hello" True >>> t = "world" >>> s!= t True >>> s == t False >>> s < t True µε βάση τη λεξικογραφική σειρά! 27
Πράξεις µε αλφαριθµητικά >>> s + " " + t 'hello world' >>> s * t Traceback (most recent call last): File "<pyshell#94>", line 1, in <module> s * t TypeError: can't multiply sequence by non-int of type 'str >>> 3 * "A" 'AAA' >>> "hello " * 2 'hello hello ' 28
Τελεστής in και συνάρτηση len >>> s = "hello" >>> 'g' in s False >>> 'll' in s True >>> len(s) 5 29
Δεικτοδότηση αλφαριθµητικών Οι χαρακτήρες σε ένα αλφαριθµητικό δεικτοδοτούνται Ο πρώτος χαρακτήρας είναι στη θέση 0, ο δεύτερος στη θέση 1, κ.ο.κ. >>> s = "hello" >>> s[0] 'h' >>> s[3] 'l' >>> s[4] 'o' 30
Αρνητική δεικτοδότηση Μπορούµε να προσπελάσουµε τους χαρακτήρες και από το τέλος Ο τελευταίος χαρακτήρας είναι στη θέση -1, ο προτελευταίος στη θέση -2, κ.ο.κ. >>> s = "hello" >>> s[-1] 'o' >>> s[-4] 'e' θετικοί δείκτες αρνητικοί δείκτες αλφαριθµητικό 0 1 2 3 4-5 -4-3 -2-1 h e l l o 31
Μακρά Αλφαριθµητικά Αλφαριθµητικά που χρειάζονται πολλές γραµµές (π.χ. κείµενα). >>> print( '''This is a very long string. It continues here. And it's not over yet. "Hello, world! Still here.''') >>> print("hello, \ World!") Hello, World! 32
Τιµές, Τύποι, Αντικείµενα Έχουµε δει κάποιους τύπους τιµών int, float, str Κάθε τιµή στην Python (π.χ. ακέραιος, αλφαριθµητικό) αποθηκεύεται στη µνήµη ως αντικείµενο Κάθε αντικείµενο έχει λοιπόν µια τιµή και ένα τύπο type: int 3 type: float 3.0 type: str 'Hello World' 33
Οι µεταβλητές δεν έχουν τύπο Οι µεταβλητές είναι απλά ονόµατα για τα αντικείµενα στα οποία αναφέρονται. >>> s = "hello" >>> type(s) <class 'str'> Η παραπάνω συνάρτηση µας δίνει τον τύπο του αντικειµένου στο οποίο αναφέρεται η µεταβλητή s 34
Προγράµµατα σε Python Μπορούµε να δηµιουργήσουµε ένα πρόγραµµα και να το σώσουµε σε ένα αρχείο κειµένου. Μπορούµε να χρησιµοποιήσουµε οποιοδήποτε επεξεργαστή κειµένου. Επεξεργαστές κειµένου για γλώσσες προγραµµατισµού µας βοηθάνε στη συγγραφή και παρέχουν λειτουργίες εκτέλεσης του προγράµµατος. Ο επεξεργαστής κειµένου που έρχεται µε την εγκατάσταση της Python ειναι το IDLE. Εναλλακτικά: UltraEdit, Crimson, emacs 35
Προγράµµατα σε Python Ένα αρχείο προγράµµατος Python µπορεί να εκτελεστεί: Μέσω του IDLE Από το κέλυφος ή τη γραµµή διαταγών width = int(input("width: ")) length = int(input("length: ")) area = width*legth print("area: ", area) Ø python3 area.py Width: 3 Length: 4 Area: 12 πρόγραµµα εκτέλεσης αρχείων Python όνοµα αρχείου Python Αρχείο (area.py) Εκτέλεση στο κέλυφος Μετατρέποντας το αρχείο σε εκτελέσιµο 36
Σχόλια Τα προγράµµατα πρέπει να τεκµηριώνονται για να µπορεί κάποιος που θα διαβάσει τον κώδικά σας να τον κατανοήσει για να θυµάστε εσείς ποιος είναι ο σκοπός ή το νόηµα ενός µέρους του προγράµµατος η τεκµηρίωση διευκολύνει την εκσφαλµάτωση Σχόλια: οτιδήποτε ακολουθεί µια δίεση (#) # this program computes the area of a rectangle width = int(input("width: ")) # ask the user to input the width length = int(input("length: ")) # ask the user to input the length area = width*legth # compute the area print("area: ", area) # print the area Αρχείο (area.py) 37