Ένας διαδραστικός οδηγός για την τάξη και το σπίτι, σε 8 βήματα. Ο κώδικας τρέχει μέσα στον browser σου: άλλαξέ τον, πάτησε Τρέξε (ή Ctrl+Enter) και δες τι γίνεται. Σε κάθε βήμα υπάρχουν κουίζ «τι θα τυπώσει;» και ασκήσεις που ελέγχονται αυτόματα.
Κώδικα Python γράφουμε σε ένα script (αρχείο .py ή κελί σε Jupyter / Google Colab) και βλέπουμε το αποτέλεσμα στην κονσόλα (console). Εδώ το σκούρο παράθυρο παίζει τον ρόλο του script και το ανοιχτό κουτί από κάτω τον ρόλο της κονσόλας. Σε script, ό,τι θέλεις να δεις πρέπει να το τυπώσεις με print().
Η print() εμφανίζει μια τιμή. Ό,τι ακολουθεί το # είναι σχόλιο (comment): η Python το αγνοεί, είναι για τους ανθρώπους.
# μπροστά από την τελευταία print και ξανατρέξε. Μετά υπολόγισε 2 + 3 * 4 και (2 + 3) * 4: η προτεραιότητα είναι η μαθηματική.Υπολόγισε πόσο γίνονται 100 ευρώ με 10% ετήσιο τόκο μετά από 7 χρόνια, δηλαδή 100 * 1.1 ** 7, και τύπωσέ το.
Μια μεταβλητή (variable) είναι ένα όνομα που δείχνει σε μια τιμή: revenue = 1250. Το = σημαίνει «ανάθεση», όχι ισότητα. Τα ονόματα ξεχωρίζουν πεζά/κεφαλαία (case-sensitive).
| Τύπος | Τι είναι | Παράδειγμα |
|---|---|---|
| int | ακέραιος (integer) | stock = 42 |
| float | δεκαδικός (floating point), με τελεία | price = 25.5 |
| str | κείμενο (string), σε εισαγωγικά | product = "Laptop" |
| bool | λογική τιμή (boolean): True ή False | in_stock = True |
Η συνάρτηση type() σου λέει τον τύπο. Ο τύπος καθορίζει τη συμπεριφορά: το + προσθέτει αριθμούς αλλά ενώνει strings.
print("total: " + 3). Διάβασε το μήνυμα σφάλματος: η Python δεν ξέρει αν θες πρόσθεση ή ένωση. Διόρθωσέ το με str(3).Αντί για αλυσίδες από + και str(), γράφεις f"...{μεταβλητή}...". Μέσα στα άγκιστρα μπορείς να ζητήσεις μορφοποίηση: {x:.2f} δύο δεκαδικά, {x:,} διαχωριστικό χιλιάδων, {x:.1%} ποσοστό.
Οι τελεστές == != < <= > >= δίνουν boolean. Τα and, or, not τα συνδυάζουν. Προσοχή: = αναθέτει, == συγκρίνει.
Τα έσοδα είναι 1250 και αυξάνονται 8% τον χρόνο. Συμπλήρωσε τον κώδικα ώστε να τυπώνει ακριβώς: Revenue 1250 now, 1836.66 in 5 years. Θυμήσου: αριθμός + string δίνει σφάλμα, χρειάζεσαι str() ή f-string.
Μια μεταβλητή κρατά μία τιμή. Μια λίστα δίνει ένα όνομα σε πολλές τιμές: sales = [1200, 1550, 1000]. Μπορεί να περιέχει οποιονδήποτε τύπο, ακόμη και άλλες λίστες.
Το πρώτο στοιχείο έχει δείκτη 0, το δεύτερο 1 κ.ο.κ. Αρνητικοί δείκτες μετρούν από το τέλος: -1 είναι το τελευταίο. Πληκτρολόγησε μια έκφραση και δες ποια στοιχεία επιλέγει:
Τύπωσε με τη σειρά: το δεύτερο στοιχείο, το τελευταίο στοιχείο (με αρνητικό δείκτη) και την τιμή του monitor.
Με my_list[start:end] παίρνεις πολλά στοιχεία: ο start περιλαμβάνεται, ο end όχι. Αν παραλείψεις το start ξεκινά από την αρχή, αν παραλείψεις το end πάει ως το τέλος. Δοκίμασε x[1:3], x[:3] (πρώτο τρίμηνο), x[3:] (δεύτερο τρίμηνο), x[-2:]:
backup = sales δίνει δεύτερο όνομα στην ίδια λίστα, οπότε μια αλλαγή μέσω του backup φαίνεται και στο sales. Για ανεξάρτητο αντίγραφο γράψε list(sales) ή sales[:]. Είναι από τις πιο συχνές πηγές «μυστήριων» σφαλμάτων.Φτιάξε τις λίστες h1 (πρώτο εξάμηνο) και h2 (δεύτερο εξάμηνο) με την απλούστερη γραφή του slicing, διόρθωσε τον Δεκέμβριο σε 3000 και τύπωσε τα αποτελέσματα. (Πρόσεξε: το h2 φτιάξ' το πριν αλλάξεις την sales, ή σκέψου τι θα περιέχει αν το φτιάξεις μετά.)
Μια συνάρτηση είναι έτοιμος κώδικας με όνομα: output = function_name(input). Ήδη ξέρεις τις print() και type(). Άλλες χρήσιμες: len(), max(), round(), sorted(), help().
Κάθε τιμή στην Python είναι αντικείμενο (object) και κάθε τύπος έχει τις δικές του μεθόδους. Καλούνται με τελεία: city.upper(), customers.index("nikos").
customers = customers.append("giorgos") κάνει τη customers ίση με None, γιατί η append() δεν επιστρέφει τίποτα· αλλάζει τη λίστα επί τόπου. Γράψε απλώς customers.append("giorgos"). Δοκίμασέ το παραπάνω για να δεις τι γίνεται.Χρησιμοποίησε τις μεθόδους λίστας index(), append() και reverse() σύμφωνα με τα σχόλια.
Ένα πακέτο είναι μια συλλογή από έτοιμες συναρτήσεις, μεθόδους και τύπους. Για ανάλυση δεδομένων: NumPy (αριθμητικοί πίνακες), pandas (πίνακες δεδομένων), Matplotlib (γραφήματα), scikit-learn (μηχανική μάθηση). Τα εγκαθιστάς μία φορά (pip install numpy) και τα εισάγεις (import) σε κάθε script.
| Τρόπος | Πώς το καλείς μετά | Σχόλιο |
|---|---|---|
| import numpy | numpy.array([1, 2]) | πλήρες όνομα, μακρύ |
| import numpy as np | np.array([1, 2]) | η συνήθης πρακτική (ψευδώνυμο, alias) |
| from numpy import array | array([1, 2]) | σύντομο, αλλά κρύβει από πού ήρθε |
Εδώ στον browser υπάρχει το πακέτο math της βασικής Python, και μπορεί να φορτωθεί και το NumPy (πατώντας «Τρέξε» την πρώτη φορά θα αργήσει λίγα δευτερόλεπτα).
Χρησιμοποίησε τη ceil() του πακέτου math (στρογγυλοποίηση προς τα πάνω) για να υπολογίσεις πόσα κουτιά χρειάζονται: 1250 / 48 = 26.04, άρα 27 κουτιά.
Ένα μήνυμα σφάλματος (traceback) διαβάζεται από κάτω προς τα πάνω: η τελευταία γραμμή λέει τι (τον τύπο και την αιτία), οι γραμμές από πάνω λένε πού (σε ποια γραμμή κώδικα). Τα τέσσερα που θα δεις πρώτα:
| Σφάλμα | Τι σημαίνει | Παράδειγμα |
|---|---|---|
| NameError | Όνομα που δεν έχει οριστεί (ή γράφτηκε αλλιώς) | print(revenu) |
| TypeError | Πράξη ανάμεσα σε ασύμβατους τύπους | "total: " + 3 |
| IndexError | Δείκτης που δεν υπάρχει στη λίστα | [1, 2, 3][3] |
| SyntaxError | Η γραμμή δεν διαβάζεται: λείπει παρένθεση ή εισαγωγικό | print("hello" |
Τρέξε τον παρακάτω κώδικα, διάβασε το μήνυμα, και διόρθωσε ένα σφάλμα τη φορά μέχρι να τυπώσει Revenue: 1250 και 1650.
Τρία σφάλματα, τρεις διορθώσεις: ένα NameError, ένα TypeError και ένα SyntaxError. Πάτησε «Έλεγξε», διάβασε το μήνυμα, διόρθωσε, ξαναπάτησε.
Δώδεκα ερωτήσεις από όλη την εβδομάδα. Σκέψου πρώτα, μετά απάντησε· αν αμφιβάλλεις, άνοιξε το παράθυρο κώδικα στο τέλος και δοκίμασέ το.