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 [1]:
# Podmíněný příkaz
a = -10
if a > 0:
    print("číslo je kladné")
    print("číslo se rovná", a)
print("konec")   
konec
In [9]:
# Větev else
vek = 73

if vek >= 65:
    cena = 100
    kategorie= "Zlevněná cena"
else:
    kategorie = "Plná cena"
    cena = 200
    
print("kategorie:", kategorie,", cena vstupenky:", cena, "Kč") 
kategorie: Zlevněná cena , cena vstupenky: 100 Kč
In [10]:
# Podmínka může být složitější: použijeme operátory and, or, not
# Operátory pro porovnávání: ==, !=, >, <, >=, <=
vek = 73
skupinovaSleva = True

if vek >= 65 or vek < 18 or skupinovaSleva:
    cena = 100
    kategorie= "Zlevněná cena"
else:
    kategorie = "Plná cena"
    cena = 200
    
print("kategorie:", kategorie,", cena vstupenky:", cena, "Kč") 
kategorie: Zlevněná cena , cena vstupenky: 100 Kč
In [8]:
# podmínky můžeme vnořovat do sebe:
vek = 63
skupinovaSleva = True

if vek >= 65 or vek < 18:
    cena = 100
    kategorie= "Zlevněná cena"
else:
    kategorie = "Plná cena"
    cena = 200
    if skupinovaSleva:
        cena *= 0.9
        kategorie += "+ skupinova sleva"
    kategorie += " + darek zdarma"
    
print("kategorie:", kategorie,"cena vstupenky:", cena, "Kč")  
kategorie: Plná cena+ skupinova sleva + darek zdarma cena vstupenky: 180.0 Kč
In [7]:
# větve elif
vek = 40
skupinovaSleva = True

if vek >= 65:
    cena = 100
    kategorie= "Senior"
elif vek <= 6:
    cena = 0
    kategorie= "Dítě"  
elif vek < 18:
    cena = 120
    kategorie= "Junior"  
else:
    kategorie = "Plná cena"
    cena = 200
    if skupinovaSleva:
        cena *= 0.9
        kategorie += " + skupinova sleva"
    kategorie += " + darek zdarma"
    
print("kategorie:", kategorie,"cena vstupenky:", cena, "Kč")   
kategorie: Plná cena + skupinova sleva + darek zdarma cena vstupenky: 180.0 Kč
In [12]:
# zřetězené porovnání:
x = 4
y = 60
if 2 <= x and x < y and y > 10:
    print(x)
if 2 <= x < y > 10:
    print(x)    
4
4
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
In [13]:
# čísla typu float neporovnáváme pomocí == a !=, ale lépe pomocí přibližného porovnání:
x = 0.999
if x == 1.0:        # False
    print("ano?")
    
if abs(x-1) < 0.01: # True 
    print("ano")
ano

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 [15]:
# cyklus můžeme ukončit příkazem break
n = 0
while n <= 10:
    if n == 7:
        break
    print(n, end = " ")
    n += 1
0 1 2 3 4 5 6 
In [18]:
# while True + break
while True:
    s = input("je konec?")
    if s == "ano":
        break
In [17]:
# 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[17], line 3
      1 # program se může tzv. zacyklit (pokud podmínku neuděláme správně)
      2 n = 0
----> 3 while n >= 0: # nekonečný cyklus ... CHYBA
      4     n += 1
      5 print(n)        

KeyboardInterrupt: 
In [19]:
# součet čísel od 0 do 10:
n = 0
soucet = 0

while n <= 10:
    soucet += n
    n += 1
    
print("součet je", soucet)
součet je 55
In [20]:
# počet sudých čísel mezi 0 a 10:
n = 0
pocet_sudych = 0

while n <= 10:
    if n % 2 == 0:
        pocet_sudych += 1
    n += 1
    
print("počet sudých je", pocet_sudych)
počet sudých je 6

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 [22]:
# udělej něco pětkrát:
for n in range(5):
    print("ahoj")
ahoj
ahoj
ahoj
ahoj
ahoj
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 [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 [23]:
# součet čísel od 0 do 'n' (včetně) pomocí while cyklu:
n = int(input("Zadej číslo:"))
součet = 0
i = 1
while i <= n:
    součet += i
    i += 1
print(součet)    
10
In [24]:
# součet čísel od 0 do 'n' (včetně) pomocí forcyklu:
n = int(input("Zadej číslo:"))
součet = 0
for i in range(n+1):
    součet += i
print(součet)  
10