8. Εντολές επανάληψης for και while

Δημιουργία ακολουθίας αντικειμένων με την εντολή range( )

Για την δημιουργία βρόγχων χρησιμοποιούμε την συνάρτηση range( ). Η συνάρτηση range( ) δημιουργεί ακολουθίες αριθμών και έχει την ακόλουθη σύνταξη:

range(αρχή, τέλος, βήμα)

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

range(τέλος)  Δίνει μια ακολουθία αριθμών από το 0 έως και την τιμή «τέλος-1»
range(αρχή, τέλος)  Δίνει μια ακολουθία αριθμών από την τιμή «αρχή» μέχρι την τιμή «τέλος-1»
range(αρχή, τέλος, βήμα) Δίνει μια ακολουθία αριθμών από την τιμή «αρχή» μέχρι την τιμή «τέλος-1» και με βήμα την τιμή «βήμα»

Η εντολή δημιουργίας βρόγχων for

Χρησιμοποιούμε την εντολή for για να επαναλάβουμε ένα βρόγχο εντολών για κάθε ένα αντικείμενο μιας ακολουθίας τιμών. Η σύνταξη της εντολής for είναι η ακόλουθη:

for μεταβλητή_ελεγχου in ακολουθία:
        ομάδα εντολών
else:
        ομάδα εντολών

Κατά την εκτέλεση της εντολής for εκτελείται η ομάδα εντολών για κάθε μια τιμή της ακολουθίας. Όταν η επανάληψη ολοκληρωθεί εκτελείται η ομάδα εντολών που ακολουθεί το else. Όταν η έξοδος από την for γίνει με την εντολή break, η ομάδα εντολών που ακολουθεί το else δεν εκτελείται.

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

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

Παράδειγμα: Να γραφεί ένα πρόγραμμα Python που να τυπώνει ένα – ένα τους χαρακτήρες μιας συμβολοσειράς.

s = 'YIANNIS'
for ch in s:
     print(ch)
else:
     print('TELOS')

Η Python δίνει την έξοδο:
Υ
Ι
Α
Ν
Ν
I
S
TELOS

Η εντολή break

Με την εντολή break προκαλούμε την διακοπή της επανάληψης βρόγχου σε μια εντολή επανάληψης, ακόμη κι αν η συνθήκη ελέγχου δεν έχει γίνει False ή δεν έχουν εξαντληθεί όλα τα στοιχεία της ακολουθίας τιμών. Αν ένας βρόγχος διακοπεί με αυτό τον τρόπο, καμία εντολή του τμήματος else δεν εκτελείται.

Παράδειγμα: Μελετήστε το ακόλουθο πρόγραμμα Python

num = 0
for num in range(10):
      num=num+1
      if num ==4:
               break
      print('Number is %d'%num)
print('Out of loop')

Θα εμφανίσει την έξοδο:

Number is 1
Number is 2
Number is 3
Out of loop

Η εντολή continue

Η εντολή continue χρησιμοποιείται όταν θέλουμε να παραλείψουμε τις υπόλοιπες εντολές στην τρέχον επανάληψη του βρόγχου και να συνεχίσουμε με την επόμενη επανάληψη του βρόγχου. Για παράδειγμα το επόμενο πρόγραμμα δεν ολοκληρώνεται για την τιμή num=2 και συνεχίζει για num=3

num = 0
for num in range(5):
     num = num+1
     if num == 2:
          continue
     print('Number is %d'%num)
print('Out of loop')

Δίνει την ακόλουθη έξοδο

Number is 1
Number is 3
Number is 4
Number is 5
Out of loop

Η εντολή pass

Η εντολή pass χρησιμοποιείται όταν μια εντολή χρειάζεται να ολοκληρωθεί συντακτικά αλλά δεν θέλουμε να εκτελεστεί κάποια εντολή ή ομάδα εντολών. Η εντολή pass είναι μια null εντολή και τίποτα δεν συμβαίνει όταν εκτελείται. Ακολουθεί ένα παράδειγμα

for ch in 'YIANNIS':
  if ch == 'A':
    pass
    print('Passed')
  print(ch)

Η έξοδος που δίνει είναι

Υ
Ι
Passed
Α
Ν
Ν
Ι
S

Η εντολή while

Αντίθετα από την εντολή for ή εντολή επανάληψης while προκαλεί την εκτέλεση του βρόγχου εφόσον μια συνθήκη ικανοποιείται. Η εντολή while υπολογίζει την τιμή της συνθήκης μετά τον όρο while. Αν αυτή είναι True εκτελείται η ομάδα εντολών που ακολουθεί, αλλιώς αν είναι False τότε η ομάδα εντολών που ακολουθεί το while αγνοείται και εκτελείται η ομάδα εντολών μετά το else. Η ομάδα εντολών που ακολουθεί το else δεν εκτελείται όταν η έξοδος από το while γίνει με την εντολή break.

Η συνθήκη είναι μια λογική παράσταση η οποία μπορεί να υπολογιστεί και να πάρει μια από τις τιμές True ή False. Η επανάληψη συνεχίζεται όσο η συνθήκη είναι True. Αν κάποια στιγμή η συνθήκη αποτιμηθεί σε False τότε σταματά η επανάληψη.

Παράδειγμα: Μελετήστε το ακόλουθο πρόγραμμα:

k = 0
while k<12:
   k=k+1
   print(k, end=' ')
print('\nΤέλος επανάληψης')

Η έξοδος του προγράμματος είναι

1 2 3 4 5 6 7 8 9 10 11 12
Τέλος επανάληψης

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