Python

ΕΝΟΤΗΤΑ 11 - For Loops

image description

Στο σημερινό δωρεάν μάθημα Python, θα συνεχίσουμε την αναφορά μας στα loops και πιο συγκεκριμένα θα μιλήσουμε για το for loop. Ο λόγος που χρειαζόμαστε να έχουμε δύο διαφορετικά είδη loop είναι γιατί ενώ το while loop εκτελείται βασιζόμενο σε μια (ή και περισσότερες συνθήκες), το for loop βασίζεται σε συγκεκριμένο αριθμό επαναλήψεων που είναι γνωστός πριν καν γράψουμε τον κώδικα για το for loop. Οπότε, θα μπορούσαμε να πούμε σαν γενικότερο κανόνα ότι, χρησιμοποιούμε το while loop όταν δεν γνωρίζουμε τον αριθμό των επαναλήψεων ενώ χρησιμοποιούμε το for loop εάν μας είναι γνωστός ο αριθμός των επαναλήψεων.

Ο κανόνας είναι τόσο απλός όσο ακούγεται. Ας δούμε λοιπόν ένα απλό παράδειγμα για να εξοικειωθούμε και με το συντακτικό του for loop.

App.py

for count in range(5):
    print("I am the number:" ,count)

Output

I am the number: 0
I am the number: 1
I am the number: 2
I am the number: 3
I am the number: 4

Το for loop ορίζεται από την λέξη κλειδί for, μια τοπική μεταβλητή που η τιμή της θα μεταβάλλεται και το εύρος των τιμών για τις οποίες θα τρέξει το for loop. Η μεταβλητή count είναι τοπική μεταβλητή στο for loop γιατί δεν την έχουμε ορίσει πουθενά αλλού στο πρόγραμμα μας. Κατά συνέπεια δεν μπορεί να χρησιμοποιηθεί έξω από το loop. Ο λόγος που υπάρχει είναι για να δέχεται μια προς μια τις τιμές για τις οποίες τρέχει το for loop έτσι ώστε να έχουμε τον απόλυτο έλεγχο και στον αριθμό των επαναλήψεων αλλά και στις αριθμητικές πράξεις που γίνονται μέσα στο for loop όπως θα δούμε λίγο αργότερα στην ενότητα μας.

Με το range( ) ορίζουμε το εύρος των αριθμών που θέλουμε να εκτελεστούν. Εδώ πρέπει να προσέξετε το γεγονός ότι η αρίθμηση ξεκινάει από το μηδέν και τελειώνει στο 4. Στο σύνολο τους είναι 5 αριθμοί, όμως στην αρίθμηση θα υπολογίζεται πάντα -1. Αν θέλουμε, μπορούμε να ορίσουμε τον αριθμό από τον οποίο θα ξεκινήσει η αρίθμηση με τον εξής τρόπο:

App.py

for count in range(1, 5):
    print("I am the number:" ,count)

Output

I am the number: 1
I am the number: 2
I am the number: 3
I am the number: 4

Μας αρέσει γενικότερα να παίζουμε με την range( ) function γιατί μπορούμε να ορίσουμε εκτός από τον αρχικό και τελικό αριθμό, και έναν τρίτο αριθμό που ορίζει κατά πόσο θέλουμε να αυξάνουμε τους αριθμούς. Ας δούμε όμως ένα ακόμα παράδειγμα.

App.py

low = int(input("Please enter the lower bound: "))
upper = int(input("Please enter the upper bound: "))

for count in range(low, upper, 2):
    print("I am the number:", count)

Output

Please enter the lower bound: 1
Please enter the upper bound: 10
I am the number: 1
I am the number: 3
I am the number: 5
I am the number: 7
I am the number: 9

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

App.py

for count in range(10, 0, -1):
    print("I am the number:", count)

Output

I am the number: 10
I am the number: 9
I am the number: 8
I am the number: 7
I am the number: 6
I am the number: 5
I am the number: 4
I am the number: 3
I am the number: 2
I am the number: 1

Στην Python, θα μπορούσαμε να περάσουμε και μια λίστα από μεμονωμένες τιμές αντί για εύρος τιμών. Την λίστα την αντιπροσωπεύουμε με brackets ( [ ] ) και οι τιμές χωρίζονται με κόμμα.

App.py

for count in [1,4,5,7,9]:
    print("I am the number:", count)

Output

I am the number: 1
I am the number: 4
I am the number: 5
I am the number: 7
I am the number: 9
		

Φυσικά η λίστα δεν περιορίζεται αποκλειστικά και μόνο σε αριθμούς αλλά μπορεί να επεκταθεί σε όλα τα data types όπως strings.

App.py

for color in ['red', 'blue', 'yellow']:
    print("I am the color:", color)

Output

I am the color: red
I am the color: blue
I am the color: yellow

Πριν κλείσουμε αυτή την ενότητα έχουμε να καλύψουμε ακόμα τρεις πολύ σημαντικές εντολές που συνήθως συνδυάζονται με το for loop. Αυτές είναι οι: continue, break, και pass. Ας τις δούμε μια μια ξεκινώντας από την continue.

Η ιδιότητα του continue είναι να παραβλέπει την τρέχουσα τιμή του loop και να αφήνει το loop να συνεχίσει στην επόμενη τιμή. Φυσικά η παράβλεψη που κάνει στηρίζεται σε κάποια συνθήκη που έχουμε ορίσει. Ας δούμε ένα απλό παράδειγμα:

App.py

for num in range(5):
    if num == 4:
        continue
    print("I am the number:", num)

Output

I am the number: 0
I am the number: 1
I am the number: 2
I am the number: 3

Μέσα στο for loop έχουμε ορίσει μια if συνθήκη η οποία ελέγχει αν η μεταβλητή num υπάρχει πιθανότητα να γίνει ίση με τον αριθμό τέσσερα. Αν γίνει, τότε η if συνθήκη θα είναι True και θα τρέξει το continue το οποίο αυτό που κάνει είναι να στέλνει την εκτέλεση πίσω στην αρχή του loop παραβλέποντας την τρέχουσα τιμή.

Το break τώρα, είναι πιο απόλυτο. Όταν ενεργοποιηθεί σαν επιλογή μέσα σε ένα for loop, σταματάει η εκτέλεση του loop και αναγκάζει την Python να συνεχίσει με τον υπόλοιπο κώδικα του προγράμματος εκτός loop.

App.py

for num in range(5):
    if num == 4:
        break
    print("I am the number:", num)

Output

I am the number: 0
I am the number: 1
I am the number: 2
I am the number: 3

Τέλος, το pass αντιπροσωπεύει τον κώδικα που ακόμα δεν έχουμε γράψει στο πρόγραμμα μας. Επειδή όμως είναι επίσημη εντολή της Python, το πρόγραμμα μας δεν σταματάει να λειτουργεί, απλά δεν έχει καμία χρήσιμη λειτουργία να παρουσιάσει. Το ποιο κάτω for loop λειτουργεί αλλά δεν έχει τίποτα να παρουσιάσει στην οθόνη, γιατί ακόμα δεν είμαστε σίγουροι για τον κώδικα που θα γράψουμε εκεί. Είναι μια πολύ χρήσιμη στρατηγική κυρίως σε functions να χρησιμοποιούμε το pass, και αφού δημιουργήσουμε το σκελετό της λογική του προγράμματος, να γυρίσουμε πίσω και να αντικαταστήσουμε το pass με κανονικό κώδικα.

App.py

for num in range(5):
    # TODO: add code to print number
    pass

Output

#There is no output

ΕΙΣΗΓΗΤΗΣ

Merry Jhonson

Μιχάλης Κασάπογλου

Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.

loader