29. Podmínky v Pythonu#
29.1. Teorie#
Podmínky jsou vedle cyklů základním stavebním prvkem programování, který umožňuje provádět různé akce na základě splnění určitých podmínek. V Pythonu se podmínky zapisují pomocí klíčových slov if
, elif
(zkratka pro „else if“) a else
. Podmínky vytvářejí větvení v programu, což znamená, že různé části kódu budou prováděny v závislosti na hodnotě určitých výrazů.
29.1.1. Testování, zda je text v řetězci:#
text = "Hello, Python!"
if "Python" in text:
print("Řetězec obsahuje slovo 'Python'.")
else:
print("Řetězec neobsahuje slovo 'Python'.")
29.1.2. Testování, zda se dvě čísla nebo textové řetězce rovnají:#
cislo1 = 5
cislo2 = 5
if cislo1 == cislo2:
print("Čísla se rovnají.")
else:
print("Čísla se nerovnají.")
29.1.3. Testování, zda je jedno číslo menší než druhé:#
cislo1 = 10
cislo2 = 20
if cislo1 < cislo2:
print("První číslo je menší než druhé.")
else:
print("První číslo není menší než druhé.")
Podobně je možno použít opačnou nerovnost >
a neostré nerovnosti <=
a >=
.
29.1.4. Testování, zda je prvek obsažen v seznamu:#
seznam = [1, 2, 3, 4, 5]
prvek = 3
if prvek in seznam:
print("Prvek je obsažen v seznamu.")
Větev s else
je nepovinná, pokud není přítomna a podmínka neplatí, neprovede se nic.
29.1.5. Použití operátorů and
a or
v podmínkách#
Někdy je nutné, aby bylo splněno současně více podmínek, nebo stačí, aby byla splněna jedna z několika podmínek. K tomuto spojujeme podmínky pomocí logických operátorů and
a or
.
29.1.5.1. Operátor and
#
Pokud požadujeme, aby byly splněny obě nebo všechny podmínky, používáme operátor and
.
cislo = 10
if cislo > 5 and cislo < 20:
print("Číslo je v rozmezí 5 až 20.")
else:
print("Číslo není v daném rozmezí.")
V tomto příkladě musí být obě podmínky cislo > 5
a cislo < 20
pravdivé, aby byl výraz celkově pravdivý.
29.1.5.2. Operátor or
#
Pokud potřebujeme zajistit, že je splněna alespoň jedna kterákoliv z podmínek, používáme operátor or
.
cislo = 3
if cislo <= 5 or cislo => 10:
print("Číslo je buď menší nebo rovno než 5 nebo větší nebo rovno než 10.")
else:
print("Číslo je mezi hodnotami 5 a 10.")
Operátory and
a or
umožňují komplexní logiku ve vašich podmínkách a umožňují vám řídit program na základě více různých kritérií a situací. Používejte je opatrně, aby byl váš kód čitelný a snadno udržovatelný.
29.2. Úkol#
Nadefinujte funkci logisticky_rust
, která pro zadané x
a volitelně zadané r
a K
vypočítá hodnotu \(rx\left(1-\frac xK\right)\) za předpokladu, že hodnoty r
a K
jsou kladné a hodnota x
nezáporná. V opačném případě funkce vrátí hodnotu 0. Pokud nebudou zadány volitelné parametry, bude použito r=1
a K=1
. Vyjděte z předpřipraveného kódu, doplňte trojici podmínek spojenou vhodnými operátory a doplňte výrazy za slovem return
. Využijte toho, že při prvním zpracování slova return
je vypočtena žádaná funkční hodnota a provádění funkce se ukončí.
Můžete si graf i vykreslit přidáním následujícího kódu.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1.2)
y = [logisticky_rust(i) for i in x]
plt.plot(x,y)
Výsledkem by měl být následující obrázek.
Všimněte si, že do funkce logisticky_rust
definované pomocí větvení if
není možné dosadit za proměnnou na vstupu seznam a funkci tedy není možné použít na vektorové proměnné. Proto v kódu pro kreslení používáme konstrukci vytvářející seznam hodnot v proměnné y
hodnotu po hodnotě.