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 |
A | B | A or B |
---|---|---|
False | False | False |
False | True | True |
True | False | True |
True | True | True |
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.
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