LOGIK

VILLKORSATSER

OCH

Programmering 1

MÅL

  • Vad är ett villkor? (if-satsen, använda true/false)
  • Relationsoperatorer
  • Använda if/else
  • Villkor med flera alternativ (använda elif)
  • Logiska operatorer

Villkor

Ett villkor är en fråga som man besvaras ja eller nej. Exempelvis är 2 större än 1? Det är alltså ett logiskt uttyck som kan antingen vara sant eller falskt.

I Python motsvarar det True eller False .

if-satsen är en enkel selektion som avgörs om villkoret är sant eller falskt.

Ditt program kan alltså ta olika vägar utifrån om uttrycket är True eller False.

If-satsen

Sats(er)

Villkor

FLÖDESSCHEMA

Sant

Falskt

PYTHONKOD

if villkor:

    sats(er)

Endast om villkoret är uppfyllt utförs sats(erna).

Tänk på att raden efter kolonet (:) måste vara indraget och tillhör pythons syntax. Indragningen avgör när en if-sats avslutas.  

Använda if-sats

if 2 > 1:
	#Om villkoret är SANT ska denna sats utföras
	print("2 är större än 1!!!")

# Ingen indragnong, if-satsen har avslutats
print("Ok lätt som en plätt. Programmet avslutas.")


VILLKOR

bool

Bool är en förkortning för boolean och är döpt efter George Boole som studerade logik.

Det är en datatyp som bara kan innehålla ett av värdena True (sant) eller False (falskt). Om vi skulle jämföra om 3 > 2 skulle detta ge True. 3 < 2 skulle ge False.

a_bool_variable = 3 > 2 # True
another_bool = 3 < 2 # False

game_over = False
is_alive = True

Operator

... är en symbol för något som ska utföras. Exempelvis plustecknet vid matematisk addition.

I Python finns flera olika operatorer. Vi ska utforska de aritmetiska (matematiska)-,  relations-, logiska- och förändringsoperatorerna.

3 + 4

operand

operand

operator

Relationsoperatorer

Jämförelse  Symbol Exempel Värde
    lika med == a == b False
   inte lika med != a != b True
     större än > a > b False
större än eller lika med >= a >= b False
mindre än < a < b  True
mindre än lika med <= a <= b  True

Tar in två värden och jämför dem. Exempel om a = 3, b = 5.

Värdena kan vara av vilken datatyp som helst int, float, str, bool. Komma bara ihåg att de du jämför med måsta vara av samma datatyp! Kallas även ibland för jämförelseoperatorer.

Övning: Jämförelseoperatorer

Avgör om följande uttryck är sant (true) eller falskt (false)

Om a = 3, b = 4, c = 4, så är:

a) a == b  _________              g) b > a   _________

b) b == c  _________              h) b <= c _________

c)  c == a  _________               i) a <= c  _________

                                                

d)  a < b  _________                j) b >= c  _________

e)  a > b  _________                k) c <= a  _________

f)  b < a   _________

SÅ...

Vad är nu skillnaden mellan att använda

=

==

eller

If-else-satsen

Alternativ 1

Villkor

FLÖDESSCHEMA

Sant

Falskt

PYTHONKOD

if villkor:

    alternativ 1

else: 

    alternativ 2

 

If-else satsen är ett val mellan två alternativ, ett tvåvägsval. Till skillnad från if-satsen utförs även ett andra alternativ om villkoret är falskt.

Alternativ 2

if/else-sats

age = int(input("Ange din ålder"))


if age >= 18:
    print("Du är myndig. Körkort, ja!")
else:
    remain = 18 - age
    print(f'Du får vänta {remain} år in du är 18 år.')

Är värdet i age är större än eller lika med 18? Om ja, SANT, annars FALSKT.

Villkor med flera alternativ

Villkor med flera alternativ

if-else satsen kan endast hantera ett val mellan två situationer, SANT eller FALSKT.

I många situationer kan man behöva hantera tre eller fler eller fler alternativ.

Studera följande intervall:

Antal poäng Betyg
36 A
25 C
18 E

Flera if-satser och else

points = int(input("Ange poängen på provet:"))

if points >= 36: 
    print("Betyg A")
if points >= 25:
    print("Betyg C")
if points >= 18: 
    print("Betyg E")
else: 
    print("Omprov :-(")

Villkor med flera alternativ

Om points = 37, vad skrivs ut?

elif

En förkortning av else if, "annars om"

if/elif/else

points = int(input("Ange poängen på provet:"))

if points >= 36: 
    print("Betyg A")
elif points >= 25:
    print("Betyg C")
elif points >= 18: 
    print("Betyg E")
else: 
    print("Omprov :-(")

Villkor med flera alternativ

Om points = 37, vad skrivs ut? Skillnad mot förra exemplet?

Skillnad med else if-sats?

En if-sats kommer alltid att köras om villkoret är SANT.

En elif-sats kommer endast att köras om föregående villkor var FALSKA. D.v.s endast ett alternativ om minst ett av alternativen är sanna.

Logiska operatorer

Hur skapar du ett villkor som är SANT om en variabel X är större än 100 och mindre än 200 🤔?

Vad måste gälla?

Jo, att både X > 100 OCH X < 200!

Vi behöver alltså använda oss av två villkor.

Logiska operatorer

Logisk operator  Symbol Exempel Värde
OCH  and uttryck1
and
uttryck2
true om båda är sanna annars false
   ELLER  or uttryck1
or 
uttryck2
true om minst ett är sant, annars false
   INTE not not uttryck false om uttrycket är sant, annars true

S.k boolska uttryck används för att kombinera olika villkor

OCH - and

x  = int(input("Ange ett tal:"))

if x >= 100 and x <= 200: 
    print("Det okända talet är mellan 100 och 200")
else: 
    print("Utanför intervallet...")

Logiska operatorn som är  sann då endast alla uttryck är sanna (eng. AND)

Här måste x både vara större än 100 och mindre än 200 för att hela utrycket ska vara SANT.

ELLER - or

im_tired = False
is_bedtime = True

if im_tired == True or is_bedtime == True : 
    print("Go to sleep")
else:
    print("Stay up until you are tired...Zzzz")
  

Logiska operatorn som är SANT då minst ett av utrycken är sanna. 

I ett uttryck med or räcker det att ett av villkoren är sanna

INTE - not

game_over = False

if not game_over:
    print("Spelet avslutas")
else: 
    print("Du får fortsätta spela")

Logiska operatorn INTE, not, då FALSKT blir SANT, eller SANT blir FALSKT

Med not blir det boolska värdet motsatsen. I detta fall blir False till True.

Övning: Logiska operatorer

Avgör om följande uttryck är sanna eller falsk. Sätt true för sant och false för falskt.

a)  1 < 2  and  5 > 4       _________

b)  1 == 2  and 1 <  2    _________

c)  1 == 2  or  1 == 1      ________

d)  3 <= 4  or  3 >= 4      ________

e)  3 <= 4  and  3 >= 4  _________

f)  2 < 1  or  2 == 0        _________

g)  5 < 5  and  5 > 5      _________

h)  5 < 5  or  5 >  5        _________

Om a = 1, b = 2, och c = 3:

i)  a < b  and  a > b                _________

j)  a < b  or  a > b                    _________

k)  a < c  and  b < c                  ________

l)  a > c  or  c > b                      ________

m)  a == b  and  a < c             _________

n)  a <= b  and  not (a <= c)   _________

o) not (b <= c)  or  b >= a        _________

Python - Logik och villkorssatser

By Sandra Larsson

Python - Logik och villkorssatser

The hole shabang

  • 211