Ενότητα 2 - Τμήμα 1 - Ελέγχοντας τη ροή

Ιστότοπος: ΕΛ/ΛΑΚ Moodle
Μάθημα: Εργαστήριο Python
Βιβλίο: Ενότητα 2 - Τμήμα 1 - Ελέγχοντας τη ροή
Εκτυπώθηκε από: Guest user
Ημερομηνία: Σάββατο, 20 Απριλίου 2024, 8:46 AM

Περιγραφή

Μετά την ολοκλήρωση αυτής της ενότητας οι φοιτητές θα μπορούν να:

  • δημιουργούν κώδικα χρησιμοποιώντας τη δήλωση if
  • αναγνωρίζουν και χρησιμοποιήστε τα εσοχή των κωδικών
  • λύνουν τα λογικά προβλήματα της άλγεβρας Boolean
  • δημιουργούν κώδικα χρησιμοποιώντας τις περίπλοκες παραμέτρους if, elif και else
  • αναγνωρίζουν τις εμφωλευμένες δομές if και να τις χρησιμοποιούν

2.1.1 - Η εντολή if

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

Ας δούμε ένα παράδειγμα:

>>> # Οι μεταβλητές που χρησιμοποιούμε αρχικοποιούνται

>>> a = 4

>>> b = 5

>>> # Βασικές συγκρίσεις

>>> if a < b:

    print("a is less than b") 

>>> if a > b:

    print("a is greater than b") 

Τι πιστεύετε ότι ο παραπάνω κώδικας θα εμφανίσει στην οθόνη;

Δεδομένου ότι η μεταβλητή a είναι μικρότερη από τη b, η πρώτη δήλωση θα εμφανιστεί ("a is less than b"). Αν οι μεταβλητές a και b ήταν και οι δύο ίσες, τότε καμία από τις δύο παραπάνω συνθήκες δεν θα ικανοποιούνταω οπότε δεν θα εμφανιζόταν τίποτε στην οθόνη.

Ποιους άλλους συγκριτικούς τελεστές μπορούμε να χρησιμοποιήσουμε;

# Equal a = 5 b = 5 if a == b: # Remember that comparison is made using == print ("a is equal to b") # Not Equal a = "Alice" b = "Bob" if a != b: # The exclamation mark ! stands for not print ("a is not equal to b")

2.1.2 - Εσοχές

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

# Equal a = 2 if a == 1: print("If a is one, this will print.") print("So will this.") print("And this.") print("This will always print because it is not indented.")

Η εσοχή πρέπει να είναι ακριβώς η ίδια. Ο παρακάτω κώδικας δεν λειτουργεί:
if a == 1: print("Indented two spaces.") print("Indented four. This will generate an error.") print("The computer will want you to make up your mind.")

2.1.3 - Ο συνδυασμός εντολών ελέγχου με And και Or

Μια εντολή if μπορεί να ελέγξει πολλαπλές συνθήκες συνδυάζοντας τις συγκρίσεις με and και or. Αυτoί οι σύνδεσμοι θεωρούνται επίσης τελεστές ακριβώς όπως το + ή το -.


# And if a < b and a < c: print("a is less than b and c") # Non-exclusive or if a < b or a < c: print("a is less than either b or c (or both)")

Ένα συνηθισμένο λάθος είναι να παραλείψετε μια μεταβλητή όταν την ελέγχετε από πολλαπλές συνθήκες. Ο παρακάτω κώδικας δεν λειτουργεί επειδή ο υπολογιστής δεν γνωρίζει τι να ελέγξει για την μεταβλητή c. Δεν θα υποθέσει ότι πρέπει να τη συγκρίνει με την a.

# This is not correct
if a < b or < c:
    print("a is less than b and c")

2.1.4 - Δυαδικές μεταβλητές (Boolean)

Η Python υποστηρίζει τις δυαδικές μεταβλητές (Boolean). Τι είναι οι δυαδικές μεταβλητές; Οι δυαδικές μεταβλητές μπορούν να αποθηκεύσουν μια τιμή True ή μια τιμή False. Η άλγεβρα Bool αναπτύχθηκε από George Boole το 1854. Τότε δεν μπορούσε να φανταστεί πόσο σημαντικό θα ήταν το έργο του και ότι θα θα γινόταν βάση για τη λογική των υπολογιστών!

Μια εντολή if χρειάζεται μια έκφραση η οποία αξιολογείται σε True (σωστό) ή False (λάθος). Αυτό που μπορεί να φαίνεται περίεργο είναι ότι δεν χρειάζεται πραγματικά να κάνουμε συγκρίσεις αν μια μεταβλητή έχει ήδη αξιολογηθεί ως True ή False.

# Boolean data type. This is legal! 
a = True
if a:
    print("a is true")

Εντάξει, η μεταβλητή a είναι (==) True (αληθής). Και τι είναι η not a. Είναι επίσης True; Φυσικά και όχι. Αν η a είναι αληθής, τότε το η not a είναι ψευδής και αν η a είναι ψευδής, τότε η not a είναι αληθής.

Πώς μπορούμε να γράψουμε αυτόν τον κώδικα; Είναι πολύ απλό.

Τα δύο ακόλουθα παραδείγματα είναι και τα δύο σωστά.
# How to use the not function - example 1 a == False if not(a): # What is not(a) ? print("a is false") # How to use the not function - example 2 if not a: # What is not a ? print("a is false")


Φυσικά μπορούμε να συνδυάσουμε τις δηλώσεις χρησιμοποιώντας and

a = True b = True if a and b: print("a and b are both true") 


ή or

  a = True b = False if a or b: print("one or both of a and b are true")

2.1.5 - If και περισσότερα If - Else if? or Else?

Όταν θέλουμε να πάρουμε μια απόφαση τότε χρησιμοποιούμε την εντολή if.

Αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στο πρόγραμμα επεξεργασίας του Thonny (η θερμοκρασία είναι σκόπιμα γραμμένη χωρίς e)

if

temperatur = int(input("What is the temperatur in Celsius? ")) if temperatur > 30: print("It is hot outside") elif temperatur < 12: print("It is cold outside") else: print("It is not hot outside") print("Done")


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

Δοκιμάστε τον κώδικα χρησιμοποιώντας διαφορετική θερμοκρασία μεγαλύτερη από 30, μεταξύ 12 και 30 και μικρότερη από 12.

Στο προηγούμενο πρόγραμμα εμφανίζεται “It is hot outside” ακόμα και αν ο χρήστης πληκτρολογεί 70 βαθμούς. Γιατί; Πώς μπορεί να βελτιωθεί το πρόγραμμα;


Δείτε μια λύση εδώ.

2.1.6 - Πολλαπλές περιπτώσεις

Ποιά η χρήση του and μέσα σε μια εντολή if? and σημαίνει ότι και για να είναι αληθής η συνθήκη πρέπει και οι δύο συνθήκες να είναι αληθείς.

print ("Check Up") weight = int(input("Insert your weight in kilos : ")) height = int(input("Insert your height in centimeters : ")) if weight >=100 and height <= 170: print ("You might consider to lose some weight") elif weight<= 50 and height > 175: print ("I think that you are very skinny") else: print ("You are just about right")


Ποιά η χρήση του or  μέσα σε μια εντολή if? or σημαίνει ότι και για να είναι αληθής η συνθήκη πρέπει έστω και μία από τις επιμέρους συνθήκες να είναι αληθής.

print ("I know my friends") name = input("Please write your name : ") if name == "John" or name == "Jim" or name == "Justin": print ("Hello my friend", name) else: print ("Do you want to be my friend", name, "?")


Στα παραπάνω προγράμματα σκεφτείτε ποιες είναι οι μεταβλητές και ποιού τύπου είναι αυτές οι μεταβλητές.

Έχουμε τώρα ένα νέο πρόβλημα για σας.

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

Για παράδειγμα, όταν εκτελούμε το πρόγραμμα, η έξοδος μπορεί να είναι:

Hello! Please insert three different integer numbers and i will find the greatest.
The first number is :  13
The second number is :  19
The third number is :  8
Great! The greatest number of 13,19,8  is  19.

Μπορείτε να δείτε μια λύση εδώ.


2.1.7 - If μέσα σε άλλο if = εμφωλευμένο if?

Μερικές φορές θέλουμε να ελέγξουμε μια κατάσταση μέσα σε μια άλλη κατάσταση. Αν θέλουμε να εκδώσουμε μια πρόβλεψη για τη θερμοκρασία και την υγρασία μπορούμε να γράψουμε τον απλό κώδικα παρακάτω. Προκειμένου να εξεταστεί η δεύτερη κατάσταση (υγρασία) η πρώτη (θερμοκρασία> 30) πρέπει να είναι αληθής.
Αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στο Thonny. Μπορείτε να δείτε τα βήματα εκτέλεσης χρησιμοποιώντας το κουμπί Debug.

Thonny Debug Button

print ("This is my weather forecast") tempr = int(input("Please insert the Temperature in Celsius : ")) hum = int(input("Please insert the Humidity of the air : ")) if tempr > 30: if hum > 80: print ("It's hot and humid") else: print ("It's hot but not humid") else: print ("It's not hot")