Post Pic

Μαθαίνοντας Python – Μέρος 5ο

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

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

Στο τέλος του σημερινού οδηγού θα μπορούμε:

  • Να επεμβαίνουμε στην εκτέλεση των βρόγχων for, while, κλπ. χρησιμοποιώντας τα break, continue, else, pass.

Προαπαιτούμενα

Μαθαίνοντας Python:  Μέρος Ι, Μέρος  ΙΙ, Μέρος ΙΙΙ, Μερος IV

Πριν ξεκινήσουμε…

… θα ήθελα να επισημάνω ένα – δύο πρακτικά ζητήματα.

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

Μικρή περιγραφή του τι θέλουμε να επιτύχουμε (+ επιπλέον σχόλια)

Παράδειγμα κώδικα

Στο τέλος του αρχείου θα βρείτε συνημμένο ένα python script που περιέχει συγκεντρωμένα όλα τα παραδείγματα.

Για να τα χρησιμοποιήσετε, αντιγράφετε το εκάστοτε παράδειγμα σε ένα νέο αρχείο python και το εκτελείτε (βλ. Μαθαίνοντας Python – Μέρος 1ο ). Τα παραδείγματα είναι φτιαγμένα με τέτοιον τρόπο ώστε να τυπώνουν τα αποτελέσματα στην οθόνη ώστε να μπορείτε να πιστοποιήσετε εύκολα τη λειτουργικότητά τους. Για διευκόλυνσή σας έχουμε χωρίσει τα παραδείγματα με σχόλια που δίνουν μια μικρή περιγραφή του τι επιχειρούμε κάθε φορά.

Βεβαιωθείτε ότι δεν ξεχάσατε το μάτι της κουζίνας ανοικτό, ετοιμάστε μία κούπα καφέ ή τσάι, βάλτε απαλή μουσική και ξεκινάμε…

Η δήλωση break

Για όσους από εσάς γνωρίζουν C / C++ η λειτουργία της δήλωση break πρέπει να είναι προφανής (λειτουργεί με τον ίδιο ακριβώς τρόπο και στην Python). Τοποθετώντας μια δήλωση break σε κάποιο σημείο ενός βρόγχου (for ή while) επιβάλλεται στον Διερμηνευτή της Python να διακόψει την λειτουργία του πλησιέστερου βρόγχου και να εξέλθει από αυτόν.

for i in range(10):

    if i == 5:

        break

    print(i)

Όπως παρατηρείτε στην οθόνη των αποτελεσμάτων σας έχετε νούμερα μέχρι κι το 4. Αυτό συμβαίνει διότι μόλις ο Διερμηνευτής της Python συνάντησε τον αριθμό 5, η εντολή break διέκοψε το βρόγχο.

H δήλωση continue

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

for i in range(10):

    if i == 5:

        continue

    print(i)

Τρέχοντας το παραπάνω παράδειγμα θα διαπιστώσετε ότι στην οθόνη των αποτελεσμάτων σας εμφανίζονται όλοι οι αριθμοί εκτός του 5. Αυτό συμβαίνει διότι όταν ο βρόγχος φθάσει στον αριθμό 5 (έκτο βήμα του βρόγχου), αγνοεί, λόγω της continue την εντολή print(i) με αποτέλεσμα ο αριθμός 5 να μην τυπώνεται ποτέ.

Η δήλωση else (για έναν βρόγχο for)

Η εμφάνιση μιας δήλωσης else σε βρόγχους είναι κάτι καινούριο. Ενεργοποιείται σε έναν βρόγχο τύπου for όταν η λίστα αντικειμένων τελειώσει ή, αντίστοιχα, σε έναν βρόγχο τύπου while, όταν η συνθήκη γίνει ψευδής.

myCellar = ['apples', 'pork', 'cranberries', 'oil', 'wine', 'retsina']

productsInDemand = ['retsina', 'ouzo']

for demand in productsInDemand:

    for supply in myCellar:

        if demand == supply:

            print("we do have ", demand)

            break
else:

    print("we ran out of ", demand)

Ας δούμε ένα παράδειγμα που συνδυάζει τη χρήση break και else σε βρόγχους τύπου for. Στο παραπάνω παράδειγμα υποθέτουμε ότι έχουμε ένα κελάρι με προϊόντα. Το απεικονίζουμε με μια λίστα myCellar στην οποία είναι παρόντα μόνον όσα προϊόντα υπάρχουν (ανεξαρτήτου ποσότητας) στο κελάρι. Μια δεύτερη λίστα (productsInDemand) περιλαμβάνει προϊόντα που μας ζητά κάποιος και εμείς πρέπει να ψάξουμε αν είναι διαθέσιμα στο κελάρι.

Το εξωτερικό for loop διατρέχει τα προϊόντα που ζητήθηκαν και, για κάθε ένα ζητούμενο, το εσωτερικό for τσεκάρει αν το ζητούμενο προϊόν υπάρχει στο κελάρι. Αν βρεθεί, τυπώνεται μήνυμα επιτυχίας της αναζήτησης και ο εσωτερικός βρόγχος σταματά να εκτελείται. Στην περίπτωση που τα στοιχεία της λίστας που διατρέχει ο εσωτερικός βρόγχος (myCellar)  εξαντληθούν, εκτελούνται οι εντολές του else, δηλαδή τυπώνεται μήνυμα αποτυχίας.

H δήλωση pass

Η δήλωση pass, είναι μια εξαιρετικά ενδιαφέρουσα δήλωση, ίσως η πιο χρήσιμη για έναν προγραμματιστή. Όταν ο Διερμηνευτής τη συναντήσει, δεν κάνει απολύτως τίποτε.

while True:

    pass

Ο συγκεκριμένος κώδικας (υπάρχει και στο παράδειγμα του σημερινού οδηγού) θα προκαλέσει έναν ατέρμονα βρόγχο (δηλ έναν βρόγχο που θα απασχολεί αιώνια τον διερμηνευτή σας). Μην αγχωθείτε, ανά πάσα στιγμή τον διακόπτετε πατώντας την ακολουθία πλήκτρων ctrl + c

Γιατί είναι κάτι τέτοιο χρήσιμο; Θα αναρωτηθείτε εύλογα. Σκεφτείτε ότι έχετε να κατασκευάσετε ένα μεγάλο πρόγραμμα κάνοντας χρήση αντικειμενοστρεφούς σχεδίασης. Ο αντικειμενοστρέφής προγραμματισμός, όπως ίσως να ξέρετε, κάνει χρήση αντικειμένων (θα δούμε αναλυτικά το θέμα των αντικειμένων σε μεταγενέστερους οδηγούς). Ας υποθέσουμε λοιπόν ότι σχεδιάζεται ένα σκελετό του προγράμματός σας που αποτελείτε από τα αντικείμενα vehicle, car, human.

Κάνοντας αυτό:

class Vehicle:

    pass

class Car:

    pass

class Human:

    pass

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

Σκεφτείτε το και θα δείτε ότι θα κάνει τη ζωή σας ευκολότερη…

Mini Διαγωνισμός

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

  • Υποθέστε ότι έχουμε να κάνουμε με ονόματα στα λατινικά (John, Mary, Aristides, Isocrates, κλπ.), όχι Greeklish (Kwstas, Evgenia)
  • Το όνομα μπορεί να περιέχει κεφαλαίους και πεζούς χαρακτήρες (Christine, Apostolos)
  • Τα φωνήεντα στο αγγλικό αλφάβητο είναι τα a, o, e, i, u, y
  • Να γίνει χρήση break και else δηλώσεων

Μπορείτε να στείλετε τις απαντήσεις σας στο προσωπικό μου email (akritiko@gmail.com) με θέμα «GreekTuts: Διαγωνισμός Python». Οι 3 καλύτερες λύσεις (που δουλεύουν) μέχρι τέλος Δεκεμβρίου κερδίζουν από μια Basic συνδρομή ενός μηνός για την ιστοσελίδα μας.

Περιμένω τις σκέψεις σας… Μέχρι την επόμενη φορά,

να είστε καλά και να φροντίζεται τον εαυτό σας.

Μπορείτε να κατεβάσετε τα αρχεία του βοηθήματος εδώ

download

Κανένα Σχόλιο

Αφήστε ένα σχόλιο

* Το όνομα σας, το Email, και το σχόλιο είναι απαιτούμενα

Γραφτείτε στις Email Ενημερώσεις

Εισάγετε το email σας:

Powered by FeedBurner

Log In

Register

Lost your Password?

Tag Cloud

Οι Φίλοι μας στο Twitter

gkapraras
tophostGR
jsclavos
gegenos
papaki
FORADA
lennondtps
wdfgr
nfountas
zouri9
Th3Ag3nt
ThodorisV
thevoyager
techfansGR
wp2blog
St0iK
andreas_m68
herath72
silve992
Dimitraakis
kymagr
papano
amorphis_
nikos171984
kalliophhhh
g_argyrakis
gstam78
GamesHellasGR
dimsim7
gkatsampirhs
giorgioret
Zoitsa_2010
ultrathunder
Weird_AL
splusgr
payne4life
fotisk
bartvii
LewisHowes
Chrysanthospro
Serderides
ideodoxeio
hambos227
BeBestT
gamosgamos
Φίλοι: 271 Μας ακολουθούν: 221

To GreekTuts Στο Διαδύκτιο

Bookmark & Share

Γίνε Συνδρομητής Στο GreekTuts


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

Γράψτε Για Το GreekTuts


Θέλετε και εσείς να γράψετε άρθρα για το GreekTuts; Διαβάστε περισσότερα εδώ. Οποιοσδήποτε μπορεί να στείλει, γι'αυτό αδράξτε την ευκαιρία και στείλτε μας και εσείς.