🔀 Podmínky a logické operátory

Rozcestí

O čem to je

Stojíš na rozcestí. Když prší, jdeš autobusem. Jinak jdeš pěšky. Takové rozhodování dělá i program: podle situace provede jednu nebo druhou část kódu.

Bez podmínek by program dělal pořád totéž. S nimi umí zkontrolovat heslo, ohodnotit test nebo poznat, že hráč prohrál.

Nové pojmy

PodmínkaOtázka, na kterou je odpověď True (pravda), nebo False (nepravda). Hodnotám True a False se říká pravdivostní hodnoty, typ bool.teplota < 0 je True, když mrzne.
Větvení if / elseKdyž podmínka za if platí, provede se blok pod ním. Jinak se provede blok pod else.if teplota < 0: → print("Mrzne"), else: → print("Nemrzne")
OdsazeníŘádky, které patří do bloku if, musí být odsazené (obvykle 4 mezery). Odsazením Python pozná, kde blok začíná a končí. Řádek za if končí dvojtečkou.Neodsazený řádek za blokem se provede vždy.

Porovnávání

OperátorVýznamPříklad (x = 5)Výsledek
==rovná sex == 5True
!=nerovná sex != 5False
< >menší, většíx > 3True
<= >=menší nebo rovno, větší nebo rovnox <= 4False

První program s podmínkou

  • vek = int(input("Věk: "))
  • if vek >= 18:
  •     print("Jsi plnoletý.")
  • else:
  •     print("Ještě nejsi plnoletý.")
  • print("Konec")

Pro věk 20 vypíše „Jsi plnoletý.“ a „Konec“. Pro věk 15 vypíše „Ještě nejsi plnoletý.“ a „Konec“. Poslední řádek není odsazený, proto se provede pokaždé.

Uživatel zadá 7. Co vypíše program: if x % 2 == 0: → print("sudé"), else: → print("liché")?
7 % 2 je 1. Podmínka 1 == 0 je False, provede se větev else: vypíše liché.
Kdy je podmínka heslo == "Tajne123" pravdivá?
Jen když se text shoduje úplně přesně, i ve velikosti písmen. Pro "tajne123" je False.
✗if x = 5:
✓if x == 5:

Jedno = je přiřazení (ulož), dvě == porovnání (rovná se?). Python if x = 5: odmítne jako syntaktickou chybu.

if provede blok, když podmínka platí, else když neplatí. Řádek s if končí dvojtečkou a blok je odsazený. Porovnání je ==, ne =.

Více větví

O čem to je

Učitel převádí body z testu na známku. 90 a víc je jednička, 75 a víc dvojka, 50 a víc trojka, jinak pětka. Tady nestačí dvě cesty, potřebuješ jich víc. A často musí platit víc věcí najednou: do kina smíš, když máš lístek a je ti aspoň 15.

Naučíš se elif pro víc větví a logické operátory and, or a not, kterými skládáš podmínky.

Nové pojmy

PodmínkaVýraz, jehož výsledek je True nebo False (typ bool). Vzniká hlavně porovnáním: ==, !=, <, >, <=, >=.body >= 90
elifZkratka „else if“. Další podmínka, která se zkouší, jen když všechny předchozí neplatily. Provede se jen první větev, jejíž podmínka platí.if a: …, elif b: …, else: …
Logické operátoryand (a zároveň): pravda, jen když platí obě části. or (nebo): pravda, když platí aspoň jedna. not (ne): obrátí pravdu na nepravdu a naopak.vek >= 15 and ma_listek
Pravdivostní tabulkaTabulka všech kombinací hodnot a výsledku logického operátoru.Pro and je jen jeden řádek True: True and True.
ABA and BA or Bnot A
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue

Převod bodů na známku

  • if body >= 90:
  •     znamka = 1
  • elif body >= 75:
  •     znamka = 2
  • elif body >= 50:
  •     znamka = 3
  • else:
  •     znamka = 5
Python zkusí první podmínku. Platí? Provede její blok a zbytek přeskočí.
Neplatí? Zkusí první elif. Pak další.
Když neplatí žádná, provede else.
Vždy se provede právě jedna větev.
Jakou známku dostane žák se 72 body?
72 >= 90? Ne. 72 >= 75? Ne. 72 >= 50? Ano → znamka = 3. Další větve se už nezkouší.
Platí vek >= 15 and ma_listek, když vek = 16 a ma_listek = False?
16 >= 15 je True, ma_listek je False. True and False = False. Do kina nesmí.

Roztřiď výrazy podle výsledku. U and musí platit obě strany, u or stačí jedna.

✗Pořadí if body >= 50 → 3, elif body >= 75 → 2, elif body >= 90 → 1.
✓Začni nejpřísnější podmínkou: >= 90, pak >= 75, pak >= 50.

Provede se jen první platná větev. Pro 95 bodů by platilo už >= 50 a žák by dostal trojku.

elif přidává další větve, provede se jen první platná. and chce obě podmínky, or aspoň jednu, not obrací pravdu. U rozsahů řaď podmínky od nejpřísnější.