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

Οι βρόχοι είναι ένα από τα κύρια εργαλεία οποιασδήποτε γλώσσας. Υπάρχουν δύο βασικοί βρόχοι στην Python, ένας εκ των οποίων είναι while. Σκεφτείτε το, και επίσης για καλύτερη κατανόηση της εικόνας, ένα ακόμη. Πράγματι, σε σύγκριση με κάτι παρόμοιο, είναι πολύ πιο εύκολο να καταλάβει κανείς οποιοδήποτε υλικό, έτσι δεν είναι;

Η έννοια του κύκλου

Ένας βρόχος απαιτείται όταν μια συγκεκριμένη ενέργεια πρέπει να εκτελεστεί πολλές φορές. Αυτό είναι πολύ απλοϊκό, γιατί στην πραγματικότητα το εύρος των εφαρμογών για τους κύκλους είναι πολύ μεγαλύτερο. Υπάρχουν δύο κύριοι τύποι βρόχων στην Python: for και while. Το πιο δημοφιλές είναι για.

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

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

Κύκλος Για

Ο βρόχος For δεν είναι μετρητής, όπως σε πολλές άλλες γλώσσες. Το καθήκον του είναι να απαριθμήσει μια ορισμένη ακολουθία τιμών. Τι σημαίνει αυτό? Ας πούμε ότι έχουμε μια λίστα στοιχείων. Πρώτον, ο βρόχος παίρνει το πρώτο, το δεύτερο, το τρίτο και ούτω καθεξής.

Το πλεονέκτημα αυτού του βρόχου στην Python είναι ότι δεν χρειάζεται να προσδιορίσετε το δείκτη του στοιχείου για να ξέρετε πότε πρέπει να βγείτε από τον βρόχο. Όλα θα γίνουν αυτόματα.

>>> spisok = [10, 40, 20, 30]

>>> για στοιχείο στο spisok:

… εκτύπωση (στοιχείο + 2)

...

12

42

22

32

Στο παράδειγμά μας, χρησιμοποιήσαμε τη μεταβλητή στοιχείο μετά την εντολή για. Γενικά, το όνομα μπορεί να είναι οτιδήποτε. Για παράδειγμα, ένας δημοφιλής προσδιορισμός είναι i. Και με κάθε επανάληψη, σε αυτή τη μεταβλητή θα εκχωρείται ένα συγκεκριμένο αντικείμενο από τη λίστα, το οποίο ονομάσαμε την κατάλληλη λέξη.

Στην περίπτωσή μας, η λίστα είναι μια ακολουθία αριθμών 10,40,20,30. Σε κάθε επανάληψη, η αντίστοιχη τιμή εμφανίζεται στη μεταβλητή. Για παράδειγμα, μόλις ξεκινήσει ο βρόχος, η μεταβλητή στοιχείο εκχωρείται η τιμή 10. Στην επόμενη επανάληψη, το δέκα μετατρέπεται στον αριθμό 40, την τρίτη φορά στον αριθμό 20 και, τέλος, στην τελευταία επανάληψη του βρόχου, μετατρέπεται σε 30.

Το σήμα για το τέλος του κύκλου είναι το τέλος των στοιχείων στη λίστα.

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

>>> spisok = [1,2,3,4,5]

Ή χρησιμοποιήστε τη λειτουργία len (), για να καθορίσετε το μήκος της λίστας. Αλλά σε αυτή την περίπτωση είναι καλύτερο να χρησιμοποιήσετε έναν βρόχο ενώ, γιατί δεν χρειάζεται να χρησιμοποιήσετε μεταβλητή.

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

Ενώ βρόχος

Σε αντίθεση με τον κύκλο for, το οποίο απλώς επαναλαμβάνει πάνω από τις τιμές της ακολουθίας, του βρόχου ενώ έχει περισσότερες χρήσεις. Το όνομα αυτού του τύπου κύκλων μεταφράζεται ως "ακόμα". Δηλαδή «μέχρι».

Αυτός είναι ένας καθολικός βρόχος που βρίσκεται σε όλες τις γλώσσες προγραμματισμού. Και κατά κάποιο τρόπο μοιάζει με τελεστή υπό όρους πουρνάρι, η οποία διενεργεί έλεγχο για να διαπιστώσει εάν πληρούται μια συγκεκριμένη προϋπόθεση. Μόνο σε αντίθεση με τον τελεστή υπό όρους, ενώ εκτελεί τον έλεγχο σε κάθε επανάληψη, όχι μόνο μία φορά. Και μόνο αν η συνθήκη είναι false, ο βρόχος τελειώνει και εκτελείται η εντολή που τον ακολουθεί. Με απλά λόγια, αν δεν ισχύει πλέον η κατάσταση στην οποία εργάζεται.

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

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

Κύκλος ενώ μπορεί να οδηγήσει σε δύο εξαιρέσεις:

  1. Εάν στην αρχή του βρόχου η λογική έκφραση δεν επιστρέψει true, τότε απλά δεν ξεκινά, έχοντας ολοκληρωθεί πριν από την εκτέλεση. Σε γενικές γραμμές, αυτή η κατάσταση είναι φυσιολογική, επειδή υπό ορισμένες συνθήκες, η εφαρμογή ενδέχεται να μην προβλέπει την παρουσία εκφράσεων στο σώμα του βρόχου.
  2. Εάν η έκφραση είναι πάντα αληθής, αυτό μπορεί να οδηγήσει σε βρόχο. Δηλαδή στο ατελείωτο scrolling του κύκλου. Επομένως, σε τέτοια προγράμματα, θα πρέπει πάντα να υπάρχει μια δήλωση εξόδου από τον βρόχο ή το πρόγραμμα. Ωστόσο, αυτή η κατάσταση θα προκύψει εάν το πρόγραμμα ήταν σε θέση να προσδιορίσει την αλήθεια ή την ανακρίβεια μιας συγκεκριμένης συνθήκης. Εάν δεν το έκανε αυτό, τότε επιστρέφεται ένα σφάλμα με τον τερματισμό του προγράμματος. Ή μπορείτε να χειριστείτε το σφάλμα και, στη συνέχεια, εάν παρουσιαστεί, θα εκτελεστεί συγκεκριμένος κώδικας.

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

Ενώ Παραδείγματα βρόχου

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

n = input ("Εισαγάγετε έναν ακέραιο αριθμό: ") 

while type(n) != int:

    δοκιμάστε να:

        n = int(n)

    εκτός από το ValueError:

        εκτύπωση ("Λάθος καταχώριση!")

        n = input ("Εισαγάγετε έναν ακέραιο αριθμό: ") 

αν n % 2 == 0:

    εκτύπωση ("Ακόμη")

αλλού:

    εκτύπωση ("Περίον")

Λάβετε υπόψη ότι η Python χρησιμοποιεί άνω και κάτω τελεία για να δηλώσει σύνθετες κατασκευές κώδικα.

Στον παραπάνω κώδικα, ορίσαμε ως προϋπόθεση ότι πρέπει να ελέγξουμε αν ο αριθμός είναι ακέραιος. Εάν ναι, τότε επιστρέφεται το false. Αν όχι, τότε είναι αλήθεια.

Στο δεύτερο μέρος του κώδικα, όπου χρησιμοποιείται ο τελεστής if, χρησιμοποιήσαμε τον τελεστή % για να βρούμε το υπόλοιπο μετά την πράξη διαίρεσης. Το επόμενο βήμα είναι να ελέγξετε αν ο αριθμός είναι ζυγός. Αν όχι, τότε το υπόλοιπο είναι ένα σε αυτή την περίπτωση. Κατά συνέπεια, ο αριθμός είναι περιττός. 

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

Δηλαδή, ο βρόχος θα εκτελείται τακτικά μέχρι να εμφανιστεί η συνθήκη. Σε αυτήν την κατάσταση, λειτουργεί έτσι. 

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

Ανάλυση κώδικα

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

  1. Αρχικά, ο χρήστης εισάγει μια συμβολοσειρά, η οποία γίνεται αποδεκτή από τη μεταβλητή n. 
  2. Χρησιμοποιώντας βρόχο ενώ ελέγχεται ο τύπος αυτής της μεταβλητής. Στην πρώτη καταχώρηση, δεν είναι ίσο int. Ως εκ τούτου, ως αποτέλεσμα της δοκιμής, διαπιστώθηκε ότι αυτή η συνθήκη είναι αληθής. Επομένως, εισάγεται το σώμα του βρόχου.
  3. Με τη βοήθεια χειριστή προσπαθώ προσπαθούμε να μετατρέψουμε μια συμβολοσειρά σε αριθμό. Εάν γίνει αυτό, τότε δεν παρουσιάζεται σφάλμα. Συνεπώς, δεν χρειάζεται να το επεξεργαστούμε. Επομένως, ο διερμηνέας επιστρέφει στην αρχή του βρόχου και σύμφωνα με τα αποτελέσματα του ελέγχου, αποδεικνύεται ότι έχει γίνει ακέραιος. Ας πάμε λοιπόν στο βήμα 7
  4. Εάν η μετατροπή δεν ήταν επιτυχής, τότε εμφανίζεται ένα ValueError. Σε αυτήν την περίπτωση, η ροή προγράμματος αποστέλλεται στον χειριστή εκτός.
  5. Ο χρήστης εισάγει μια νέα τιμή, η οποία εκχωρείται στη μεταβλητή n.
  6. Ο διερμηνέας επιστρέφει στο βήμα 2 και ελέγχει ξανά. Εάν είναι ακέραια τιμή, μεταβείτε στο βήμα 7. Εάν όχι, η μετατροπή επιχειρείται ξανά σύμφωνα με το βήμα 3.
  7. Με τη βοήθεια χειριστή if Καθορίζει αν υπάρχει υπόλοιπο μετά τη διαίρεση ενός αριθμού με το 2. 
  8. Εάν όχι, επιστρέφεται το κείμενο "άρτιο".
  9. Εάν όχι, επιστρέφεται το κείμενο "περίεργο".

Σκεφτείτε τώρα ένα τέτοιο παράδειγμα. Προσπαθήστε να προσδιορίσετε πόσες φορές θα περάσει αυτός ο κύκλος;

σύνολο = 100 

i = 0

ενώ εγώ < 5:

    n = int(input())

    σύνολο = σύνολο — n

    i = i + 1 

εκτύπωση ("Υπόλοιπα", σύνολο)

Η σωστή απάντηση είναι 5. Αρχικά, η τιμή της μεταβλητής i - μηδέν. Ο διερμηνέας ελέγχει αν η μεταβλητή είναι ίση i 4 ή λιγότερο. Εάν ναι, τότε η τιμή επιστρέφεται. αληθής, και ο βρόχος εκτελείται ανάλογα. Η τιμή αυξάνεται κατά ένα.

Μετά την πρώτη επανάληψη, η τιμή της μεταβλητής γίνεται 1. Πραγματοποιείται έλεγχος και το πρόγραμμα κατανοεί ότι αυτός ο αριθμός είναι και πάλι μικρότερος από 5. Κατά συνέπεια, το σώμα του βρόχου εκτελείται για δεύτερη φορά. Δεδομένου ότι τα βήματα είναι παρόμοια, η τιμή αυξάνεται επίσης κατά ένα και η μεταβλητή είναι τώρα ίση με 2.

Αυτή η τιμή είναι επίσης μικρότερη από πέντε. Στη συνέχεια, ο βρόχος εκτελείται για τρίτη φορά, προστίθεται στη μεταβλητή i 1 και του εκχωρείται η τιμή 3. Αυτή είναι και πάλι μικρότερη από πέντε. Και έτσι έρχεται στην έκτη επανάληψη του βρόχου, στην οποία η τιμή της μεταβλητής i ισούται με 5 (άλλωστε, αρχικά ήταν μηδέν, απ' όσο θυμόμαστε). Αντίστοιχα, αυτή η συνθήκη δεν περνά τη δοκιμή και ο βρόχος τερματίζεται αυτόματα και πραγματοποιείται η μετάβαση στο επόμενο βήμα, το οποίο βρίσκεται εκτός αυτού (ή τερματισμός προγράμματος, εάν δεν παρέχονται τα ακόλουθα βήματα).

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

σύνολο = 100 

ενώ συνολικά > 0:

    n = int(input())

    σύνολο = σύνολο — n 

εκτύπωση ("Εξαντλήθηκε ο πόρος")

Προσπαθήστε να μαντέψετε τι κάνει αυτό το πρόγραμμα! Φανταστείτε ότι σε μια μεταβλητή σύνολο αποθηκεύονται πληροφορίες σχετικά με τον πόρο του προγράμματος. Κάθε φορά που ο διερμηνέας ελέγχει αν υπάρχει ο πόρος. Εάν όχι, τότε εμφανίζεται το κείμενο "Εξαντλήθηκε ο πόρος" και το πρόγραμμα κλείνει. Και με κάθε επανάληψη του βρόχου, ο πόρος μειώνεται κατά τον αριθμό που καθορίζει ο χρήστης.

Και τώρα εργασία για το σπίτι. Δοκιμάστε να αλλάξετε τον παραπάνω κώδικα, ώστε η μεταβλητή να μην μπορεί να γίνει αρνητική. 

4 Σχόλια

  1. si code ahaan usoo gudbi

  2. Γεια σας

  3. lol

Αφήστε μια απάντηση