# Αποφάσεις

## Η δήλωση ``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".