Αποφάσεις

Η δήλωση ``if''

Όπως πάντα θα ξεκινήσουμε το κεφάλαιο με μια άσκηση πληκτρολόγησης για προθέρμανση. Το παρακάτω προγραμματάκι θα μας βοηθήσει να υπολογίσουμε την απόλυτη τιμή ενός αριθμού:


n = input("Number? ")
if n < 0:
        print "The absolute value of",n,"is",-n
else:
        print "The absolute value of",n,"is",n

Και το αποτέλεσμα των δυο φορών που έτρεξα το πρόγραμμα:


Number? -34
The absolute value of -34 is 34

Number? 1
The absolute value of 1 is 1

Τι κάνει λοιπόν ο υπολογιστής όταν βλέπει αυτές τις γραμμές κώδικα; Πρώτα ζητάει από τον χρήστη έναν αριθμό με την εντολή n = input("Number? "). Μετά διαβάζει την εντολή if n < 0: Αν το n είναι μικρότερο του μηδενός η Python τρέχει την γραμμή print "The absolute value of",n,"is",-n. Διαφορετικά θα τρέξει την γραμμή print "The absolute value of",n,"is",n.

Αν το εξετάσουμε πιο τεχνικά η Python κοιτάζει αν η έκφραση (expression) n < 0 είναι αληθής ή ψευδής. Η δήλωση if ακολουθείται από ένα μπλοκ (block) δηλώσεων / εντολών που τρέχουν όταν και αν ή έκφραση είναι αληθής. Ακολούθως μετά την δήλωση if υπάρχει η δήλωση else . Αυτή θα τρέξει αν η έκφραση είναι ψευδής.

Υπάρχουν διάφορα κριτήρια αληθείας για μια έκφραση. Παρακάτω είναι ένας πίνακας με τα κριτήρια αυτά:

σύμβολο λειτουργία
< Μικρότερο από
<= Μικρότερο από ή ίσο με
> Μεγαλύτερο από
>= Μεγαλύτερο από ή ίσο με
== ίσο
!= άνισο
<> ένας άλλος συμβολισμός για το άνισο

Άλλο ένα σημείο την δήλωσης if είναι η δήλωση elif. Προέρχεται από τις λέξεις else if και σημαίνει ``αν η δήλωση if είναι ψευδής και η δήλωση elif είναι αληθής τότε τρέξε εκείνο το μέρος. Να ένα παράδειγμα:


a = 0
while a < 10:
        a = a + 1
        if a > 5:
                print a," > ",5
        elif a <= 7:
                print a," <= ",7
        else:
                print "Neither test was true"

και το αποτέλεσμα:


1  <=  7
2  <=  7
3  <=  7
4  <=  7
5  <=  7
6  >  5
7  >  5
8  >  5
9  >  5
10  >  5

Προσέξετε ότι η εντολή elif a <= 7 ελέγχεται όταν η δήλωση if παύει να είναι αληθής. Η elif επιτρέπει πολλαπλούς ελέγχους σε μια απλή δήλωση if.

Παραδείγματα

High_low.py


#Plays the guessing game higher or lower 
# (originally written by Josh Cogliati, improved by Quique)

#This should actually be something that is semi random like the
# last digits of the time or something else, but that will have to
# wait till a later chapter.  (Extra Credit, modify it to be random
# after the Modules chapter)
number = 78
guess = 0

while guess != number : 
    guess = input ("Guess a number: ")

    if guess > number :
        print "Too high"

    elif guess < number :
            print "Too low"

print "Just right"

Δοκιμή:


Guess a number:100
Too high
Guess a number:50
Too low
Guess a number:75
Too low
Guess a number:87
Too high
Guess a number:81
Too high
Guess a number:78
Just right

even.py


#Asks for a number.
#Prints if it is even or odd

number = input("Tell me a number: ")
if number % 2 == 0:
    print number,"is even."
elif number % 2 == 1:
    print number,"is odd."
else:
    print number,"is very strange."

Δοκιμές:


Tell me a number: 3
3 is odd.

Tell me a number: 2
2 is even.

Tell me a number: 3.14159
3.14159 is very strange.

Ασκήσεις

Αλλάξτε το πρόγραμμα μαντέματος password έτσι ώστε να καταγράφει πόσες φορές ο χρήστης έχει εισάγει λάθος password. Αν είναι παραπάνω από 3, να εμφανίζει ``That must have been complicated.''

Γράψτε ένα πρόγραμμα που να ζητάει δύο αριθμούς. Αν το άθροισμα των αριθμών είναι μεγαλύτερο από 100 να εμφανίζει ``That is big number''.

Γράψτε ένα πρόγραμμα που να ρωτάει το όνομα του χρήστη. Αν εισάγει το όνομά σας να εμφανίζεται "That is a nice name", αν εισάγει "John Cleese" ή "Michael Palin", να εμφανίζει την γνώμη σας για αυτούς :-) διαφορετικά να εμφανίζει "You have a nice name".