Ο βρόχος “for” χρησιμοποιείται για τη διατροχική επανάληψη ενός αντικειμένου που περιέχει πολλά στοιχεία, όπως μια λίστα, ένα πλειάδιο, ένα λεξικό, ένα σύνολο ή μια συμβολοσειρά.
Με τον βρόχο “for” μπορούμε να εκτελέσουμε μια σειρά εντολών μία φορά για κάθε στοιχείο στο αντικείμενο που περνάμε στον βρόχο.
Ένα παράδειγμα:
fruits = ["apple", "banana", "cherry"] for x in fruits: print(x)
Η έξοδος θα είναι:
apple banana cherry
Στο παραπάνω παράδειγμα, το αντικείμενο που περνάμε στον βρόχο είναι μια λίστα με φρούτα και κάθε στοιχείο της λίστας τυπώνεται μία φορά.
Ο βρόχος “for” δεν απαιτεί την εκ των προτέρων ορισμένη μεταβλητή δείκτη.
Αυτό σημαίνει ότι δεν χρειάζεται να δηλώσουμε μια μεταβλητή που θα χρησιμοποιηθεί ως δείκτης στο στοιχείο του αντικειμένου που διατρέχεται ο βρόχος, αφού η Python ξέρει πώς να το κάνει μόνη της.
Ένα παράδειγμα:
fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)
Η έξοδος θα είναι η ίδια με πριν:
apple banana cherry
Στο παραπάνω παράδειγμα, η Python αναλαμβάνει να διατρέξει τη λίστα “fruits” και να αντιστοιχίσει κάθε στοιχείο της στη μεταβλητή “fruit”. Κάθε φορά που εκτελείται η εντολή “print”, τυπώνεται το στοιχείο που βρίσκεται στη μεταβλητή “fruit”.
[adinserter block=”2″]
Οι συμβολοσειρές είναι επίσης αντικείμενα που μπορούν να διατρέξουν με τη χρήση του βρόχου “for”, καθώς περιέχουν μια ακολουθία από χαρακτήρες.
Ένα παράδειγμα:
my_string = "Hello, World!" for char in my_string: print(char)
Η έξοδος θα είναι η εξής:
H e l l o , W o r l d !
Στο παραπάνω παράδειγμα, η Python διατρέχει τη συμβολοσειρά “my_string” και αντιστοιχίζει κάθε χαρακτήρα στη μεταβλητή “char”. Κάθε φορά που εκτελείται η εντολή “print”, τυπώνεται ο χαρακτήρας που βρίσκεται στη μεταβλητή “char”.
Με την εντολή “break” μπορούμε να σταματήσουμε τον βρόχο πριν ολοκληρωθεί η διάσχιση όλων των στοιχείων:
Ένα παράδειγμα:
fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit) if fruit == "banana": break
Η έξοδος θα είναι η εξής:
apple banana
Στο παραπάνω παράδειγμα, η Python διατρέχει τη λίστα “fruits” και αντιστοιχίζει κάθε στοιχείο στη μεταβλητή “fruit”. Κάθε φορά που εκτελείται η εντολή “print”, τυπώνεται το τρέχον στοιχείο της λίστας. Όταν φτάνουμε στο στοιχείο “banana”, εκτελείται η εντολή “break” και ο βρόχος διακόπτεται.
Με την εντολή “continue” μπορούμε να σταματήσουμε την τρέχουσα επανάληψη του βρόχου και να συνεχίσουμε με την επόμενη:
Ένα παράδειγμα:
fruits = ["apple", "banana", "cherry"] for fruit in fruits: if fruit == "banana": continue print(fruit)
Η έξοδος θα είναι η εξής:
apple cherry
Στο παραπάνω παράδειγμα, όταν η Python φτάσει στο στοιχείο “banana”, εκτελείται η εντολή “continue” και παραλείπει το στοιχείο αυτό από τον βρόχο. Συνεχίζει να διατρέχει τη λίστα και τυπώνει τα υπόλοιπα στοιχεία.
Για να επαναλάβουμε μια σειρά κώδικα για ένα συγκεκριμένο αριθμό φορών, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση range().
[adinserter block=”3″]
Η συνάρτηση range() επιστρέφει μια ακολουθία αριθμών, ξεκινώντας από το 0 αν δεν δηλώσουμε διαφορετικά, αυξάνονται κατά 1 (εκτός αν δηλώσουμε άλλο βήμα) και σταματάνε σε έναν καθορισμένο αριθμό.
Μερικά παραδείγματα:
# Επανάληψη 5 φορές for i in range(5): print(i) # Επανάληψη 2 έως 5 for i in range(2, 6): print(i) # Επανάληψη αυξάνοντας κατά 2 for i in range(0, 10, 2): print(i)
Η έξοδος θα είναι η εξής:
0 1 2 3 4 2 3 4 5 0 2 4 6 8
Στο πρώτο παράδειγμα, η range() επιστρέφει τους αριθμούς 0, 1, 2, 3, 4 και η Python εκτελεί την εντολή print() για κάθε έναν από αυτούς.
Στο δεύτερο παράδειγμα, η range() επιστρέφει τους αριθμούς 2, 3, 4, 5 και η Python εκτελεί την εντολή print() για κάθε έναν από αυτούς.
Στο τρίτο παράδειγμα, η range() επιστρέφει τους αριθμούς 0, 2, 4, 6, 8 και η Python εκτελεί την εντολή print() για κάθε έναν από αυτούς.
Η συνάρτηση range() έχει ως προεπιλεγμένη τιμή το 0 ως αρχική τιμή, ωστόσο είναι δυνατό να καθοριστεί η αρχική τιμή προσθέτοντας ένα παράμετρο: range(2, 6), που σημαίνει τιμές από το 2 έως το 6 (αλλά όχι συμπεριλαμβανομένου του 6):
Παράδειγμα:
for x in range(2, 6): print(x)
Αποτέλεσμα:
2 3 4 5
Η συνάρτηση range() έχει ως προεπιλεγμένη τιμή το 1 ως βήμα αύξησης, ωστόσο είναι δυνατό να καθοριστεί το βήμα προσθέτοντας μια τρίτη παράμετρο: range(2, 30, 3), που σημαίνει τιμές από το 2 έως το 30, αυξάνοντας τον αριθμό κατά 3 κάθε φορά:
Παράδειγμα:
for x in range(2, 30, 3): print(x)
Αποτέλεσμα:
2 5 8 11 14 17 20 23 26 29
Το λεκτικό “else” σε ένα for loop καθορίζει ένα τμήμα κώδικα που θα εκτελεστεί όταν η επανάληψη ολοκληρωθεί. Στην ουσία, αυτός ο κώδικας εκτελείται ακόμη και αν η επανάληψη έχει διακοπεί πρόωρα από έναν βρόχο break. Αντίθετα, αν η επανάληψη ολοκληρωθεί κανονικά, τότε ο κώδικας του else θα εκτελεστεί μετά το τέλος της επανάληψης.
Παράδειγμα:
Να εμφανιστούν όλα τα αριθμά από τη λίστα με τους παραπάνω από 5, και στο τέλος να εμφανιστεί το μήνυμα “Τέλος λίστας”.
numbers = [2, 3, 5, 8, 10] for x in numbers: if x <= 5: continue print(x) else: print("Τέλος λίστας")
Αυτό θα εμφανίσει:
8 10 Τέλος λίστας
Παράδειγμα: Εκτυπώστε όλους τους αριθμούς από το 8 έως το 13, και εκτυπώστε ένα μήνυμα όταν ο βρόχος έχει τελειώσει.
for x in range(8, 14): print(x) else: print("The loop has ended!")
Το αποτέλεσμα θα είναι:
8 9 10 11 12 13 The loop has ended!
Στο παρακάτω παράδειγμα, όταν η μεταβλητή x γίνει ίση με 9, ο κώδικας θα σταματήσει την εκτέλεση της επανάληψης και θα εκτυπωθεί το μήνυμα “Loop has been broken” μετά από την επανάληψη. Αυτό συμβαίνει γιατί το break statement διακόπτει την εκτέλεση της επανάληψης όταν η συνθήκη if είναι αληθής και η τιμή της μεταβλητής x είναι ίση με 9. Σε αντίθετη περίπτωση, ολοκληρώνεται η εκτέλεση της επανάληψης και εκτελείται το else block, εκτυπώνοντας το μήνυμα “Loop completed normally”.
[adinserter block=”4″]
Παράδειγμα:
for x in range(8, 14): print(x) if x == 9: break else: print("Loop completed normally") print("Loop has been broken")
Αποτέλεσμα:
8 9 Loop has been broken
Μια εμφωλευμένη επανάληψη είναι μια επανάληψη μέσα σε μια άλλη επανάληψη. Η “εσωτερική επανάληψη” θα εκτελεστεί μια φορά για κάθε επανάληψη της “εξωτερικής επανάληψης”. Παράδειγμα στην Python:
fruits = ["apple", "banana", "cherry"] adj = ["red", "big", "tasty"] for x in fruits: for y in adj: print(y, x)
Αυτό το παράδειγμα θα εκτυπώσει τα εξής:
red apple big apple tasty apple red banana big banana tasty banana red cherry big cherry tasty cherry
Οι for loops δεν μπορούν να είναι κενοί, αλλά αν για κάποιο λόγο έχετε ένα for loop χωρίς περιεχόμενο, βάλτε τη δήλωση pass για να αποφύγετε το να λάβετε ένα σφάλμα.
Παράδειγμα:
fruits = ["apple", "banana", "cherry"] for x in fruits: pass
Στο παραπάνω παράδειγμα, το loop θα εκτελεστεί κανονικά, αλλά δεν θα γίνει τίποτα καθώς η δήλωση pass δεν κάνει τίποτα.