Páte a šesté cvičení ... okomentované doplňkové příklady (Skupina 3)¶
Komentáře v jazyku Python¶
In [3]:
# první komentář
a = 1
b = 2 # druhý komentář
c = 3 # třetí komentář
In [1]:
# Zde nastavíme poloměr kruhu, spočítáme jeho obvod,
# a výslednou hodnotu vypíšeme pomocí funkce print.
"""
Komentář pomocí víceřádkového
textového řetězce
"""
import math
r = 1.5
obvod = 2 * math.pi * r
print("Obvod kruhu je", obvod)
Obvod kruhu je 9.42477796076938
Podmíněný příkaz¶
In [10]:
# Podmíněný příkaz
cena = 200
věk = 15
if věk >= 65:
cena = 100
print(cena)
200
In [12]:
# Podmínka může být složitější: použijeme operátory and, or, not
# Operátory pro porovnávání: ==, !=, >, <, >=, <=
cena = 200
skupinovaSleva = True
věk = 15
if věk < 15 or věk >= 65 or skupinovaSleva:
cena = 100
print(cena)
100
In [13]:
# větev else
skupinovaSleva = True
věk = 15
if věk < 15 or věk >= 65 or skupinovaSleva:
cena = 100
else:
cena = 200
print(cena)
100
In [21]:
# za podmínkou může následovat celý blok příkazů
skupinovaSleva = True
věk = 15
kategorie = None
if věk < 15 or věk >= 65 or skupinovaSleva:
cena = 100
kategorie="Zlevněné vstupné"
else:
cena = 200
kategorie="Plné vstupné"
print("kategorie: ", kategorie, ": cena: ", cena)
kategorie: Zlevněné vstupné : cena: 100
In [23]:
# podmínky můžeme vnořovat do sebe:
skupinovaSleva = True
věk = 35
kategorie = None
if věk < 15 or věk >= 65:
cena = 100
kategorie="Zlevněné vstupné"
else:
cena = 200
kategorie="Plné vstupné"
if skupinovaSleva:
cena *= 0.9
kategorie += " + skupinová sleva"
print("kategorie: ", kategorie, ": cena: ", cena)
kategorie: Plné vstupné + skupinová sleva : cena: 180.0
In [24]:
# elif
skupinovaSleva = True
věk = 35
kategorie = None
if věk < 6:
cena = 0
kategorie="Vstupné zdarma"
elif věk < 15:
cena = 100
kategorie="Vstupné junior"
elif věk >= 65:
cena = 100
kategorie="Vstupné senior"
else: # větev else se provede, pokud není splněna žádná z předchozích podmínek
cena = 200
kategorie="Plné vstupné"
if skupinovaSleva:
cena *= 0.9
kategorie += " + skupinová sleva"
print("kategorie: ", kategorie, ": cena: ", cena)
kategorie: Plné vstupné + skupinová sleva : cena: 180.0
In [2]:
# zřetězené porovnání:
x = 56
y = 60
if 3 < x and y < 100:
print(x)
if 3 < x < 100:
print(x)
56 56
In [10]:
# jako podmínka může sloužit i výraz, jehož hodnota lze implicitně převést na bool:
if 45.8-34: # True
print("ano")
if 0.0: # False
print("ne")
if "0": # True
print("nula")
ano nula
Příkaz while
– cyklus se vstupní podmínkou¶
In [1]:
# program vypíše všechna čísla od 0 do 10 včetně:
n = 0
while n <= 10:
print(n)
n += 1
0 1 2 3 4 5 6 7 8 9 10
In [2]:
# to samé, výpis na jeden řádek:
n = 0
while n <= 10:
print(n, end= " ")
n += 1
0 1 2 3 4 5 6 7 8 9 10
In [3]:
# program vypíše mocniny dvojky 2^0 ... 2^10:
n = 0
while n <= 10:
print(2**n, end= " ")
n += 1
1 2 4 8 16 32 64 128 256 512 1024
In [11]:
# cykly a podmínky můžeme vnořovat:
# program vypíše jen lichá čísla z intervalu od 0 do 10 (včetně)
n = 0
while n <= 10:
if n % 2 :
print(n, end= " ")
n += 1
1 3 5 7 9
In [4]:
# program se může tzv. zacyklit (pokud podmínku neuděláme správně)
n = 0
while n >= 0: # nekonečný cyklus ... CHYBA
n += 1
print(n)
--------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) Cell In[4], line 2 1 n = 0 ----> 2 while True: 3 n += 1 4 print(n) KeyboardInterrupt:
In [1]:
# cyklus můžeme ukončit příkazem break
n = 0
while True:
n += 1
if (n == 5):
break
print(n)
5
Příkaz for
– cyklus s parametrem¶
In [2]:
# program vypíše všechna čísla od 0 do 10 včetně:
for n in range(11):
print(n, end= " ")
0 1 2 3 4 5 6 7 8 9 10
In [3]:
# program vypíše jen lichá čísla z intervalu od 0 do 10 (včetně)
for n in range(11):
if n % 2:
print(n, end= " ")
1 3 5 7 9
In [3]:
# program vypíše mocniny dvojky 2^0 ... 2^10
for n in range(11):
print(2**n, end= " ")
1 2 4 8 16 32 64 128 256 512 1024
In [12]:
# range se dvěma parametry (horní a dolní mez):
for n in range(7, 11):
print(n, end = " ")
7 8 9 10
In [14]:
# range se dvěma parametry (jedna mez, druhá mez, krok):
for n in range(30, 11, -1):
print(n, end = " ")
30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12
In [15]:
# Tabulka s násobilkou
for i in range (0,11):
for j in range(0,11):
print(f"{i*j:3}", end= " ")
print("")
0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 0 2 4 6 8 10 12 14 16 18 20 0 3 6 9 12 15 18 21 24 27 30 0 4 8 12 16 20 24 28 32 36 40 0 5 10 15 20 25 30 35 40 45 50 0 6 12 18 24 30 36 42 48 54 60 0 7 14 21 28 35 42 49 56 63 70 0 8 16 24 32 40 48 56 64 72 80 0 9 18 27 36 45 54 63 72 81 90 0 10 20 30 40 50 60 70 80 90 100
In [21]:
# Tabulka se součty
for i in range (0,11):
for j in range(0,11):
print(f"{i+j:3}", end= " ")
print("")
0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 2 3 4 5 6 7 8 9 10 11 12 3 4 5 6 7 8 9 10 11 12 13 4 5 6 7 8 9 10 11 12 13 14 5 6 7 8 9 10 11 12 13 14 15 6 7 8 9 10 11 12 13 14 15 16 7 8 9 10 11 12 13 14 15 16 17 8 9 10 11 12 13 14 15 16 17 18 9 10 11 12 13 14 15 16 17 18 19 10 11 12 13 14 15 16 17 18 19 20
In [17]:
# součet čísel od 0 do 'cislo' (včetně) pomocí while cyklu:
cislo = int(input("Zadej číslo:"))
součet = 0
n = 1
while n <= cislo:
součet += n
n += 1
print(součet)
55
In [18]:
# faktoriál z čílsa 'cislo' pomocí while cyklu:
cislo = int(input("Zadej číslo:"))
faktorial = 1
n = 1
while n <= cislo:
faktorial *= n
n += 1
print(faktorial)
3628800
In [24]:
# součet čísel od 0 do 'cislo' (včetně) pomocí forcyklu:
cislo = int(input("Zadej číslo:"))
součet = 0
for n in range(cislo+1):
součet += n
print(součet)
55
In [25]:
# faktoriál z čílsa 'cislo' pomocí forcyklu:
cislo = int(input("Zadej číslo:"))
faktorial = 1
for n in range(1,cislo+1):
faktorial *= n
print(faktorial)
3628800
In [23]:
# podmíněný výraz a ternární operátor <xxx> if <xxx> else <xxx>
import math
x = 67
# mám jednoduchý podmíněný příkaz:
if x >= 0:
h = math.sqrt(x)
else:
h = math.sqrt(-x)
print(h)
# mohu ho zapsat zkráceně takto:
h = math.sqrt(x) if x >= 0 else math.sqrt(-x)
print(h)
# jiný příklad:
print("jsi plnoletý") if x >= 18 else print("nejsi plnoletý")
# totéž jako:
if x >= 18:
print("jsi plnoletý")
else:
print("nejsi plnoletý")
8.18535277187245 8.18535277187245 jsi plnoletý jsi plnoletý
In [26]:
# příkazy break a continue
n = 100
while True:
# pokud je číslo sudé, přejdeme na další iteraci
if n % 2 == 0:
n += 1
continue
# vypíšeme číslo
print(n)
# pokud jsme vypsali číslo dělitelné 7, ukončíme cyklus
if n % 7 == 0:
break
n += 1
101 103 105
In [ ]: