Kdykoliv cokoliv potřebujete, napište mi na rosa@ufal.mff.cuni.cz (nebo mě oslovte po cvičení). Budu rád, když předmět e-mailu bude mimo jiné obsahovat kód předmětu (NPRG030), mám na to nastavené e-mailové filtry.
print("Ahoj, jsem ptakopysk!")
5+6
3*7
8-2
1/3
5*"ptakopysk"
"ptakopysk" + "podivný"
a=5
b=6
a+b
zvire="ptakopysk"
zvire=input()
print(a, b, c, sep="_", endl="!!!\n")
text = f"Ahoj, já jsem {jmeno}, kdo jsi ty?"
cislo = int(text)
interaktivní výpočet BMI (souvisí s domácím úkolem)
napište jednoduchý program
program se zeptá uživatele na vstup, a to na jeho hmotnost (v kilogramech) a výšku (v metrech)
vypočítejte uživatelovo BMI, dle vzorečku hmotnost / výška2
vypište, zda má uživatel váhu v pořádku, či zda má podváhu či nadváhu
normální váha je při BMI 18.5 až 25, méně je podváha, více je nadváha
volitelně: vypište podrobnější hodnocení
volitelně: řekněte uživateli, jaké je pro jeho výšku rozmezí ideální váhy (např. od 85.7 kg to 98.2 kg)
volitelně: se znalostí průměrné hustoty lidského těla (1000 kg/m3) odhadněte objem uživatele, a spočítejte například, jaký by měl uživatel průměr a obvod, pokud by měl stejnou výšku ale tvar válce, případně jaký by měl průměr a obvod, pokud by měl tvar koule
import random
cislo = random.randint(0, 20)
py muj_program.py
python3 muj_program.py
17 % 2 # vrací 1
24 % 2 # vrací 0
len("ptakopysk")
for pismeno in "dikobraz":
def umocni(zaklad, exponent=2): vysledek = zaklad**exponent return vysledek cislo = 5 cislo_na_druhou = umocni(5) print(cislo_na_druhou) print( umocni(10) )
print( umocni(10, 3) )
print( umocni(zaklad=10) )
print( umocni(zaklad=10, exponent=4) )
print( umocni(exponent=4, zaklad=10) )
print( umocni(10, exponent=4) )
class Clovek: def __init__(self, jmeno): self.jmeno = jmeno def rekni(self, text): reknu = self.jmeno + ': ' + text print(reknu) return reknu def pozdrav(self): self.rekni("Ahoj, jsem " + self.jmeno) rudolf = Clovek('Rudolf') rudolf.rekni('ptakopysk') rudolf.pozdrav()
class Rvoun(Clovek): def rekni(self, text): reknu = self.jmeno + ': ' + text.upper() print(reknu) return reknu petr = Rvoun('Petr') petr.pozdrav()
zprava = "Na stropě je chleba s máslem, pošli to dál." lidi = [...] for clovek in lidi: zprava = clovek.rekni(zprava)
def rekni(self, zprava): print(self.jmeno, zprava, sep=':') return zprava
def rekni(self, zprava): zprava = zprava + " vole" print(self.jmeno, zprava, sep=':') return zprava
clovek = Clovek("Petr") clovek.dalsi = ... while clovek.dalsi != None ... def posli_to_dal(self, zprava): zprava = self.rekni(zprava) if self.dalsi != None: self.dalsi.posli_to_dal(zprava)
class Masina: def __init__(self, vagon_za_mnou=None): self.dalsi = vagon_za_mnou class Vagon: def __init__(self, naklad="brambory", mnozstvi=0, za_mnou=None): ...
masina = Masina() masina.dalsi = Vagon() masina.dalsi.dalsi = Vagon("uhlí") masina.dalsi.dalsi.dalsi = Vagon("koťátka", 3) ...
naklad = 'uhlí' mnozstvi = 10 popis = f'Vezu {naklad} v množství {mnozstvi}' print(popis) # vypíše: Vezu uhlí v množství 10.
import time print(masina) time.sleep(1) print(masina.dalsi)
"Ahoj. Já jsem Rudolf... Super, že.".split(".") # vrátí následující list: ["Ahoj", " Já jsem Rudolf", "", "", " Super, že", ""]
" Ahoj já jsem Rudolf ".split() # vrátí následující list: ["Ahoj", "já", "jsem", "Rudolf"]
klíč | hodnota |
---|---|
'leden' | 31 |
'únor' | 28 |
2 | 28 |
pocty_slov = dict() ... if "slovo" not in pocty_slov: pocty_slov["slovo"] = 1 else: pocty_slov["slovo"] += 1
from collections import defaultdict pocty_slov = defaultdict(int) ... pocty_slov["slovo"] += 1 # pokud klíč neexistuje, vrací pro něj výchozí hodnotu, což pro int je 0
seznamy_jmen = defaultdict(list) ... seznamy_jmen["R"].append("Rudolf") # výchozí hodnota pro list je prázdný list
# klasicky texty = ['5', '8', '10', '20'] cisla = [] for text in texty: cisla.append( int(text) )
# více Pythonovsky pomocí list comprehension texty = ['5', '8', '10', '20'] cisla = [ int(text) for text in texty ]
# klasicky mocniny_sudych = [] for cislo in cisla: if cislo % 2 == 0: mocniny_sudych.append( cislo**2 )
# více Pythonovsky pomocí list comprehension mocniny_sudych = [ cislo**2 for cislo in cisla if cislo % 2 == 0 ]
a = {5, 6, 7} a.add(5) a.add(10) 10 in a a.remove(6) a.discard(20) b = {5, 10, 20} a.intersection(b) a & b a.union(b) a | b a.difference(b) a - b
try: něco kde může nastat chyba except TypOčekávanéChyby: nespadni ale poraď si s chybou except TypJinéOčekávanéChyby as e: poraď si i s touto chybou print(e) except: poraď si s libovolnou jinou chybou # ale asi nejde o očekávanou chybu, takže asi je lepší spadnout
assert epsilon > 0, "Předpokládáme, že epsilon je vždy kladné!"
import collections d = collections.defaultdict()
from collections import defaultdict d = defaultdict()
from my_other_file import MyClass from scitadlo import Scitadlo
if __name__ == '__main__':
from my_directory.my_file import *
testování
class Scitadlo: def secti(a, b): return a + b
# "Ruční" testování from scitadlo import Scitadlo def test_jedna_dva(): assert Scitadlo.secti(1, 2) == 3 def test_zaporne(): assert Scitadlo.secti(1, -2) == -1 test_jedna_dva() test_zaporne()
# Pytest # Testovací skript je skript jehož jméno začíná "test_" # Importovat pytest obvykle ani není potřeba import pytest from scitadlo import Scitadlo # Test je funkce jejíž jméno začíná "test_" def test_jedna_dva(): # testuje se pomocí assertů assert Scitadlo.secti(1, 2) == 3 def test_zaporne(): assert Scitadlo.secti(1, -2) == -1 def test_necisla(): # takhle se testuje vyhazování výjimek with pytest.raises(TypeError): Scitadlo.secti([], {})
# Unittest # unittest vyžaduje specifické třídy a metody a dědění import unittest from scitadlo import Scitadlo class Testy(unittest.TestCase): def test_jedna_dva(self): self.assertEqual(Scitadlo.secti(1, 2), 3) def test_zaporne(self): self.assertEqual(Scitadlo.secti(1, -2), -1) def test_necisla(self): with self.assertRaises(TypeError): Scitadlo.secti([], {}) unittest.main()
grafika (tkinter)
from tkinter import * hlavni_okno = Tk() hlavni_okno.mainloop()
from tkinter import * hlavni_okno = Tk() hlavni_okno.title("Pokusná apka") hlavni_okno.geometry('350x200') popisek = Label(hlavni_okno, text="Ahoj světe") popisek.pack() def pozdrav(): popisek.configure(text = 'Ahoj po kliknutí') print('Ahoj do konzole!') tlacitko_pozdrav = Button(hlavni_okno, text="Pozdrav!", command = pozdrav) tlacitko_pozdrav.pack() hlavni_okno.mainloop()
class Karticka: def __init__(self, text): self.text = text self.tlacitko = Button(hlavni_okno, text = "KLIKNI", command = self.klik) self.tlacitko.pack() def klik(self): self.tlacitko.configure(text = self.text)
popisek = Label(hlavni_okno, text="Ptakopysk") popisek.grid(row=0, column=1) # místo .pack()