PYTHON ΕΝΟΤΗΤΑ 10 – While Loops

 

Δωρέαν μαθήματα Python

ΕΙΣΑΓΩΓΗ

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

SIMPLE WHILE LOOP EXAMPLE

Όταν γράφουμε προγράμματα στην Python, προσπαθούμε όσο το δυνατόν περισσότερο να αποφύγουμε να επαναλαμβάνουμε τις ίδιες γραμμές κώδικα. Σκεφτείτε για παράδειγμα ένα απλό πρόγραμμα μέσα από το οποίο ζητάμε να καταχωρήσουμε όλους τους εργαζόμενους σε μια εταιρεία. Με την θεωρία που γνωρίζουμε μέχρι αυτό το σημείο, θα πρέπει να ρωτήσουμε τον χρήστη του προγράμματος τόσες φορές όσοι είναι οι εργαζόμενοι. Δηλαδή θα χρειαστεί να γράψουμε την input( ) function τόσες φορές όσοι είναι οι εργαζόμενοι.

Εδώ φαίνονται ήδη τα προβλήματα τα οποία θα αντιμετωπίσουμε:

1.         Να μην μας είναι γνωστός ο αριθμός των υπαλλήλων της εταιρείας οπότε θα πρέπει να γράψουμε ένα αρκετά μεγάλο αριθμό input( ) function για να είμαστε καλυμμένοι

2.         Μπορεί πάλι ο αριθμός των εργαζόμενων να μας είναι γνωστός αλλά ο αριθμός τους να είναι αρκετά μεγάλος οπότε πάλι καταλήγουμε στο να επαναλάβουμε τον ίδιο input( ) κώδικα.

Σκεφτείτε πως θα είναι ένα πρόγραμμα που έχει 1000 φορές τον εξής κώδικα:

employee1 = input(“please enter the name for employee #1”)

Πως λοιπόν μας βοηθάει το while loop να λύσουμε το πρόβλημα επανάληψης του ίδιου κώδικα? Με το while loop μπορούμε να επαναλάβουμε ένα κομμάτι κώδικα πολλαπλές φορές. Το πόσες φορές θα εκτελεστεί το while loop στηρίζεται στην συνθήκη που θα ορίσουμε εμείς. Όσο η συνθήκη παραμένει True τότε ο κώδικας θα επαναλαμβάνεται για αυτό άλλωστε και το while loop είναι ιδανικό για εκείνες τις περιπτώσεις που δεν γνωρίζουμε τον ακριβή αριθμό επαναλήψεων.

Το γενικό συντακτικό του while loop είναι το εξής:

while condition:

            statement

            statement

            etc.

Ας δούμε ένα απλό παράδειγμα έτσι ώστε να μπορούμε να δούμε και με περισσότερες λεπτομέρειες το πως συντάσσεται σωστά στη Python ένα while loop.

app.py

print('--------------------------------')
print('---Employee Catalog Program-----')
print('--------------------------------')

more_employees = 'y'

while more_employees == 'y':
    name_employee = input("Please enter employee's name: ")
    print(f"Registration for employee {name_employee} is completed")
    more_employees = input("Another employee to register? 'y' for yes: ")

Output


--------------------------------
---Employee Catalog Program-----
--------------------------------
Please enter employee's name: Michail
Registration for employee Michail is completed
Another employee to register? 'y' for yes: y
Please enter employee's name: George
Registration for employee George is completed
Another employee to register? 'y' for yes: n


Ξεκινάμε τον κώδικα μας ορίζοντας μια μεταβλητή με το όνομα more_employees στην οποία αναθέτουμε την String τιμή y. Αμέσως μετά ορίζουμε το while loop μέσα από το οποίο θα ζητήσουμε από τον χρήστη του προγράμματος να εισάγει το όνομα του εργαζόμενου.

Η λέξη κλειδί while είναι απαραίτητη για να επισημάνει την αρχή του while loop. Αμέσως μετά ακολουθεί η συνθήκη η οποία σε κάθε επανάληψη θα εξετάζεται από το while loop. Προσέξτε ότι αν ελέγχετε για ισότητα θα πρέπει να χρησιμοποιήσετε το διπλό σύμβολο της ισότητας. Για να ολοκληρωθεί η πρώτη γραμμή ορισμού του while loop, αμέσως μετά την συνθήκη πρέπει να προσθέσουμε το colon ( : ) σύμβολο. Αν λοιπόν η συνθήκη είναι True τότε το πρόγραμμα μας θα εκτελέσει τις γραμμές του κώδικα που ανήκουν στο while loop. Στο δικό μας παράδειγμα η συνθήκη είναι True γιατί ορίσαμε την τιμή της μεταβλητής έξω από το while loop στην αρχή του προγράμματος. Αυτός βασικά είναι και ένας τρόπος για να βεβαιωθείτε ότι το while loop θα τρέξει τουλάχιστον μια φορά.

Δώστε λίγο προσοχή στο πως η Python διακρίνει ποιες γραμμές κώδικα ανήκουν στο while loop. Το κενό διάστημα (συνήθως απόσταση ενός tab) που έχουμε αφήσει μπροστά από τις γραμμές κώδικα, κάνει την Python να καταλάβει ότι το γκρουπ αυτών των γραμμών κώδικα ανήκει στο while loop.

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

Η τελευταία γραμμή του κώδικα είναι σημαντική γιατί ρωτάμε τον χρήστη αν έχει και άλλον εργαζόμενο να προσθέσει. Το input που θα εισάγει ο χρήστης το σώζουμε στην ίδια μεταβλητή την οποία χρησιμοποιεί το while loop για να αξιολογήσει την συνθήκη. Ο γενικός κανόνας είναι ότι πρέπει μέσα στον κώδικα του while loop να υπάρχει μια λογική της οποίας το αποτέλεσμα επηρεάζει κατά κάποιο τρόπο τη συνθήκη. Αν δεν υπάρχει αυτή η λογική, η συνθήκη θα είναι συνέχεια True και το while loop θα εκτελείται συνέχεια καταλήγοντας σε ένα infinite loop. Προσέχουμε λοιπόν να προσθέσουμε αυτή τη λογική μέσα στο while loop.

Αφού προσθέσουμε έναν αριθμό εργαζόμενων, απαντάμε n την τελευταία φορά για να τερματίσουμε το πρόγραμμα. Βασικά οτιδήποτε χαρακτήρα και αν γράψουμε εκτός από το y θα κάνει την συνθήκη να έχει False αποτέλεσμα οπότε το while loop θα τερματίσει την εκτέλεση του.

GUESSING A NUMBER GAME

Σε αυτό το δεύτερο παράδειγμα θα χρησιμοποιήσουμε το while loop για να συγκρίνουμε τον αριθμό που εισάγει ο χρήστης με έναν τυχαίο αριθμό που δημιουργείται από το random.randint( ) function. Για να μπορέσουμε να δημιουργήσουμε τυχαίους αριθμούς είναι απαραίτητη προϋπόθεση να έχουμε κάνει import το πακέτο random. Μην ανησυχείτε αν δεν καταλαβαίνετε ακόμα την έννοια του πακέτου ή το συντακτικό για να καλέσουμε την random μέσα στο κώδικα μας. Για τώρα απλά δεχτείτε το γεγονός ότι με την γραμμή random.randint(1,10) μπορούμε να δημιουργήσουμε τυχαίους αριθμούς από το 1 μέχρι το 10. Αλλάζοντας τους αριθμούς μπορείτε να μεγαλώσουμε το εύρος των αριθμών από το οποίο θα προέλθει ο τυχαίος αριθμός. Αυτό τον τυχαίο αριθμό τον αναθέτουμε εξ αρχής σε μια μεταβλητή με το όνομα random_number.

Μετά ορίζουμε μια μεταβλητή με το όνομα guess στην οποία αναθέτουμε το None δηλαδή κανέναν αριθμό. Επειδή οι δύο μεταβλητές έχουν εξ αρχής διαφορετικές τιμές, η συνθήκη μας είναι True οπότε εκτελείται ο κώδικας μέσα στο while loop. Το πρόγραμμα μας δίνει, μέσω ενός συνδυασμού if else statements, μηνύματα που μας καθοδηγούν να βρούμε τον τυχαίο αριθμό.

app.py

print('-----------------------------------')
print('-----Guess the number--------------')
print('-----------------------------------')

import random

random_number = random.randint(1,10)
guess = None

while guess != random_number:
      guess = input('Pick a number from 1 to 10: ')
      guess=int(guess)
      if guess < random_number:
            print("TOO LOW!")
      elif guess > random_number:
            print("TOO HIGH!")
      else:
            print("YOU WON!!!")

print("Random number was -> ", random_number)

Output


-----------------------------------
-----Guess the number--------------
-----------------------------------
Pick a number from 1 to 10: 4
TOO LOW!
Pick a number from 1 to 10: 7
TOO HIGH!
Pick a number from 1 to 10: 6
TOO HIGH!
Pick a number from 1 to 10: 5
YOU WON!!!
Random number was ->  5

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

full-width

Post a Comment

0 Comments