onsdag 26 september 2012

Mer om logiska uttryck och elif-satsen

Vi ska nu titta på mer komplicerade logiska uttryck.

Minns att vi har en logisk datatyp som kallas bool som kan ha två olika värden. Sant, True, och falskt, False.
En jämförelse som x>5 resulterar i ett svar av typen bool; True om x är större än 5 och False annars.

And, or och not

För att kombinera olika jämförelser används de logiska operatorerna: and (och), or (eller) och not (icke).
Om A och B är bool fungerar de som i tabellerna nedan:

A B A and B
False False False
False True False
True False False
True True True
Både A och B måste vara sanna för att A and B skall bli sant


A B A or B
False False False
False True True
True False True
True True True
Minst en av A eller B måste vara sann för att A or B skall bli sant

A not A
False True
True False

Övning 1.18
Använd det interaktiva skalet för att pröva de logiska operatorerna. Pröva med följande:
a) True and False
b) True or False
c) not False
d) 3 > 2 or 2 > 3

Prioriteringsregler

Liksom i vanliga matematiken, där tex.  * görs före +, finns det prioriteringsregler för logiska operatorer. Se följande tabell som går från högsta till lägsta av de vi kommit i kontakt med:
Prioritet Operatorer
1 ()
2 vanlig matematik
enligt dess regler
3 jämförelser: >, <,
 ==, !=, >=, <=
4 not
5 and
6 or

I övning 1.18d görs alltså jämförelserna 3>2 som blir True och 2>3 som blir False först. Sedan True or False som blir True.

Notera:
or görs efter and
not görs före både and och or

Övning 1.19
Använd det interaktiva skalet för att pröva de logiska operatorerna. Pröva med följande:
a) not True and False
b) not (True and False)

Varför blir det skillnad mellan resultaten?

Övning 1.20
Skriv och testa följande program:

while True :
    try : 
        a=int(input("Skriv ett tal "))
        if a < 100 and a > 50 :
            print("Du skrev ett tal mellan 50 och 100")
    except ValueError:
        print("Tack för mig")
        break


Uppgift 1.7
 Ändra det logiska uttrycket i if-satsen i övning 1.20 så den talar om om man skriver tal som antingen är större än 100 eller mindre än 50.

elif-satsen

En if-sats kan följas av en eller flera elif-satser, förkortning för "else if". Detta är användbart i många sammanhang.

Övning 1.21
Skriv och testa:

while True :
    try : 
        a=int(input("Skriv ett tal "))
        if a > 100 : print("Du skrev ett tal större än 100")
        elif a > 50 :
            print("Du skrev ett tal mellan 50 och 100 (inkl.)")
        else : print("Du skrev ett tal mindre än 50")
    except ValueError:
        print("Tack för mig")
        break
 
Funktion:
  • Först utförs testet i if-satsen. Om det är sant görs följande print-sats sedan hoppar programmet över följande elif och else. Annars går programmet vidare till elif-satsen.
  • Om if-satsen svarade falskt utförs testet i elif-satsen. Om det är sant görs följande print-sats sedan hoppar programmet över följande else. Annars går programmet vidare till else-satsen.
  • Om inte if- eller elif-satsen var sann görs satserna efter else.
Övning 1.22
Skriv ett program som talar om om ett inmatat heltal är jämnt delbart med 2, 3 eller 5. Tips: Se övning 1.10.

Inga kommentarer:

Skicka en kommentar