Skip to content

Instantly share code, notes, and snippets.

@janaslo
Created November 14, 2019 12:42
Show Gist options
  • Save janaslo/447393922d81ad675129cbb661e2ad7c to your computer and use it in GitHub Desktop.
Save janaslo/447393922d81ad675129cbb661e2ad7c to your computer and use it in GitHub Desktop.
Ukázky z hodiny pyladies 13.11.2019
# import z našeho vlastního modulu (zde soubor ve stejném adresáři)
from delky import cm_na_palce
# směs funkcí z hodiny
def nakresli_pole(): # zatím umí vyrobit jeden řádek
radek = []
for i in range(5):
radek.append('.')
return radek # místo vrácení je potřeba podobným způsobem vytvořit z řádků hrací pole (seznam seznamů teček)
def rozdil_seznamu(prvni_seznam, druhy_seznam):
rozdil = []
for prvek in prvni_seznam:
if prvek not in druhy_seznam:
rozdil.append(prvek)
return rozdil
def tiskni_hlasku(hlaska, kolikrat=3): # této funkci můžeme zadat jen jeden parametr (hlášku), nebo dva - hlášku a počet opakování
for i in range(kolikrat):
print(hlaska)
def nedelam_nic(): # zdánlivě - funkce nebere parametry a nic nevrací, ale mění globální proměnnou
domaci.append('had') # (která navíc při volání musí existovat), což by někdy mohlo způsobit nechtěné překvapení
def nacti_cislo():
'''Funkce se bude uživatele tak dlouho ptát na číslo, dokud nějaké nezadá.
'''
while True:
vstup = input('zadej cislo ')
try:
cislo = int(vstup) # vstup nijak nezkoumáme a prostě ho zkusíme převést na číslo
return cislo # pokud se to povede, program se dostane na tento řádek a vrátí ho z funkce
except ValueError: # pokud při převodu dojde k chybě (ValueError), program skočí do tohoto bloku
print('to neni cislo') # a vypíše hlášku, ale důležité je, že celý nespadne, a může jet nové kolo cyklu
def over_pozici(pozice, delka_pole):
if pozice in range(delka_pole):
print('ok')
else: # výjimky můžeme kromě chytání a ošetřování naopak i vyhazovat, když v programu dojde k nějaké nežádoucí situaci
raise ValueError('pozice {} se nevejde do hraciho pole'.format(pozice))
# rozdily seznamu
domaci = ['pes', 'kocka', 'mys']
otravna = ['moucha', 'blecha', 'mys']
print(rozdil_seznamu(domaci, otravna)) # jen v prvním
print(rozdil_seznamu(otravna, domaci)) # jen v druhém
print(domaci)
nedelam_nic()
nedelam_nic()
print(domaci) # najednou tam přibyli dva hadi
cislo = nacti_cislo() # zkus si zadat třeba i písmenka
print('druha mocnina tveho cisla je', cislo ** 2)
tiskni_hlasku(kolikrat=cislo, hlaska='ahoj')
# použití naší naimportované funkce
print(cislo, 'cm je', cm_na_palce(cislo), 'palcu')
over_pozici(cislo, 20) # pokud zadáme číslo > 19, program tady vyhodí chybu
def cm_na_palce(pocet_cm):
return pocet_cm/2.54
def palce_na_cm(pocet_palcu):
return pocet_palcu * 2.54
# možné cvičení: zkombinovat obě funkce do jedné,
# pomocí parametrů by se určilo, kterým směrem převádíme
# kód v této podmínce se provede jen tehdy, když soubor spustíme
# z příkazové řádky: python delky.py
if __name__ == "__main__":
print('30 cm je', cm_na_palce(30), 'palců')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment