Search
Aritmetická posloupnost je posloupnost čísel, která má stálý rozdíl sousední členů. Tomuto rozdílu říkáme diference. Například posloupnost
0 5 10 15 20 25 30 ...
má diferenci 5.
Zadejte diferenci: 7 0 7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 112 119 126 133
Zadejte prvni clen posloupnosti: 14 Zadejte diferenci: 7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 112 119 126 133 140 147
Řešení
Jednou z možností, jak můžeme odhadnout hodnotu čísla pi, je následující rovnice:
Napište program, který podle této rovnice odhadne hodnotu pi (zkuste co nejpřesněji).
import math refPi = math.pi
Vykreslete následující matice:
1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Napište program, který vykreslí tabulku malé násobilky, tj. tabulku všech vzájemných násobků čísel 1 až 10 (dodržte zarovnání v jednotlivých sloupcích):
1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
print("%5d" % a)
Další informace o formátování výpisu v dokumentaci.
Vykreslete následující obrazce:
X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X
Dalším typem cyklu je while cyklus. Ten opakuje vnitřní příkazy do té doby, dokud platí jeho podmínka.
V následujícím příkladě se vypisuje text “Hello world!” do té doby, dokud se hodnota i nesníží na nulu. V každé iteraci se hodnota i sníží o jedna, a tak se tento text vypíše právě 10-krát.
i = 10 while i > 0: print("Hello world!") i = i - 1
Napište program, který bude číst čísla ze vstupu, dokud uživatel nezadá nulu. Poté vypíše jejich součet.
Upravete tento program tak, aby také vypsal:
Přečtěte čísla A a B. Vypište nejmenší číslo, které je dělitelné B a je větší než A.
Přečtěte na vstupu jedno celé číslo a vypište jeho binární zápis.
Vzorový vstup:
21
Vzorový výstup:
10101
Počítač vygeneruje náhodné číslo od 1 do 100 a vy ho musíte uhádnout. Když odpovíte špatně, počítač vám prozradí, jestli je vygenerované čílo větší nebo menší. Když uhádnete, program končí a pogratuluje vám.
import random max = 100 to_be_guessed = int(max * random.random()) + 1
Vzorový průběh:
Zkus uhadnout moje cislo: 50 Moje cislo je mensi. Zkus uhadnout moje cislo: 20 Moje cislo je vetsi. Zkus uhadnout moje cislo: 30 Moje cislo je vetsi. Zkus uhadnout moje cislo: 40 Moje cislo je vetsi. Zkus uhadnout moje cislo: 45 Uhadl jsi :-) 45
Člověk si myslí číslo od 1 do 100 a počítač se jej snaží uhádnout. Může se ovšem zeptat pouze, jestli je hádané čílo větší než nějaká hodnota. Napiště program, který co nejrychleji uhádne toto číslo.
Myslete si cislo mezi 1 a 100 Je tvoje cislo vetsi nez 50 ? (y/n) n Je tvoje cislo vetsi nez 25 ? (y/n) y Je tvoje cislo vetsi nez 38 ? (y/n) y Je tvoje cislo vetsi nez 44 ? (y/n) n Je tvoje cislo vetsi nez 41 ? (y/n) y Je tvoje cislo vetsi nez 43 ? (y/n) n Je tvoje cislo vetsi nez 42 ? (y/n) n Vase cislo je 42
Načtěte celé číslo ze standardního vstupu a vypište nejmenší prvočíslo, které je větší než zadané číslo.
Pokud pracujeme s větším množstvím hodnot, je téměř nemožné mít pro každou hodnotu vlastní proměnnou. V těchto případech používáme seznam (anglicky list), který je uspořádanou skupinou více hodnot. Seznam vytvoříte pomocí hranatých závorek.
cisla = [3, 5, 7, 11]
Seznam může mít libovolný počet prvků a může tedy být i prázdný!
Pro zjištění prvku na i-té pozici lze použít indexování.
seznam[i]
Nezapomínejte, že seznam je indexovaný od nuly (tedy první prvek má index 0.) Dokonce je možné indexovat prvky seznamu odzadu.
seznam[-1] # Posledni prvek seznam[-2] # Predposledni prvek
Pokud prvek seznamu neexistuje, program skončí s chybou, tedy je duležité vědět, jak velký seznam je. Pro tento případ se používá funkce len(), která vrátí počet prvků.
velikost = len(seznam)
Pokud chcete získat více prvků, lze použít takzvaný slicing.
seznam2 = seznam[2:4]
Tento příkaz vrátí nový seznam o dvou prvcích s indexy 2 a 3. Obecně slicing funguje podobně jako range, tedy seznam[a:b] bere prvky s indexy <a; b).
Stejně jako u range funguje i takzvanný step, tedy kód
seznam[2:6:2]
Příklady použití:
cisla = [2, 3, 5, 7] # vytvoreni seznamu print(cisla) # vypise [2, 3, 5, 7] cisla.append(13) # pridani cisla 13 na konec seznamu print(cisla) # vypise [2, 3, 5, 7, 13] cisla.insert(4, 11) # pridani cisla 11 na pozici 4 print(cisla) # vypise [2, 3, 5, 7, 11, 13] x = cisla.pop(0) # odstrani prvni cislo ze seznamu print(cisla) # vypise [3, 5, 7, 11, 13]
cisla = [3, 2, 1, 4, 5] cisla.sort() # serazeni seznamu podle velikosti print(cisla) # vypise [1, 2, 3, 4, 5] cisla.reverse() # obraceni poradi cisel v seznamu print(cisla) # vypise [5, 4, 3, 2, 1]
N-tice (anglicky tuple) je datová struktura podobná seznamu. N-tice se od seznamů liší tím, že je nelze měnit, a tedy nelze volat funkce append(), insert(), atd. Proto se používají v případech, kdy data nepotřebujeme a nechceme měnit. N-tici vytvoříte pomocí kulatých závorek.
dny = ("pondeli", "utery", "streda", "ctvrtek", "patek", "sobota", "nedele")
Ze seznam můžeme vytvořit novou n-tici použitím funkce tuple().
Z n-tice můžeme vytvořit nový seznam použitím funkce list().
Napište program, který načte 10 čísel, uloží je do seznamu a obrátí jejich pořadí. Nepoužívejte funkci reverse().
reverse()
Napište program, který načte 5 čísel a najde medián.
Napište program, který načte 10 čísel najde mezi nimi dvě čísla taková, že jejich rozdíl je největší možný.
Napište program, který načte 10 čísel najde mezi nimi dvě čísla taková, že jejich rozdíl je nejmenší možný.
Napište program, který načte 10 čísel a vypíše je seřazené podle velikosti. Nepoužívejte funkci sort().
sort()
V této sekci se lehce seznámíme s dalším odvětvím informatiky, známým pod pojmem počítačová grafika, a hlavně si tu zopakujeme vše, co se dosud probíralo a co už byste měli ovládat (větvení programu, cykly, funkce, moduly, seznamy).
Každý obrázek v počítači se skládá z mnoha malých čtverečků, kterým se říká pixely. Pixely tvoří pravoúhlou mřížku (označme ji jako bitmapu), která pokrývá celý obrázek (Ano. I tenhle obrázek, který na vás svítí z monitoru!) Jeden pixel typicky v paměti počítače popíšeme pomocí tří čísel. Tato trojice je známá jako RGB. Jedná se o tři základní barvy (červená, zelená a modrá). Každé z těchto tří čísel vyjadřuje, jak moc daná barva ovlivní výslednou barvu celého pixelu. Kombinací hodnot jednotlivých barev (což za nás dělá displej), pak dostaneme výslednou barvu, kterou nám náš monitor odpovídající pixel obarví.
V následujícím cvičení si zkusíme zapsat do paměti počítače posloupnost čísel a necháme počítač, aby tato čísla interpretoval jako hodnoty RGB. Uvidíme, jestli se nám podaří tímto postupem nakreslit nějaký pěkný obrázek.
Paměť počítače pro nás bude jednoduše pythonovský seznam. Do seznamu budeme zapisovat postupně RGB všech pixelů na obrázku, který se snažíme vytvořit. Tento seznam pak uložíme do souboru a počítači řekneme, že tento soubor je obrázek.
Zní to složitě?
Nebojte se, část práce jsme již udělali za vás. Stáhněte si modul libbitmap.py, ve kterém jsou již uložené RGB některých základních barev a který nabízí funkci na zápis seznamu s daty do souboru .PPM, což je jednoduchý obrázkový soubor (mnohem jednodušší než například .PNG, .JPG či jiné, které pravděpodobně znáte).
Ufff. To už je ale textu. Rychle sem hodíme nějaký ukázkový kód, který nakreslí třeba žlutý čtverec o délce strany 50 pixelů.
""" bitmap_test.py created by Jan Toth (c) 2017 Ukazka pouziti knihovny 'libbitmap.py' """ # Importujeme vse z knihovny 'libbitmap.py' from libbitmap import * # Nastavime si pocatecni hodnoty nasich dat rozmer = 50 obrazek = [] # Zapiseme data do seznamu # Colours.<barva> nam poskytuje importovana knihovna # Pro prehled vsech dostupnych barev nahlednete do knihovny for i in range(rozmer**2): obrazek.extend(Colours.YELLOW) # Ulozime vytvorena data do souboru # save_image(obrazek, jmeno, sirka, vyska) nam poskytuje importovana knihovna save_image(obrazek, "zluty_ctverec", rozmer, rozmer)
Zdá se vám to jednoduché? Pokud ano, zkuste nakreslit vlastní obrázky a pochlubte se ostatním. Zajímavé mohou být státní vlajky. Začněte například polskou, pak můžete přejít na německou či francouzskou. No a samozřejmě by byla také hezká vlajka česká!
from libbitmap import* moje_barva = Colours.get_colour_from_hex(66ffe0) # A muzete pouzivat novou barvu!
Pokud se budete chtít svými výtvory pochlubit, pravděpodobně je budete chtít zobrazit ve Windows. Tento operační systém však bohužel tak jednoduchý formát, jako je .PPM, nezvládá interpretovat. Pro převod na např. .PNG můžete použít tento online konvertor.