Lekce 3 Podmínky a cykly. Logické operátory, podmínky, cykly. C2184 Úvod do programování v Pythonu podzim 2016 Podmínky a cykly. Stanislav Geidl 1» C21B4 do programová Logické operátory Podmínky Cykly Příklady Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita 3.1 Logické operátory Podmínky a cykly. Stanislav Geidl I = > < > = < = and or not je rovno není rovno je vetsi je menší je větší rovno je menší rovno a nebo negace »»...... 1» C21B4 do programová )gické operátory Podmínky Cykly Příklady in, not in is, is not je v, není v (např. 'pes' not in 'Harapes' nebo'a' in 'test') je, není (testování identity objektů, nezáleží na hodnotě ale na "místě v paměti) • pořadí operací: matematické operace; < ><= >=; == !=; o; is, is not; in, not in; not; and; or 3.2 Logické operátory Podmínky a cykly. Stanislav Geidl and a or nebo not negace a b a and b a or b not a True True True True False True False False True False False True False True True False False False False True 1» C21B4 do programová )gické operátory Podmínky Cykly Příklady 3.3 Podmínky Na základě vyhodnocení logického výrazu se rozhodne, jestli se daný blok provede nebo nikoliv. Podmínky a cykly. Stanislav Geidl C2184 Úvod do programování Cykly Příklady 3.4 Podmínka if Podmínky a cykly. Stanislav Geidl i if ^podmínka ' : ň ^A C2184 É Ovoci do programová print ("Podmínka^splněna. ") výhonu Logické operátory Podmíní- if 9 > 5: Cykly print("Devet^je^vetší^než^pět.") Příklady x = 5 if x >= 2 and x < 10: print ( "Proměnnál_lnáležíi_idol_lintervalul_l<2; 10) " ) 3.5 Podmínka if.. else if ^podmínka A: print("Podmínka^splněna.") else: print("Podmínka^nesplněna.") if 9 < 5: print("Devět^je^menší^než^pět.") else: print("Devět^není^menší^než^pět.") x = 13 if x >= 2 and x < 10: print ("Proměnná1_1náleží1_Ido1_lintervalu1_1<2; 10) " ) else: print ( "Proměnná1_1nenáleží1_Jdo1_1intervalu1_l<2; 10) ") Podmínky a cykly. Stanislav Geidl C2184 Uvod do programování v Pythonu Logické operátory Cykly Příklady 3.6 Podmínka if.. elif.. else if ^podmínka ^ and >podmínka2 ^: print("Podmínky^splněny.") elif ^podmínka ^: print("Alespoň^podmínka^splněna.") elif >podmínka2 ^: print ( " Alespoň^podmí nka2i_isplněna . " ) else: print("Podmínky^nesplněny.") x = 11 if x >= 2 and x < 10: print ( "Proměnná1_1náležíl_ldo1_1intervalu1_1<2; 10) " ) elif x >= 5 and x < 15: print ( "Proměnnál_lnáležíi_idol_lintervalul_l<5; 15) " ) else: print("Proměnná^x^mimo^povolený^rozsah!") Kdyby x bylo rovno 8, který blok by se provedl? Podmínky a cykly. Stanislav Geidl C2184 Úvod do programování Cykly Příklady 3.7 Cykly Podmínky a cykly. Stanislav Geidl Podobně jako podmínky se řídí logickým výrazem, který rozhoduje o spuštění příslušného bloku. Tyto bloky běží stále dokola, dokud je splněna podmínka. i* C21B4 do programová Logické operátory Podmínky Cykly Příklady 1 HlHlII ^ 3.8 Cyklus while while ^podminka ^: blok blok i = 0 while i < 10: print(i) i += 1 Proměnné řídící běh cyklu se často pojmenovávají i, j, k, i,..., pokud nemají jiný význam. Podmínky a cykly. Stanislav Geidl C2184 Úvod do programování v Pythonu Logické operátory Podmínky Cykly Příklady 3.9 Cyklus for • určen pro procházení kolekcí či jiných objektů, které můžeme procházet (případně řetězců) for i in ...: blok blok • funkce range umožňuje cyklu for procházet číslné posloupnosti podobně jako cyklu while for i in range(10): print(i) Podmínky a cykly. Stanislav Geidl C2184 Úvod do programování v Pythonu Logické operátory Podmínky Cykly Příklady 3.10 Funkce range • rozsah PO end (od 0, po kroku 1) range(end) range(10) • rozsah od start PO end (po kroku 1) range(start, end) range(1, 10 0) range(-50, 0) • rozsah OD start PO end po kroku step range(start, end, step) range(10, 51, 50) range(0, -10, -1) • zkuste for i in range(0, -10): print(i) for i in range(0, 10, 3): print( Řízení běhu cyklu pomocí break a continue • break vynutí ukončení cyklu • continue vynutí ukončení vykonávání bloku a spustí další smyčku for i in range(100): if i%3 == 0: print ("O") continue if i >= 10: break print(i) Podmínky a cykly. Stanislav Geidl C2184 Úvod do programování v Pythonu Logické operátory Podmínky Cykly Příklady 3.12 Řízení behu cyklu pomocí break a else Podmínky a cykly. Stanislav Geidl • eise pokud cyklus nebyl ukončen pomocí break spustí svůj blok for i in range(l,10): print(i) if i 11 == 0: »»...... C21B4 Úvod do programová Logické operátory Podmínky Cykly Příklady break else: print("Zádné^číslo^dělitelné^lleněnalezeno.") 3.13 Input a isinstanceQ Podmínky a cykly. Stanislav Geidl funkce input() Python 2 Python 3 Získání dat ve formě řetězce: raw_input()_| inputQ_ Získání dat automaticky převedených na konkrétní typ: input() I eval(input())1 funkce isinstance() pro testování, jestli se jedná o číslo, vstup = eval(input()) if isinstance(vstup,int): print("Vstup^je^celé^číslo." ) C21B4 do programová Logické operátory Podmínky Cykly Příklady 1 používání funkce eval je nebezpečné, viz http: //nedbat cheider. com/blog/2 012 0 6/eval_really_is_dangerous.html 3.14 Příklady I. O Pomocí funkce input získejte řetězec, ověřte jestli se jedná o celé kladné číslo (řetězec se skládá pouze z číslic) a převeďte jej pomocí funkce int() na číslo a. © Zjistěte, jestli je číslo a dělitelné 3 a 5 nebo pouze 3 nebo pouze 5 nebo číslo není dělitelné ani jedním. O Zjistěte, jestli je číslo a menší rovno 10 a pokud ano spočítejte faktoriál, pokud je číslo větší informujte uživatele, že číslo je příliš velké. Podmínky a cykly. Stanislav Geidl C2184 Úvod do programování v Pythonu Logické operátory Podmínky Cykly 3.15 Příklady I. - řešení a = input ( " Zade jtercelé^kladné^čí slo :,_,") if a.isdigit(): a = int(a) else: print("Nejdná^se^o^číslo.") if a%3 == 0 and a%5 == 0: print("Číslo^je^dělitelné^třemi^i^pěti.") elif cislo%3 == 0: print("Číslo^je^dělitelné^třemi.") elif cislo%5 == 0: print("Číslo^je^dělitelné^pěti.") else: print ("Číslo^neni^dělitelné^třemi^ani^pěti if a <= 10: faktorial = 1 for i in range(2,a+l) : faktorial * = i print(faktorial) else: print("Čislo^je^přiliš^velké.") Podmínky a cykly. Stanislav Geidl 1» C21B4 Úvod do programová Logické operátory Podmínky Cykly Příklady 3.16 Příklady II. výpočet odmocniny pomocí Newtonovy metody Tato metoda hledá řešení rovnice f(x) = 0 a odhaduje (zlepšuje odhad) na základě tohoto výpočtu: _ f{Xguess) Xbetterguess — ^guess ~ ~TJ~, 7 ' v^guess) (i) x = V a (2) f(x) = x2 - a = 0 (3) ť{x) = 2x (4) -x-x2_a-X+- ÍR\ Abetterguess — A — 2 * ' tento výpočet je několikrát iterován nebo je iterován, dokud nejsme s výsledkem spokojeni. Podmínky a cykly. Stanislav Geidl C2184 Úvod do programování v Pythonu Logické operátory Podmínky Cykly 3.17 Príklady II. - řešení Podmínky a cykly. Stanislav Geidl ff ff ff Logické operátory Podmínky Cykly Příklady (9 hodnota x bude nastavena na nějaký odhad w hodnota threshold bude rozhodovat o kvalitě výsledku C21M Úvod do programová rr rr rr ' x = 1.0 threshold = 0.000000001 a = input ( " Zade jtercelé^kladné^čí slo :,_,") if a.isdigit(): a = int(a) while abs(x**2-a) > threshold: x = (x+a/x) / 2 print(x) alternativní výpočet, který provede přesně 500 iterací"" x = 1.0 for i in range(500): x = (x+a/x) / 2 print(x) n n rr 3.18