Python και ΓΛΩΣΣΑ cheatsheet: τα βασικά

Σε αυτή τη σελίδα βρίσκεται ολόκληρη η εισαγωγή σε μορφή σκονακιού: μεταβλητές, τύποι δεδομένων, πράξεις, if, while, for, λίστες, συναρτήσεις και τα λάθη που θα δεις τις πρώτες μέρες. Είναι για μαθητές Γυμνασίου, Λυκείου και ΕΠΑΛ που έχουν Python ή ψευδοκώδικα στην Πληροφορική, και για όποιον ξεκινάει τον προγραμματισμό από το μηδέν.
Άνοιξέ την πριν από ένα διαγώνισμα ή όταν γράφεις δικό σου πρόγραμμα και δε θυμάσαι πώς γράφεται κάτι. Οι περισσότερες ενότητες έχουν ένα διάγραμμα με τα βασικά και ένα κουμπί για το μάθημα με την πλήρη εξήγηση, όπου τα παραδείγματα τρέχουν στον browser. Ένας πίνακας δείχνει τα ίδια σε ΓΛΩΣΣΑ, όπως τα γράφει το σχολικό βιβλίο.

Ο χάρτης της εισαγωγής

Σχεδόν κάθε πρόγραμμα φτιάχνεται από τρία είδη βημάτων: εντολές στη σειρά, αποφάσεις και επαναλήψεις. Στο σχολικό βιβλίο θα τα βρεις ως δομή ακολουθίας, δομή επιλογής και δομή επανάληψης. Πριν από αυτά χρειάζεσαι τιμές για να δουλέψεις, δηλαδή μεταβλητές και τύπους δεδομένων. Οι συναρτήσεις έρχονται τελευταίες, γιατί στο σώμα τους γράφεις ό,τι έχεις ήδη μάθει. Το παιχνίδι μαντεψιάς του τελευταίου κεφαλαίου χρησιμοποιεί λίστα, for, if, break και συνάρτηση.
Ο χάρτης της εισαγωγής Πέντε κεφάλαια στη σειρά, το ένα κάτω από το άλλο. Πρώτα βήματα: print, μεταβλητές και =, στο σχολείο δομή ακολουθίας. Δεδομένα: int, float, str, bool και τελεστές. Αποφάσεις: if, elif, else, and, or, not, στο σχολείο δομή επιλογής. Επανάληψη: while, λίστες, for και range, στο σχολείο δομή επανάληψης. Συναρτήσεις και σφάλματα: def, return και traceback, στο σχολείο υποπρογράμματα. Το τελευταίο κεφάλαιο χρησιμοποιεί όλα τα προηγούμενα. ΚΕΦΑΛΑΙΟ ΣΤΗΝ PYTHON Πρώτα βήματα print, μεταβλητές, = σχολείο: δομή ακολουθίας Δεδομένα int, float, str, bool, τελεστές Αποφάσεις if, elif, else, and, or, not σχολείο: δομή επιλογής Επανάληψη while, λίστες, for, range σχολείο: δομή επανάληψης Συναρτήσεις και σφάλματα def, return, traceback σχολείο: υποπρογράμματα
Κάθε κεφάλαιο στηρίζεται στο προηγούμενο. Δίπλα σε κάθε ένα, το όνομα που έχει στο σχολικό βιβλίο.

Από την Python στη ΓΛΩΣΣΑ του σχολείου

Στη Γ' Λυκείου γράφεις τους αλγορίθμους σε ψευδοκώδικα ΓΛΩΣΣΑ, ενώ στο Γυμνάσιο και στο ΕΠΑΛ συναντάς κυρίως Python. Οι ιδέες είναι ίδιες και στις δύο. Ο πίνακας βάζει κάθε εντολή της εισαγωγής δίπλα στη γραφή του σχολικού βιβλίου, μαζί με τη διαφορά που πρέπει να προσέξεις.
PythonΓΛΩΣΣΑΤι αλλάζειΜάθημα
age = 15, found = TrueΜΕΤΑΒΛΗΤΕΣ με ΑΚΕΡΑΙΕΣ: ΗΛΙΚΙΑ και ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ, τιμές ΑΛΗΘΗΣ, ΨΕΥΔΗΣΔηλώνεις τη μεταβλητή και τον τύπο της πριν από το ΑΡΧΗΑριθμοί, κείμενο, αληθές και ψευδές
balance = 5ΥΠΟΛΟΙΠΟ ← 5Την εκχώρηση τη γράφεις με βέλοςΜεταβλητές: ένα όνομα για κάθε τιμή
==, !=, and, or, not=, <>, ΚΑΙ, Η, ΟΧΙΣτη ΓΛΩΣΣΑ το = ρωτάει, δεν αλλάζει τιμήΣυνδυασμός συνθηκών
//, %DIV, MODΣτη ΓΛΩΣΣΑ μόνο με ακέραιουςΠράξεις και συγκρίσεις
if, elif, elseΑΝ ... ΤΟΤΕ, ΑΛΛΙΩΣ_ΑΝ, ΑΛΛΙΩΣ, ΤΕΛΟΣ_ΑΝΚλείνει με ΤΕΛΟΣ_ΑΝ, όχι με την εσοχήΣυνθήκες με if
while savings < 70:ΟΣΟ ΑΠΟΤΑΜΙΕΥΣΗ < 70 ΕΠΑΝΑΛΑΒΕΚλείνει με ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣΕπανάληψη με while
for i in range(1, 6):, grades[0]ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5, ΒΑΘΜΟΙ[1]Το ΜΕΧΡΙ 5 περιλαμβάνει το 5. Στο range(1, 6) το 6 είναι το όριο και μένει έξω. Η λίστα μετράει από το 0, ο πίνακας από το 1Λίστες και for
def με returnΣΥΝΑΡΤΗΣΗ ... ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣΧωρίς return: εκχωρείς το αποτέλεσμα στο όνομά τηςΣυναρτήσεις: ένα όνομα για κάθε υπολογισμό
Στη ΓΛΩΣΣΑ δηλώνεις κάθε μεταβλητή πριν από το ΑΡΧΗ, με τον τύπο της. Το print("Γεια") γίνεται ΓΡΑΨΕ 'Γεια', χωρίς παρενθέσεις και με μονά εισαγωγικά '...'. Οι περισσότερες παγίδες όμως βρίσκονται στο ίσον και στην αρίθμηση. Στην Python το = αλλάζει μια τιμή και το == ρωτάει αν δύο τιμές είναι ίσες. Στη ΓΛΩΣΣΑ την τιμή την αλλάζει το βέλος και το = ρωτάει. Ένα loop που στο τετράδιο πηγαίνει από 1 έως 5 γίνεται στην Python range(1, 6) και, για τις θέσεις μιας λίστας με πέντε στοιχεία, range(5).

Μεταβλητές και τύποι δεδομένων

Μια μεταβλητή είναι ένα όνομα για μια τιμή. Το = είναι εντολή: η Python υπολογίζει πρώτα το δεξί μέρος και βάζει το αποτέλεσμα στο όνομα αριστερά, γι' αυτό το balance = balance + 5 έχει νόημα. Κάθε τιμή έχει τύπο, int, float, str ή bool, και ο τύπος αποφασίζει τι κάνει μια πράξη: το "2" + "3" δίνει 23. Ό,τι διαβάζεις από μια φόρμα ή ένα αρχείο είναι συνήθως κείμενο, οπότε το περνάς από την int() ή τη float() πριν κάνεις πράξεις.
Μεταβλητές και τύποι δεδομένων Τέσσερα κουτιά με ταμπέλα. Το absences κρατάει 12, τύπος int, ακέραιος. Το grade κρατάει 18.5, τύπος float, δεκαδικός. Το name κρατάει το κείμενο Μαρία σε εισαγωγικά, τύπος str. Το promoted κρατάει True, τύπος bool. Από κάτω, το κείμενο "30" περνάει από την int() και γίνεται ο ακέραιος 30. Το int("τέσσερα") δίνει ValueError και το "30" + 1 δίνει TypeError. Το = υπολογίζει πρώτα το δεξί μέρος και μετά βάζει την τιμή στο όνομα. ΤΕΣΣΕΡΙΣ ΜΕΤΑΒΛΗΤΕΣ, ΤΕΣΣΕΡΙΣ ΤΥΠΟΙ absences 12 int ακέραιος grade 18.5 float δεκαδικός name "Μαρία" str κείμενο promoted True bool True ή False ΑΠΟ ΚΕΙΜΕΝΟ ΣΕ ΑΡΙΘΜΟ "30" str int() 30 int int("τέσσερα") δίνει ValueError, "30" + 1 δίνει TypeError. Το = υπολογίζει πρώτα το δεξί μέρος και μετά βάζει την τιμή στο όνομα.
Τον τύπο τον δείχνει η γραφή: τελεία, εισαγωγικά ή True και False.

Πράξεις, συγκρίσεις και λογικοί τελεστές

Οι αριθμητικοί τελεστές δίνουν αριθμό, ενώ οι συγκριτικοί και οι λογικοί, με bool, δίνουν True ή False. Το / δίνει πάντα δεκαδικό, ακόμα και στο 10 / 2. Το // και το % δίνουν πηλίκο και υπόλοιπο, όπως το DIV και το MOD του σχολείου. Η ισότητα θέλει δύο ίσον, ==, και με ένα μόνο αλλάζεις την τιμή αντί να τη ρωτήσεις. Το and θέλει να ισχύουν και οι δύο συνθήκες, στο or αρκεί η μία.
Οι τρεις οικογένειες τελεστών Τρεις στήλες. Αριθμητικοί τελεστές: +, -, *, /, με παραδείγματα 10 / 2 δίνει 5.0, 7 // 2 δίνει 3, 7 % 2 δίνει 1, και αποτέλεσμα έναν αριθμό. Συγκριτικοί τελεστές: ==, !=, <, >, <=, >=, με παραδείγματα 7 == 2 δίνει False, 7 != 2 δίνει True, 7 >= 7 δίνει True, και αποτέλεσμα True ή False. Λογικοί τελεστές, με bool: and, or, not, με παραδείγματα True and False δίνει False, True or False δίνει True, not True δίνει False, και αποτέλεσμα True ή False. Η σειρά: πρώτα πολλαπλασιασμός και διαίρεση, μετά πρόσθεση και αφαίρεση, στο τέλος οι συγκρίσεις. Το = βάζει τιμή, το == ρωτάει αν δύο τιμές είναι ίσες. ΑΡΙΘΜΗΤΙΚΟΙ + - * / 10 / 2 δίνει 5.0 7 // 2 δίνει 3 7 % 2 δίνει 1 αριθμός ΣΥΓΚΡΙΤΙΚΟΙ == != < > <= >= 7 == 2 δίνει False 7 != 2 δίνει True 7 >= 7 δίνει True True ή False ΛΟΓΙΚΟΙ (ΜΕ BOOL) and or not True and False δίνει False True or False δίνει True not True δίνει False True ή False Σειρά: πρώτα * και /, μετά + και -, στο τέλος οι συγκρίσεις. Το = βάζει τιμή σε μεταβλητή. Το == ρωτάει αν δύο τιμές είναι ίσες.
Κάθε σύγκριση είναι μια ερώτηση με απάντηση True ή False.

Αποφάσεις με if, elif και else

Το if τρέχει ένα κομμάτι κώδικα μόνο όταν η συνθήκη του δίνει True. Με elif προσθέτεις περιπτώσεις και το else τρέχει όταν δεν ισχύει καμία. Η Python κάνει τις ερωτήσεις από πάνω προς τα κάτω και σταματάει στην πρώτη που ισχύει, γι' αυτό η σειρά τους αλλάζει το αποτέλεσμα. Ποιες γραμμές ανήκουν σε κάθε κομμάτι το δείχνει η εσοχή των τεσσάρων κενών, και η γραμμή του if τελειώνει πάντα με :.
if, elif και else με το εισιτήριο του μουσείου Διάγραμμα ροής με age = 15. Πρώτη ερώτηση age < 6: με True οδηγεί σε price = 0, εδώ δίνει False. Δεύτερη ερώτηση age < 18: δίνει True και οδηγεί σε price = 5. Αν έδινε False, θα έτρεχε το else με price = 10. Και οι τρεις δρόμοι καταλήγουν στο print του εισιτηρίου. Τρέχει μόνο το πρώτο κομμάτι που η συνθήκη του δίνει True και η στενότερη περίπτωση μπαίνει πρώτη. age = 15 age < 6 True price = 0 False age < 18 True price = 5 False else: price = 10 print("Εισιτήριο:", price) Τρέχει μόνο το πρώτο κομμάτι που η συνθήκη του δίνει True. Η εσοχή δείχνει τι ανήκει σε κάθε κομμάτι, η στενότερη περίπτωση μπαίνει πρώτη.
Με age = 15 η πρώτη συνθήκη δίνει False και η δεύτερη True.

Επανάληψη με while

Το while μοιάζει με το if, μόνο που μετά το σώμα γυρίζει πίσω και ρωτάει ξανά. Το χρησιμοποιείς όταν δεν ξέρεις από πριν πόσες φορές θα τρέξει, όπως στον κουμπαρά που γεμίζει με 15 ευρώ την εβδομάδα. Η Python ελέγχει τη συνθήκη μόνο πριν από κάθε πέρασμα, οπότε ένα πέρασμα που ξεκίνησε τελειώνει ολόκληρο. Αν καμία γραμμή του σώματος δε φέρνει τη συνθήκη πιο κοντά στο False, το loop δε σταματάει ποτέ.
Το while και οι έλεγχοί του Αριστερά διάγραμμα ροής: savings = 0 και weeks = 0, μετά ο έλεγχος savings < 70. Με True τρέχει το σώμα, savings += 15 και weeks += 1, και ένα βέλος γυρίζει πίσω στον έλεγχο. Με False το πρόγραμμα πάει στο print των εβδομάδων. Δεξιά οι έξι έλεγχοι: με weeks 0 έως 4 το savings είναι 0, 15, 30, 45, 60 και ο έλεγχος δίνει True, με weeks 5 το savings είναι 75 και ο έλεγχος δίνει False. Ο έλεγχος γίνεται πριν από κάθε πέρασμα και κάποια γραμμή του σώματος πρέπει να φέρνει τη συνθήκη πιο κοντά στο False. savings = 0, weeks = 0 savings < 70 True savings += 15 weeks += 1 ξανά False print("Εβδομάδες:", weeks) ΟΙ ΕΛΕΓΧΟΙ weeks 0 0 < 70 True weeks 1 15 < 70 True weeks 2 30 < 70 True weeks 3 45 < 70 True weeks 4 60 < 70 True weeks 5 75 < 70 False Ο έλεγχος γίνεται πριν από κάθε πέρασμα. Κάποια γραμμή του σώματος πρέπει να φέρνει τη συνθήκη πιο κοντά στο False, αλλιώς το loop δε σταματάει.
Πέντε έλεγχοι δίνουν True και ο έκτος False: πέντε εβδομάδες, 75 ευρώ.

Λίστες και for

Μια λίστα κρατάει πολλές τιμές με ένα όνομα και οι θέσεις της ξεκινούν από το 0. Το for grade in grades περνάει από κάθε στοιχείο με τη σειρά και σταματάει μόνο του, χωρίς συνθήκη και χωρίς μετρητή. Όταν χρειάζεσαι αριθμούς, το range(a, b) δίνει από το a έως το b - 1. Η θέση που δεν υπάρχει και το όριο που μένει έξω φέρνουν το off-by-one, ένα από τα πιο συνηθισμένα λάθη με loops.
Λίστα, θέσεις και for Η λίστα grades με πέντε θέσεις: grades[0] κρατάει 17, grades[1] 14, grades[2] 19, grades[3] 12, grades[4] 16. Μια έκτη θέση grades[5] δεν υπάρχει και δίνει IndexError. Βέλη από θέση σε θέση δείχνουν ότι το for grade in grades δίνει στο grade τα 17, 14, 19, 12, 16 με τη σειρά και σταματάει μόνο του. Από κάτω: len(grades) δίνει 5, οπότε η τελευταία θέση είναι 4. range(5) δίνει 0 έως 4. range(1, 5) δίνει 1 έως 4, το 5 μένει έξω. Το total = 0 μπαίνει πριν από το loop, όχι μέσα στο σώμα. grades = [17, 14, 19, 12, 16] grades[0] 17 grades[1] 14 grades[2] 19 grades[3] 12 grades[4] 16 grades[5] IndexError for grade in grades: το grade παίρνει 17, 14, 19, 12, 16 με τη σειρά και το loop σταματάει μόνο του len(grades) 5, οπότε η τελευταία θέση είναι 4 range(5) 0 1 2 3 4 range(1, 5) 1 2 3 4, το 5 μένει έξω total = 0 πριν από το loop, όχι μέσα στο σώμα
Οι θέσεις πάνε από 0 έως len(grades) - 1. Η θέση 5 δεν υπάρχει.

Συναρτήσεις με def και return

Μια συνάρτηση δίνει όνομα σε έναν υπολογισμό, ώστε να τον γράφεις μία φορά και να τον καλείς όσες φορές θέλεις. Τη φτιάχνεις με def, τα ορίσματα της κλήσης μπαίνουν στις παραμέτρους με τη σειρά και το return στέλνει την τιμή πίσω στη γραμμή της κλήσης. Το print απλώς τη δείχνει στην οθόνη. Μια συνάρτηση χωρίς return επιστρέφει None.
return απέναντι σε print Δύο λωρίδες. Πάνω, με return: η γραμμή laptop = discounted(800) στέλνει το 800 στη συνάρτηση def discounted(price), που κάνει return price - price * 20 / 100. Το return επιστρέφει την τιμή 640.0 στη γραμμή της κλήσης και το laptop γίνεται 640.0. Κάτω, με print: η γραμμή result = double(5) στέλνει το 5 στη def double(n), που κάνει print(n * 2). Το 10 πάει στην οθόνη, ενώ στη γραμμή της κλήσης επιστρέφεται None, οπότε result = None. Οι μεταβλητές της συνάρτησης είναι τοπικές και χάνονται όταν τελειώσει η κλήση. RETURN: Η ΤΙΜΗ ΕΠΙΣΤΡΕΦΕΤΑΙ ΣΤΟ ΠΡΟΓΡΑΜΜΑ laptop = discounted(800) def discounted(price): return price - price * 20 / 100 800 640.0 laptop = 640.0 PRINT: Η ΤΙΜΗ ΠΑΕΙ ΜΟΝΟ ΣΤΗΝ ΟΘΟΝΗ result = double(5) def double(n): print(n * 2) οθόνη 10 5 None result = None Οι μεταβλητές της συνάρτησης είναι τοπικές: χάνονται όταν τελειώσει η κλήση.
Με return η τιμή μπαίνει σε μεταβλητή. Με print μένει μόνο στην οθόνη.

Τα λάθη που θα δεις πρώτα

Θα συναντήσεις τρία είδη λαθών. Το συντακτικό λάθος δεν αφήνει το πρόγραμμα να ξεκινήσει, το σφάλμα κατά την εκτέλεση το σταματάει σε μια γραμμή και το λογικό λάθος το αφήνει να τρέξει ως το τέλος με λάθος αποτέλεσμα. Στο traceback διάβασε πρώτα την τελευταία γραμμή, που λέει τι έγινε. Οι γραμμές από πάνω λένε πού.
Τι έγραψεςΤι βλέπειςΔιόρθωσηΜάθημα
if grade >= 10 χωρίς :SyntaxError, δεν τρέχει καμία γραμμήΒάλε : στο τέλοςΣυνθήκες με if
print(«Γεια»)SyntaxError: invalid characterΑπλά " από το πληκτρολόγιοΤο πρώτο σου πρόγραμμα σε Python
float("87,5")ValueErrortext.replace(",", ".") πριν από το floatΚείμενο που μοιάζει με αριθμό
"30" + 1TypeErrorint("30") + 1Κείμενο που μοιάζει με αριθμό
grades[5] σε λίστα με 5 στοιχείαIndexErrorΗ τελευταία θέση είναι len(grades) - 1Λίστες και for
Μέσος όρος άδειας λίσταςZeroDivisionErrorΈλεγξε πρώτα αν len(grades) == 0Σφάλματα και ένα μικρό παιχνίδι
a + b + c / 3 για μέσο όροΚανένα μήνυμα, λάθος αποτέλεσμα(a + b + c) / 3Σφάλματα και ένα μικρό παιχνίδι
day == "Σάββατο" or "Κυριακή"Κανένα μήνυμα, ισχύει για κάθε μέραday == "Σάββατο" or day == "Κυριακή"Συνδυασμός συνθηκών
Στις δύο τελευταίες γραμμές η Python δε βγάζει κανένα μήνυμα, γιατί ο κώδικας είναι σωστά γραμμένος και κάνει ακριβώς αυτό που του ζήτησες. Ένα λογικό λάθος το βρίσκεις μόνο αν ξέρεις περίπου τι αποτέλεσμα περιμένεις: τυπώνεις τις ενδιάμεσες τιμές και αλλάζεις ένα πράγμα τη φορά. Με τον ίδιο τρόπο ελέγχεις και κώδικα που σου έγραψε ένα εργαλείο AI, γιατί κι αυτός ο κώδικας μπορεί να τρέχει χωρίς μήνυμα και να δίνει λάθος αποτέλεσμα.

Σύνοψη

  • Κρατάς τιμές σε μεταβλητές, κάνεις πράξεις με αυτές και μετατρέπεις σε αριθμό το κείμενο που έρχεται από μια φόρμα.
  • Γράφεις αποφάσεις με if, elif και else και ενώνεις συνθήκες με and, or και not, προσέχοντας τη σειρά των ερωτήσεων.
  • Για επανάληψη διαλέγεις while όταν σταματάς επειδή κάτι άλλαξε και for όταν περνάς μια λίστα ή ξέρεις πόσες φορές θα τρέξει το σώμα.
  • Κλείνεις έναν υπολογισμό σε συνάρτηση που επιστρέφει την τιμή με return και διαβάζεις ένα traceback από την τελευταία γραμμή προς τα πάνω.
  • Τα ίδια τα γράφεις και σε ψευδοκώδικα ΓΛΩΣΣΑ, με ←, ΑΝ, ΟΣΟ, ΓΙΑ και ΣΥΝΑΡΤΗΣΗ, αρκεί να προσέχεις το ίσον και την αρίθμηση από το 1.

Θες να συνεχίσεις;

Το course είναι δωρεάν. Κάνε σύνδεση για να κρατάς την πρόοδο και τις σημειώσεις σου.