Python: δεδομένα και εκφράσεις
Τύποι, τελεστές, προτεραιότητα και μετατροπές τύπου.
35 λεπτά
Θα μάθεις να
- Να αναγνωρίζεις τους βασικούς τύπους της Python: int, float, str, bool.
- Να χρησιμοποιείς μεταβλητές και την εκχώρηση με το σύμβολο =.
- Να υπολογίζεις εκφράσεις με τους τελεστές / // % ** και να εφαρμόζεις την προτεραιότητά τους.
- Να μετατρέπεις τύπους με int(), float() και str(), και να ξέρεις ότι η input() επιστρέφει πάντα κείμενο.
Η Python και το πρώτο πρόγραμμα
Η Python είναι γλώσσα προγραμματισμού υψηλού επιπέδου: γράφεται με λέξεις που μοιάζουν με αγγλικά και όχι με τις εντολές του επεξεργαστή. Ένας διερμηνευτής (interpreter) διαβάζει το πρόγραμμα γραμμή γραμμή και το εκτελεί.
Το πιο μικρό πρόγραμμα είναι μία γραμμή:
print("Καλημέρα")
Καλημέρα
Η print() εμφανίζει ό,τι της δώσεις μέσα στις παρενθέσεις. Αν της δώσεις πολλά, χωρισμένα με κόμμα, τα εμφανίζει στην ίδια γραμμή με ένα κενό ανάμεσα.
Μεταβλητές και εκχώρηση
Μια μεταβλητή είναι ένα όνομα που δείχνει σε μια τιμή στη μνήμη. Στην Python τη δημιουργείς απλώς δίνοντάς της τιμή, με το σύμβολο =:
students = 24
buses = 1
students = students + 3
print(students, buses)
27 1
Το = στην Python είναι η εκχώρηση, αυτό που στον ψευδοκώδικα γράφαμε <-. Δεν είναι ισότητα: η γραμμή students = students + 3 σημαίνει «υπολόγισε το δεξί μέρος με την τωρινή τιμή και γράψ' το πίσω στη μεταβλητή».
Τα ονόματα μεταβλητών γράφονται με λατινικούς χαρακτήρες, ψηφία και κάτω παύλα, δεν ξεκινούν με ψηφίο, και ξεχωρίζουν κεφαλαία από πεζά: το total και το Total είναι δύο διαφορετικές μεταβλητές. Όνομα όπως avg_grade λέει τι περιέχει· όνομα όπως x2 δεν λέει τίποτα.
Οι τέσσερις βασικοί τύποι
Κάθε τιμή έχει έναν τύπο, που ορίζει τι είδους δεδομένο είναι και ποιες πράξεις επιτρέπονται πάνω του.
| Τύπος | Τι αποθηκεύει | Παραδείγματα |
|---|---|---|
int | ακέραιους | 17, -3, 0 |
float | πραγματικούς (με υποδιαστολή) | 3.5, -0.25, 2.0 |
str | κείμενο (συμβολοσειρά) | "Άννα", '17', "" |
bool | λογικές τιμές | True, False |
Η συνάρτηση type() λέει τον τύπο μιας τιμής:
print(type(17), type(3.5), type("17"), type(True))
<class 'int'> <class 'float'> <class 'str'> <class 'bool'>
Πρόσεξε το "17": είναι κείμενο δύο χαρακτήρων, όχι αριθμός. Τα εισαγωγικά κάνουν όλη τη διαφορά. Και στην Python η υποδιαστολή γράφεται με τελεία, όχι με κόμμα.
Αριθμητικοί τελεστές
| Τελεστής | Πράξη | Παράδειγμα | Αποτέλεσμα |
|---|---|---|---|
+ - * | πρόσθεση, αφαίρεση, πολλαπλασιασμός | 3 * 4 | 12 |
/ | διαίρεση | 7 / 2 | 3.5 |
// | ακέραιο πηλίκο | 7 // 2 | 3 |
% | υπόλοιπο | 7 % 2 | 1 |
** | δύναμη | 2 ** 10 | 1024 |
Ο τελεστής / δίνει πάντα float, ακόμα κι αν η διαίρεση είναι τέλεια: το 10 / 5 βγάζει 2.0, όχι 2. Αν θέλεις ακέραιο, χρησιμοποιείς //.
Το % είναι πιο χρήσιμο απ' όσο φαίνεται. Ένας αριθμός n είναι άρτιος όταν n % 2 είναι 0, και διαιρείται με το όταν n % 5 είναι 0. Το n % 10 δίνει το τελευταίο του ψηφίο.
seconds = 200
print(seconds // 60, "λεπτά και", seconds % 60, "δευτερόλεπτα")
3 λεπτά και 20 δευτερόλεπτα
Προτεραιότητα
Όπως στα μαθηματικά, οι πράξεις δεν εκτελούνται απλώς από αριστερά προς τα δεξιά:
- παρενθέσεις
**(δύναμη)*///%, από αριστερά προς τα δεξιά+-, από αριστερά προς τα δεξιά
print(2 + 3 * 4)
print((2 + 3) * 4)
print(10 - 4 - 3)
14
20
3
Κείμενο και πράξεις
Με συμβολοσειρές το + κάνει συνένωση και το * με ακέραιο κάνει επανάληψη:
print("5" + "3")
print("ha" * 3)
53
hahaha
Κείμενο και αριθμός όμως δεν ενώνονται. Η Python σταματά με σφάλμα αντί να μαντέψει τι εννοείς. Το μήνυμα λάθους έχει πολλές γραμμές· η τελευταία είναι αυτή που λέει τι συνέβη:
age = "45"
print(age + 1)
TypeError: can only concatenate str (not "int") to str
Μετατροπές τύπου και input()
Οι συναρτήσεις int(), float() και str() μετατρέπουν μια τιμή σε άλλο τύπο:
print(int("5") + int("3"))
print(float("2.5") * 2)
print(str(12) + " μαθητές")
print(int(3.9))
8
5.0
12 μαθητές
3
Το int(3.9) δίνει 3: κόβει το δεκαδικό μέρος, δεν στρογγυλεύει. Για στρογγυλοποίηση υπάρχει η round().
Η input() διαβάζει ό,τι πληκτρολογεί ο χρήστης, και το επιστρέφει πάντα ως κείμενο, ακόμα κι αν ο χρήστης έγραψε αριθμό. Γι' αυτό σχεδόν κάθε αριθμητική είσοδος περνά από μετατροπή:
age = int(input("Πόσων χρονών είσαι; "))
print("Σε πέντε χρόνια θα είσαι", age + 5)
Αν ο χρήστης πληκτρολογήσει 15, το πρόγραμμα εμφανίζει Σε πέντε χρόνια θα είσαι 20. Χωρίς το int() θα σταματούσε με το σφάλμα που είδες πριν.
Σχόλια
Ό,τι γράφεται μετά το # σε μια γραμμή είναι σχόλιο: η Python το αγνοεί. Τα σχόλια είναι για τον άνθρωπο που θα διαβάσει τον κώδικα, συχνά εσένα σε έναν μήνα.
price = 40 # τιμή σε ευρώ
vat = 0.24 # ΦΠΑ 24%
print(price * (1 + vat))
49.6
Λυμένα παραδείγματα
Παράδειγμα 1
Υπολόγισε την τιμή της έκφρασης 7 + 3 * 2 ** 2 // 5 στην Python.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 2
Ένα πρόγραμμα διαβάζει δύο αριθμούς με input() και εμφανίζει το άθροισμά τους. Ο χρήστης δίνει 5 και 3, και το πρόγραμμα εμφανίζει 53. Βρες και διόρθωσε το λάθος.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 3
Δίνεται ένας τριψήφιος αριθμός, π.χ. 472. Βρες με τελεστές της Python το ψηφίο των μονάδων, των δεκάδων και των εκατοντάδων.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Ασκήσεις
Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.
Τα κατάφερες;
- Να αναγνωρίζεις τους βασικούς τύπους της Python: int, float, str, bool.
- Να χρησιμοποιείς μεταβλητές και την εκχώρηση με το σύμβολο =.
- Να υπολογίζεις εκφράσεις με τους τελεστές / // % ** και να εφαρμόζεις την προτεραιότητά τους.
- Να μετατρέπεις τύπους με int(), float() και str(), και να ξέρεις ότι η input() επιστρέφει πάντα κείμενο.
Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.