Home » Εβδομαδιαίες Στήλες » Προγραμματισμός » Μαθήματα Προγραμματισμού Python Από το PCsteps: #2

Μαθήματα Προγραμματισμού Python Από το PCsteps: #2

Αυτός ο οδηγός γράφτηκε πριν από περισσότερα από 2 χρόνια. Η τεχνολογία αλλάζει και εξελίσσεται. Αν οτιδήποτε δεν σας λειτουργεί, γράψτε μας στα σχόλια και θα κοιτάξουμε να τον ανανεώσουμε.

Στο προηγούμενο μάθημα είχαμε δει πώς θα γράφουμε τα προγράμματά μας με διάφορες μεθόδους και είχαμε προτείνει τη χρήση του διαδραστικού κελύφους της Python, του IDLE. Στο μάθημα αυτής της εβδομάδας θα έρθουμε σε μια πρώτη επαφή με το συντακτικό της Python και θα μάθουμε, γράφοντας το πρόγραμμά μας, κάποιες βασικές εντολές.

Δείτε τις ενότητες του οδηγού

Προτάσεις συνεργασίας

Διαφημίστε την επιχειρησή σας στο site του PCsteps, ή και στο κανάλι μας στο YouTube.

Επικοινωνία

Γίνε VIP μέλος στο PCSteps

Τα μέλη διαβάζουν όλα μας τα άρθρα χωρίς διαφημίσεις, και έχουν επιπλέον μοναδικά προνόμια.

Συμμετοχή

Για να δείτε όλα τα μαθήματα Python από την αρχή τους, αλλά και τα επόμενα, αρκεί να κάνετε κλικ εδώ.

Η Python είναι μια γλώσσα που διαθέτει μεγάλη ποικιλία συντακτικού, έτοιμες βιβλιοθήκες με συναρτήσεις, και πολλά άλλα χρήσιμα εργαλεία. Χωρίς να χρειαστεί να εμβαθύνουμε σε αυτά, δεν μπορούμε να αποφύγουμε να μιλήσουμε για κάποιες έννοιες πριν μπούμε στην πράξη.

Για να έχει μεγαλύτερο ενδιαφέρον το μάθημα, μπορούμε να δοκιμάζουμε τα διάφορα παραδείγματα στον IDLE, όπου μπορούμε να εκτελούμε μία-μία τις εντολές μας και να βλέπουμε άμεσα τα αποτελέσματα.

Αυτό θα μας βοηθήσει να μάθουμε τι κάνει η κάθε εντολή στην πράξη, καθώς με μια απλή ανάγνωση δεν πρόκειται να μάθουμε προγραμματισμό.

Εκφράσεις

Όπως είχαμε πει και στο προηγούμενο μάθημα, ανοίγουμε το κέλυφος της python πατώντας στην Έναρξη και πληκτρολογώντας “IDLE”.

Στο παράθυρο του IDLE μπορούμε άμεσα να γράψουμε για παράδειγμα “5 + 3”. Θα εκτυπωθεί στο κέλυφος το αποτέλεσμα “8”.

Αυτό ονομάζεται έκφραση (expression) και είναι το πιο απλό είδος εντολής σε μια γλώσσα. Οι εκφράσεις αποτελούνται από τιμές, όπως το “5”, και τελεστές (operators) όπως το “+” και εκτιμώνται τελικά σε μία μόνο τιμή. Στο προηγούμενο παράδειγμα, η “5 + 3” υπολογίζεται στην τιμή “8”. Ακόμα και μια σκέτη τιμή θεωρείται έκφραση, πχ το “3”.

Υπάρχουν διάφοροι τελεστές που μπορούμε να χρησιμοποιήσουμε στην Python, σχετικά κοινοί στις περισσότερες γλώσσες προγραμματισμού, όπως οι λογικοί και οι boolean τελεστές.

Για την ώρα, παραθέτουμε τους πιο συχνούς μαθηματικούς τελεστές, η χρήση των οποίων γίνεται με τους κανόνες των κλασικών μαθηματικών που ξέρουμε.

Τύποι δεδομένων

Είπαμε ότι οι εκφράσεις είναι τιμές συνδυασμένες με τελεστές, που πάντα δίνουν ως αποτέλεσμα μια τιμή.

Τύπος δεδομένων είναι η κατηγορία στην οποία ανήκει κάθε τιμή. Οι πιο συχνές κατηγορίες φαίνονται στον πίνακα. Υπάρχουν βέβαια και άλλες κατηγορίες, που όμως δεν θα μας απασχολήσουν άμεσα.

Integers είναι οι ακέραιοι αριθμοί, ενώ floats είναι οι δεκαδικοί, οι λεγόμενοι κινητής υποδιαστολής. Το “30” για παράδειγμα θεωρείται ακέραιος, ενώ το “30.0” θεωρείται float.

Τα strings δεν είναι αριθμοί αλλά τιμές κειμένου, τις οποίες εμπερικλείουμε σε εισαγωγικά. Μπορούμε να κατασκευάσουμε και string χωρίς καθόλου χαρακτήρες, το ‘ ‘, που λέγεται και κενό string.

Να σημειωθεί ότι αν κάνουμε το (σύνηθες) ατόπημα να ξεχάσουμε να βάλουμε το τελευταίο εισαγωγικό στο κλείσιμο του string, θα δούμε error με μήνυμα όπως παρακάτω:

Συνένωση (Concatenation) και αναπαραγωγή (Replication)

Η έννοια ενός τελεστή καμιά φορά αλλάζει, ανάλογα με τους τύπους δεδομένων των τιμών τις οποίες συνοδεύει.

Για παράδειγμα, το “+” χρησιμοποιείται για την τυπική πρόσθεση μεταξύ int ή floats. Μπορεί να χρησιμοποιηθεί όμως για να συνενώσει και δύο string. Μπορούμε να δοκιμάσουμε στον IDLE:

Η έκφραση υπολογίζεται σαν ένα συνολικό string κειμένου, που συνδυάζει (χωρίς κενά) τα δύο ή περισσότερα αρχικά string.

Θα πρέπει όμως να είμαστε προσεκτικοί· αν πάμε να συνενώσουμε string με int, θα λάβουμε error, καθώς η Python δεν θα ξέρει πώς να χειριστεί την έκφραση.

Κατ’ αντιστοιχία, ο πολλαπλασιασμός με το “*” μπορεί να σημαίνει και πολλαπλασιασμό ενός string ή, όπως ονομάζεται, replication.

Βέβαια, δεν θα λέγαμε ότι χρησιμοποιείται τόσο συχνά όσο η συνένωση. Και εδώ θα δούμε error αν πάμε να πολλαπλασιάσουμε το string με κάτι άλλο πέρα από integer. Για παράδειγμα, αν πολλαπλασιάσουμε string με αριθμό float…

…ή string με string.

Μεταβλητές

Αν θέλουμε να κρατήσουμε το αποτέλεσμα μιας έκφρασης για να το χρησιμοποιήσουμε αργότερα, μπορούμε να το αποθηκεύσουμε σε μία μεταβλητή.

Για να συμβεί αυτό, κάνουμε μια δήλωση ανάθεσης (assignment). Η ανάθεση αποτελείται από ένα όνομα μεταβλητής, το “=”, και την τιμή που θα αποθηκεύσουμε. Αν γράψουμε δηλαδή…

…έχουμε αναθέσει σε μια μεταβλητή που ονομάζεται “height” την integer τιμή 44.

Μια μεταβλητή δημιουργείται ή αρχικοποιείται την πρώτη φορά που περνάμε μια τιμή σε αυτήν. Αναθέτοντάς της έναν integer, θα γίνει μεταβλητή τύπου integer και η ίδια, όπως ένα άδειο κουτί στο οποίο τοποθετούμε πχ βιβλία.

Από εκεί και μετά, μπορεί να χρησιμοποιείται σε εκφράσεις, ο υπολογισμός των οποίων θα λαμβάνει υπόψη την τελευταία τιμή που της αναθέσαμε. Κάθε φορά που περνάμε νέα τιμή σε κάποια μεταβλητή, αυτή αντικαθιστά την παλαιά (overwrite).

Για παράδειγμα, μπορούμε να γράψουμε στο κέλυφος:

Υπάρχουν συγκεκριμένοι κανόνες που ορίζουν τι ονόματα μπορεί να λάβει μια μεταβλητή στην Python. Έτσι, το όνομα της μεταβλητής πρέπει να διέπεται από τα παρακάτω χαρακτηριστικά:

  1. Είναι μία μόνο λέξη.
  2. Περιέχει μόνο χαρακτήρες του λατινικού αλφαβήτου, αριθμούς, και την κάτω παύλα (_).
  3. Δεν επιτρέπεται να αρχίζει από αριθμό.

Αυτό σημαίνει ότι, παραδείγματος χάριν, τα:

  • sum5
  • sum_total
  • _sum

είναι έγκυρα ονόματα μεταβλητών, ενώ τα:

  • 5sum (ξεκινάει από αριθμό)
  • ‘sum’ (μη επιτροπόμενοι ειδικοί χαρακτήρες, τα εισαγωγικά)
  • sum-total (μη επιτρεπόμενος ειδικός χαρακτήρας, η παύλα)

είναι μη έγκυρα.

Να σημειωθεί ότι τα μικρά γράμματα διαφέρουν από τα κεφαλαία, δηλαδή το “sum” είναι διαφορετική μεταβλητή από το “suM”(case-sensitive).

Επίσης, είναι σύμβαση της Python τα ονόματα των μεταβλητών να αρχίζουν από μικρό γράμμα και, αν θέλουμε να περιέχουν πάνω από μία λέξεις, να χωρίζονται με κάτω παύλα (πχ sum_total).

Παράδειγμα προγράμματος

Ας θυμηθούμε ότι για να γράψουμε το πρόγραμμά μας μέσα από το περιβάλλον του IDLE, θα κάνουμε κλικ στο File > New File.

Στο νέο παράθυρο που άνοιξε, γράφουμε τον παρακάτω κώδικα:

#Program that asks for name and age

print('Hello')
print('What is your name?')  #ask for user's name
my_name = input()
print('Nice to meet you, ' + my_name)
name_length = len(my_name)
print('The length of your name is: ' + str(name_length))
print('How old are you?')   #impolitely ask for user's age
my_age = input()
print('In ten years you will be ')
print(int(my_age) + 10)

Θα διαπιστώσουμε ότι στο διαδραστικό κέλυφος, το πρόγραμμα που εκτελείται θα σταματήσει δύο φορές, αναμένοντας μια είσοδο από τον χρήστη. Το αποτέλεσμα της εκτέλεσης θα είναι κάτι ανάλογο με το παρακάτω:

Επεξήγηση εντολών

Πάμε να δούμε τι ακριβώς κάναμε με αυτό το πρόγραμμα και ποια γνωστά ή καινούργια για εμάς στοιχεία της γλώσσας χρησιμοποιήσαμε.

Συνάρτηση print()

Γνωρίζουμε ήδη λίγο – πολύ ότι η print() εκτυπώνει στην οθόνη το string που περικλείεται εντός των παρενθέσεών της. Έτσι, όταν εκτελείται η εντολή

print('Hello')

η Python καλεί τη συνάρτηση print() στην οποία περνάμε την τιμή string “Hello”. Η τιμή που περνάμε στην κλήση της συνάρτησης λέγεται όρισμα (argument).

Συνάρτηση input()

Η συνάρτηση input() αναμένει από τον χρήστη να πληκτρολογήσει κάποιο κείμενο και να πατήσει “Εnter”.

my_name = input()

Με την παραπάνω κλήση, η συνάρτηση input() θα πάρει το κέιμενο που εισάγαμε και το αποτέλεσμα ανατίθεται στην μεταβλητή “my_name”.

Εκτύπωση ονόματος χρήστη

Με την εντολή…

print('Nice to meet you, ' + my_name)

…κάνουμε μία συνένωση μεταξύ του string “Nice to meet you, ” και της μεταβλητής που κρατάει το όνομα που έδωσε ο χρήστης. Το τελικό συνολικό string περνάει έπειτα στην print(), η οποία το τυπώνει στην οθόνη.

Συνάρτηση len()

Με την len() περνάμε ως όρισμα ένα string ή μια μεταβλητή που περιέχει string. Αφού υπολογίσει τον αριθμό των χαρακτήρων του string, μας τον επιστρέφει σε τιμή integer.

Μπορούμε άμεσα να τη δοκιμάσουμε απευθείας στο κέλυφος με όποιο string θέλουμε, όπως παρακάτω:

Συναρτήσεις int(), float(), str()

Aν τώρα προσπαθούσαμε να κάνουμε κάτι αντίστοιχο με προηγουμένως και να συνενώσουμε ένα string με έναν αριθμό, όπως το name_length, θα λαμβάναμε error.

Με άλλα λόγια, δεν μπορούμε να χρησιμοποιήσουμε αριθμητικές τιμές απευθείας ως string.

Ευτυχώς η Python μας δίνει την εύκολη λύση με τη συνάρτηση str(). Αυτή μπορεί να μετατρέψει οποιονδήποτε αριθμό σε string.

Για παράδειγμα, γράφουμε στον IDLE:

Αυτό γίνεται ιδιαίτερα χρήσιμο για τις εκτυπώσεις, όπου συνενώνουμε απευθείας string με αριθμούς, αφού πρώτα τους μετατρέψουμε στα αντίστοιχα string. Για παράδειγμα:

print('The length of your name is: ' + str(name_length))

Ο integer name_length γίνεται άμεσα string και δίνεται μαζί με ένα ακόμα string ως όρισμα στη συνάρτηση print().

Η ανάλογη λειτουργία των int() και float() είναι εμφανής. Μπορούν να μετατρέψουν το όρισμα που τους δίνουμε σε ακέραιο αριθμό ή σε αριθμό κινητής υποδιαστολής (δεκαδικό) αντίστοιχα. Μπορούμε να δοκιμάσουμε στο κέλυφος:

Αν δοκιμάσουμε βέβαια να περάσουμε κάποια τιμή στην int(), την οποία η Python δεν μπορεί να εκτιμήσει ως ακέραιο, θα πάρουμε το αντίστοιχο μήνυμα σφάλματος.

Στον κώδικά μας, αυτό συμβαίνει με τη μεταβλητή my_age που μας εισάγεται από τον χρήστη ως string.

Αν θέλουμε να τη μεταχειριστούμε ως αριθμό, πραγματοποιώντας κάποια μαθηματική πράξη για παράδειγμα, θα πρέπει να τη μετατρέψουμε πρώτα σε integer.

print(int(my_age) + 10)

Θα μπορούσαμε, μάλιστα, να συντομεύσουμε τον κώδικά μας, συνδυάζοντας τις δύο τελευταίες του εκτυπώσεις. Σ' αυτήν την περίπτωση, θα έπρεπε να μετατρέψουμε πρώτα την my_age σε int, και έπειτα να την ξαναμετατρέψουμε σε string για να μπορέσει να γίνει συνένωση με άλλο string. Το αποτέλεσμα θα ήταν κάτι τέτοιο:

print('In ten years you will be ' + str(int(my_age) + 10) + ' years old')

Βλέπουμε ότι βελτιώσαμε και την εκτύπωση, η οποία πλέον γίνεται σε μία σειρά.

Σχόλια

Τέλος, θεωρείται πολύ σημαντικό να τοποθετούμε σχολιασμό στον κώδικά μας, επεξηγώντας τι συμβαίνει στα διάφορα κομμάτια του. Αυτό βοηθάει όποιον επιθυμεί να διαβάσει το πρόγραμμά μας, ακόμα και εμάς τους ίδιους.

Οτιδήποτε ακολουθεί μετά από ένα hashtag (“#”) είναι σχόλιο και δεν το λαμβάνει υπόψη του ο interpreter κατά την εκτέλεση του προγράμματος.

Συχνά, επίσης, θα δούμε ότι ο σχολιασμός είναι χρήσιμο εργαλείο όταν αντιμετωπίζουμε κάποιο σφάλμα. Σε αυτές τις περιπτώσεις, μπορεί να θέλουμε να απενεργοποίησουμε κάποιο μέρος του κώδικά μας, τοποθετώντας το εντός σχολίων, ώστε να βρούμε τι προκαλεί το πρόβλημα.

Στο επόμενο μάθημα για τον προγραμματισμό Python

Τι σόι μαθήματα παραδίδουμε, χωρίς ασκήσεις για το σπίτι; Μέχρι το επόμενο μάθημα προγραμματισμού, σας δίνουμε ένα πρόγραμμα προσομοίωσης ρίψεων ζαριού, για να το δοκιμάσετε μόνοι σας και να δείτε σε τι βαθμό αντιλαμβάνεστε τη λειτουργία του.

#program simulating a dice rolling

import random

repeat = True
while repeat:
    print('You rolled', random.randint(1,6))
    print('Do you want to roll again? Y/N')
    repeat = 'Y' in input()

Αν και είναι ιδιαίτερα απλό, έχει και κάποιες καινούργιες έννοιες τις οποίες θα δούμε στο επόμενο μάθημα· κάνει import ένα module, χρησιμοποιεί μια άγνωστη συνάρτηση, περιέχει επαναληπτικό βρόγχο, καθώς και μια boolean μεταβλητή. Επίσης, παρατηρούμε μια διαφορά στη στοίχιση του κώδικα.

Σας άρεσε το δεύτερο μάθημα για τον προγραμματισμό Python?

Δυσκολευτήκατε σε κάποιο σημείο ή υπάρχει κάτι που δεν ήταν κατανοητό? Γράψτε μας στα σχόλια αν αντιμετωπίσατε κάποιο πρόβλημα ή αν σας δημιουργήθηκε οποιαδήποτε απορία.

Για να δείτε όλα τα μαθήματα Python από την αρχή τους, αλλά και τα επόμενα, αρκεί να κάνετε κλικ εδώ.
Τα σχόλια του PCsteps έχουν μεταφερθεί στο Questions.pcsteps.gr. Αν έχετε απορίες για τη δημοσίευση ή οποιαδήποτε τεχνολογική ερώτηση, από προτάσεις αγορών μέχρι τεχνικά προβλήματα, γράψτε μας εκεί. Απαντάμε το αργότερο εντός 48 ωρών.

Οι Στήλες του PCsteps

FEATURED SALE ALERT 2
Οδηγοί Αγοράς
QuickSteps#223 - Τιμή Βενζίνης Στους Χάρτες Google, Δωρεάν HEVC codec, Αναφορές Instagram
QuickSteps
GamingSteps#202205014 - Τέλος Το FIFA Για Την EA, Νέο Silent Hill, Επικό Demo Της Unreal Engine 5
GamingSteps