PYTHON ΕΝΟΤΗΤΑ 11 – For Loops

 

Δωρεάν μαθήματα Python

ΕΙΣΑΓΩΓΗ

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

FOR LOOP SYNTAX

Για να μπορέσουμε να δημιουργήσουμε ένα for loop θα πρέπει να το δομήσουμε ως εξής:

for variable in [value1, value2, etc.]:

            statement

            statement

Η λέξη κλειδί for ορίζει την αρχή του for loop. Αμέσως μετά ορίζουμε μια μεταβλητή η οποία θα δεχτεί κάθε μια από τις τιμές για τις οποίες θα εκτελεστεί το for loop. Οι τιμές αυτές ορίζονται μετά από την λέξη in.

Μια απλή εξήγηση της λειτουργίας του for loop θα μπορούσε να είναι η εξής: Για κάθε μια από τις τιμές που έχουμε ορίσει μετά το in, εκτέλεσε τον κώδικα που περιγράφουν τα statements. Για να εκτελεστεί μεμονωμένα κάθε τιμή ξεχωριστά, η Python αναθέτει προσωρινά την τιμή στην μεταβλητή που έχει οριστεί μετά την λέξη for.

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

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

app.py

for letter in "GroundOfCode":
    print(letter)

Output

G
r
o
u
n
d
O
f
C
o
d
e


USING THE RANGE( ) FUNCTION

Η Python έχει έναν εύκολο τρόπο να δημιουργεί  λίστα αριθμών χρησιμοποιώντας  την range( ) function. Σαν ελάχιστη τιμή, πρέπει να περάσουμε στη range( ) το εύρος των αριθμών που θέλουμε να δημιουργήσει. Εδώ πρέπει να προσέξουμε λίγο για το λειτουργεί η range( ). Ας πούμε για παράδειγμα ότι καλούμε την function σαν range(5). Αυτό σημαίνει ότι θα δημιουργηθούν πέντε αριθμοί από το 0 μέχρι και το 4.  

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

Με το range( ) μπορούμε επίσης να ορίσουμε και τον αριθμό από τον οποίο θα ξεκινήσει η αρίθμηση.

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

Μπορούμε επίσης να ορίσουμε και μια τρίτη παράμετρο που ορίζει κατά πόσο θέλουμε να αυξάνουμε τους αριθμούς.

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: 2
Please enter the upper bound: 9
I am the number: 2
I am the number: 4
I am the number: 6
I am the number: 8

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

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


ITERABLE OBJECTS

Σαν iterable objects γενικότερα ορίζουμε στην Python εκείνα τα αντικείμενα επάνω στα οποία μπορούμε να εκτελέσουμε ένα for loop. Στην αρχή του μαθήματος είδαμε πως εκτελέσαμε το for loop σε ένα string. Το string θεωρείται iterable object. Ένα ακόμα iterable object είναι και η λίστα. Επίσημα θα μιλήσουμε για λίστες από το επόμενο μάθημα αλλά νομίζω ότι δεν είναι καθόλου δύσκολο να καταλάβετε το παρακάτω παράδειγμα στο οποίο εκτελούμε ένα for loop σε μια λίστα από τιμές.

app.py

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

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

Μέσα σε μια λίστα μπορούμε να έχουμε εκτός από αριθμούς και 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

CONTINUE, BREAK, PASS

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

Η ιδιότητα του continue είναι να παραβλέπει την τρέχουσα τιμή του loop βασιζόμενο σε κάποια συνθήκη που έχουμε καθορίσει.

app.py

for num in range(8):
    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
I am the number: 5
I am the number: 6
I am the number: 7


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

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

app.py

for num in range(8):
    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 later to print number
    pass

Output


Process finished with exit code 0


Πριν κλείσουμε το σημερινό δωρεάν μάθημα Python ας δούμε ένα ολοκληρωμένο παράδειγμα που χρησιμοποιεί nested loops δηλαδή loop μέσα σε loop. Το συγκεκριμένο πρόγραμμα ζητάει από τον χρήστη να δηλώσει τον αριθμό των μαθητών και μετά τον αριθμό διαγωνισμάτων ανά μαθητή για να υπολογίσει τον μέσο όρο της βαθμολογίας του.

app.py

num_students = int(input("How many students do you have?: "))

num_test_scores = int(input("How many test scores per student?: "))

for student in range(num_students):
    total = 0.0
    print(f"Student number {student + 1}")
    print('---------------------------')

    for test_num in range(num_test_scores):
        print(f"Test number {test_num + 1}", end='')
        score = float(input(': '))
        total += score

    average = total / num_test_scores
    print(f"The average for student  " +
          f"number {student + 1} is: {average:.1f}")
    print()

Output

How many students do you have?: 3
How many test scores per student?: 2
Student number 1
---------------------------
Test number 1: 89
Test number 2: 98
The average for student  number 1 is: 93.5

Student number 2
---------------------------
Test number 1: 78
Test number 2: 78
The average for student  number 2 is: 78.0

Student number 3
---------------------------
Test number 1: 56
Test number 2: 67
The average for student  number 3 is: 61.5


Μην ξεχάσετε να κάνετε ένα μικρό donation έτσι ώστε αυτό το site να μεγαλώσει ακόμα πιο πολύ και να αποκτήσει περισσότερες δυνατότητες online παράδοσης δωρεάν μαθημάτων.

full-width

Post a Comment

0 Comments