IB111 Základy programování Fran šek Lachman lachmanfran sek@mail.muni.cz cvičení 3 2. říjen 2018 Osnova poznámka k domácí úloze kontrolní otázky pokročilejší výpočty, return Docházka 3 Kontrolní otázky 4 import random random.randint(1,6) 5 Jaký je rozdíl mezi číselnými typy int a float ? 6 import random random.randint(1,6) 7 Jak zapisujeme operace „celočíselné dělení“ a „dělení se zbytkem“? 8 type(3) type(3.0) type(3 // 3) type(3 / 3) type(3.0 / 3) type(3.0 // 3) 9 import random random.randint(1,6) 10 Co dělají funkce round , math.floor , math.ceil ? 11 from math import floor, ceil help(round) help(floor) help(ceil) 12 import random random.randint(1,6) 13 Jaká je základní myšlenka algoritmu pro výpočet ciferného součtu? 14 import random random.randint(1,6) 15 Jaká je základní myšlenka algoritmu pro výpočet odmocniny? 16 import random random.randint(1,6) 17 Jaká je základní myšlenka algoritmu pro převod na binární zápis? 18 import random random.randint(1,6) 19 Jaký je význam příkazu return? Jaký je rozdíl mezi m, když na konci funkce zavoláme return a print ? 20 Jaký je rozdíl mezi return a return x ? 21 def five(): return 5 a = five() b = five() type(a) print(a) print(a + b) 22 def double(a): b = a * 2 return b # zkráceně return a * 2 b = double(5) print("something else") print(b) 23 print(double(five())) print(double(double(double(double(five()))))) 24 x = five() y = double(x) print(x + y) def print_double(x): print(x*2) x = five() y = print_double(x) print(x + y) 25 def nothing(): return nothing() a = nothing() type(a) 26 def my_function(): print("jsem tu") return print("sem se vypocet nikdy nedostane") my_function() 27 Návrat z funkce pomocí return def my_max(number1, number2): if number1 == number2: print("jsou stejna") return number1 if number1 < number2: print("prvni je vetsi") return number1 print("druhe je vetsi") return number2 a = my_max(2, 2) b = my_max(2, 3) c = my_max(3, 2) print(a, b, c) 28 Jaký význam má pass ? 29 Prázdné tělo - pass def without_return(): pass spustitelný kód bez implementace explicitně vyjádřené "nedělání ničeho" 30 Příklady - 3.1. Pokročilé počítání 31 Napište funkci series_sum(n) , která vrá součet čísel od 1 do n . def series_sum(n): pass 32 3.1.1. Faktoriál pomocí for Napište funkci factorial(n) , která vrací faktoriál čísla n a využívá cyklus for . (Připomeňme, že n! = 1·2·3· ... ·n a že 0! = 1 .) def factorial(n): pass 33 3.1.3. Ciferný součet Napište funkci digit_sum(n) , která vrátí ciferný součet čísla n . def digit_sum(n): pass 34 Příklady - 3.2. Dělitelnost a prvočísla 35 3.2.1. Dělitelé Napište funkci divisors(n) , která vypíše všechny dělitele čísla n . def divisors(n): pass 36 3.2.2. Počet dělitelů Napište funkci divisors_count(n) , která vrátí počet dělitelů čísla n . def divisors_count(n): pass 37 3.2.3. Je prvočíslo Napište funkci is_prime(n) , která vrátí True pokud je číslo n prvočíslo, jinak False . def is_prime(n): pass 38 3.2.4. Prvočísla menší než n Napište funkci primes_less_than(limit) , která vypíše všechna prvočísla menší než limit . def primes_less_than(limit): pass 39 3.2.12. Euklidův algoritmus Implementujte Euklidův algoritmus pomocí funkce euklid(a, b) . def euklid(a, b): pass 40 Příklady - 3.3. Aproximace 3.3.1. Eulerovo číslo Napište funkci e() pro přibližný výpočet Eulerova čísla pomocí nekonečného součtu s přesností na miliontiny. 41 def e(): pass 42 Příklady - 3.4. Převody mezi číselnými soustavami 43 3.4.1. Převod z desítkové soustavy do dvojkové Napište funkci convert_10_to_2(n) , která vrátí zadané číslo n ve dvojkové soustavě jako řetězec. def convert_10_to_2(n): pass 44 3.4.2. Převod z dvojkové soustavy do desítkové Napište funkci convert_2_to_10(n) , která vrátí zadaný řetězec n reprezentující binární číslo v desítkové soustavě jako int. def convert_2_to_10(n): pass 45 Osnova poznámka k domácí úloze kontrolní otázky pokročilejší výpočty, return 46