Maturujeme v Pythone

zbierka riešených úloh k maturite z informatiky

Autori © Mgr. Peter Kučera, Mgr. Jaroslav Výbošťok

Design © Mgr. Peter Kučera

Jazyková korektúra: Mgr. Katarína Kučerová

Prvé vydanie, 2018

Verzia číslo: 20180301

Vydavateľ: Mgr. Peter Kučera

Upozorňujeme, že elektronická kniha je dielom chráneným podľa autorského zákona a je určená len pre osobnú potrebu kupujúceho. Kniha ako celok ani žiadna jej časť nesmie byť voľne šírená na internete, ani nijako ďalej zverejňovaná. V prípade ďalšieho šírenia neoprávnene zasiahnete do autorského práva s dôsledkami podľa platného autorského zákona a trestného zákonníka.

Veľmi si vážime, že e-knihu ďalej nešírite. Len vďaka vašim nákupom dostanú autori, vydavatelia a kníhkupci odmenu za svoju prácu. Ďakujeme, že tak prispievate k vzniku ďalších skvelých kníh.

Zbierku a ďalšie materiály si môžete zakúpiť aj priamo na stránkach autora: http://www.programujemevpythone.sk/ a https://www.facebook.com/programujemevpythone

ISBN 978-80-972987-2-2 (pdf)

ISBN 978-80-972987-3-9 (epub)

ISBN 978-80-972987-4-6 (mobi)

Obsah

Obsah

Úvod

O zbierke úloh a maturite z informatiky

Prehľad úloh

Zadania úloh

1. Háďa

2. Háďa - priebeh hry

3. Displej v električke

4. Záznamy z meteorologických staníc

5. Označené jedlá

6. Noty

7. Náhodné skúšanie

8. Nájdi puknutý tanier

9. Preteky lodičiek

10. Vykreslenie krížovky 1

11. Súťaž v behu

12. Vyťaženosť liniek dopravného podniku

13. Žrút

14. Skok do diaľky

15. Zobrazenie zátvoriek

16. Mená v stĺpcoch

17. Tajná tabuľka

18. Kresliaci robot 1

19. Preklopenie obrázka

20. Tabuľka početností

21. Poprehadzovaný text 1

22. Poprehadzovaný text 2

23. Zašifrovaný text 1

24. Zašifrovaný text 2

25. Lotéria

26. Krajina

27. Vírus

28. Hlasovanie 1

29. Kompresia obrázka

30. NIM

31. Čiernobiely obrázok

32. Konverzia súboru 1

33. Spektrum odtieňov

34. Dekompresia obrázka

35. Vykreslenie komprimovaného obrázka

36. Vykreslenie krížovky 2

37. Hlasovanie 2

38. Spokojnosť zákazníkov 1

39. Spokojnosť zákazníkov 2

40. Analýza údajov

41. Výber jedla

42. Zachráň padajúce vajíčko

43. Pyrotechnik

44. Uhádni padajúce slovo

45. Učenie sa slovíčok

46. Obesenec

47. Čiarový kód

48. Násobilka

49. Rezervácia miesteniek

50. Obrys obrázka

51. Kompresia oznamu 1

52. Kompresia oznamu 2

53. Zástavba na ulici

54. Lodičky

55. Kresliaci robot 2

56. Editor levelov 1

57. Editor levelov 2

58. Trasa linky metra

59. Vyťaženosť autobusovej linky

60. Kalkulačka

61. Delenie

62. Anketa

63. Dopravný prieskum

64. Zasadací poriadok

Riešenia úloh

Príkazovník k učebnici Programujeme v Pythone

Príkazovník k učebnici Programujeme v Pythone 2

Použitá literatúra

Úvod

Malcolm Gladwell vo svojej knihe Výnimoční uvádza, že ak chce človek dosiahnuť úspech v istej oblasti, musí trénovať alebo odpracovať 10 000 hodín. Autor sa snaží pravidlom poukázať na to, že samotný talent nestačí alebo nie je nutný na dosiahnutie úspechu. Je však potrebné vynakladať množstvo úsilia a systematicky trénovať. Niektorí psychológovia jeho tvrdenie odmietajú.

Či už je tvrdenie pravdivé alebo nie, myslíme si, že prax nám pomáha zlepšovať sa v danej oblasti. Veríme, že týchto 64 úloh vám pomôže zlepšiť sa v programovaní a získať potrebnú prax, ktorú ocení nielen maturitná komisia, ale aj vy v ďalšom štúdiu či v práci.

Ak ste už pri programovaní zažili situáciu, že vás pohltilo natoľko, že ste zabudli na plynutie času a všetkého okolo, nepociťovali ste hlad, smäd ani únavu, dostali ste sa do stavu flow. Flow pomenoval a definoval psychológ Mihaly Csikszentmihalyi.

Dôležitým predpokladom stavu flow je, že náročnosť zadanej úlohy je primeraná zručnostiam. Keď sa naše zručnosti zlepšujú a s nimi sa primerane zvyšuje náročnosť úloh, nastáva pravé zaujatie a pocit zmysluplnosti – teda flow.

Nie je nutné, aby ste vyriešili všetky úlohy a v danom poradí. Vyberajte si ich tak, aby vás bavili a boli pre vás primeranou výzvou, nech vás programovanie pohltí a baví :)

Prajeme vám príjemné chvíle a flow pri riešení úloh, ale aj výborný výsledok na maturitnej skúške.

Peter Kučera, Jaroslav Výbošťok

Vstupné textové súbory a obrázky k úlohám si môžete stiahnuť z: http://bit.ly/2oIFjuX

O zbierke úloh a maturite z informatiky

Priebeh maturitnej skúšky

Maturitnú skúšku z informatiky tvorí ústna odpoveď študenta pred trojčlennou maturitnou komisiou. Študent si vyžrebuje jedno zo schválených maturitných zadaní. Zadanie obsahuje dve úlohy. Prvá úloha je z programovania a druhá úloha je zo základov informatiky. Celkový čas prípravy na obe úlohy je 30 minút. Študent si určuje, ako si čas prípravy rozdelí medzi jednotlivé úlohy. Po príprave nasleduje ústna odpoveď, ktorá trvá 20 minút.

V tejto zbierke nájdete prvé (programátorské) úlohy maturitných zadaní.

Čo všetko má študent vedieť na maturitu, určujú Cieľové požiadavky na vedomosti a zručnosti maturantov z informatiky, ktoré sú zverejnené na stránke Štátneho pedagogického ústavu (www.statpedu.sk).

Čo obsahuje táto e-kniha?

Zbierka obsahuje 64 úloh (34 grafických a 30 konzolových), ktoré svojou náročnosťou a zložením spĺňajú požiadavky na prvú časť (úlohu) maturitného zadania z informatiky (algoritmická úloha). V prvej časti zbierky sa nachádza zadanie úloh. Každá úloha má na konci odkaz na jej riešenie (riešenie obsahuje odkaz na zadanie), ktoré je v druhej časti zbierky. Niektoré úlohy obsahujú aj viaceré alternatívy riešenia. Pri zadaniach alebo riešeniach sa môžu nachádzať aj doplňujúce otázky, ktoré vás majú motivovať k premýšľaniu a pomôcť vám rozvíjať kritické myslenie a objavovanie súvislostí. Na konci riešenia každej úlohy sú symboly, ktoré popisujú, ktoré poznatky sú v riešení úlohy využité (napr.: textové reťazce, zoznamy, n-tice, funkcie a pod.). Netvrdíme, že bez týchto poznatkov sa úlohy nedajú vyriešiť.

Na začiatku zbierky nájdete prehľad úloh spolu s popisom poznatkov, ktoré môžu byť na riešenie úlohy potrebné.

Ako riešiť úlohy?

Úlohy môžete riešiť v ľubovoľnom poradí. Ani ich umiestnenie v zbierke nemá kritérium. Úlohu by ste mali vyriešiť približne za 20 až 30 minút (čas z prípravy na maturite + čas z odpovede). Nie je nutné, aby ste úlohu na maturite vyriešili už počas prípravy, môžete ju dokončiť aj v priebehu odpovede. Náročnosť úloh zodpovedá náročnosti prvej úlohy maturitných zadaní. Netvrdíme, že všetky úlohy majú rovnakú náročnosť, no sú v istých medziach náročnosti prvej úlohy maturitného zadania. Môže sa stať, že niektorá úloha sa vám zdá veľmi ľahká a iná veľmi ťažká, no môže to byť spôsobené len kontextom úlohy, na ktorý ste doposiaľ neboli zvyknutí, alebo ste práve úlohy s podobným kontextom trénovali.

Odporúčame vám zapisovať si do tabuľky (http://bit.ly/2F63JJP) dátum riešenia úlohy, celkový čas na jej vyriešenie a nejaké poznámky. Zo zápisov v tabuľke by ste mali vidieť, že sa postupne znižuje čas potrebný na vyriešenie úlohy, čo znamená, že získavate potrebnú prax. Vhodné je tieto úlohy riešiť aj priamo na vyučovaní. V rámci skupiny môžete mať spoločnú zdieľanú tabuľku (napríklad cez Google Drive), kde si informácie o vyriešených úlohách zapisuje každý študent zo skupiny (vo svojich troch stĺpcoch). Takto budete vedieť odhadnúť časovú náročnosť úlohy aj podľa údajov od svojich spolužiakov, alebo budete vidieť, ako rýchlo ste ju v porovnaní s nimi vyriešili vy.

Skladba úlohy

V prvej úlohe maturitného zadania (programátorskej) má byť definovaný cieľ, ktorý má študent dosiahnuť vytvorením programu v konkrétnom programovacom jazyku. V zadaní úlohy nemajú byť prezradené prostriedky, ktorými sa cieľ má dosiahnuť. Výber prostriedkov si určuje študent a ich správny výber je súčasťou hodnotenia. To znamená, že v úlohe nemá byť prezradené, či sa na riešenie má použiť napríklad cyklus a ktorý cyklus, a tiež ktorý typ premennej alebo dátovej štruktúry sa má v programe využiť.

Úlohy v zbierke sú členené na menšie podúlohy (alebo nejaké vlastnosti programu) a tie sú zapísané v odrážkach. Často sú tieto odrážky gradovanými čiastkovými podúlohami celej úlohy. Toto členenie má pomôcť aj slabšiemu študentovi vyriešiť aspoň časť úlohy. Napríklad v úlohe s čítaním textového súboru môže byť v prvej odrážke prečítanie prvého riadku súboru a jeho vypísanie, čím študent preukáže, že vie minimálne správne otvoriť vstupný súbor a prečítať prvý riadok. Až podúloha v ďalšej odrážke môže požadovať prečítanie a spracovanie celého súboru. Tiež sa môže stať, že prvá odrážka popisuje podmnožinu úlohy, ktorú treba spraviť v ďalšej odrážke. V niektorých takýchto zadaniach, ak vieme, stačí vyriešiť náročnejšiu časť popísanú v ďalšej odrážke (čím preukážeme aj vyriešenie elementárnejšej úlohy, o ktorú sa zachytíme v prípade, že náročnejšiu časť nevieme vyriešiť).

Ak sa v úlohe pracuje s textovým súborom, jeho ukážku nájdete priamo v zadaní. Tieto vstupné súbory sú pripravené ako súčasť zbierky. Ich názov je rovnaký ako je v zadaní. Riešenie úloh nájdete aj v samostatných súboroch (názov_úlohy.py), sú priložené k e-knihe alebo si ich stiahnete (pokiaľ máte platnú licenciu e-knihy) zo stránky: http://bit.ly/2oIFjuX

Čo ešte v našich učebniciach nezaznelo a nájdete v riešení niektorých úloh?

V riešení niektorých úloh sme použili aj funkcie, ktoré sme nepoužili v našich učebniciach. Napriek tomu sme ich zaradili do riešenia, aby ste sa aj pri tomto opakovaní naučili aj nejaké nové drobnosti. Tu zhrnieme niektoré z nich:

canvas.create_polygon(x1, y1, x2, y2, .... xn, yn) - príkaz kreslí uzavreté vyplnené útvary. Je veľmi podobný kresleniu čiar canvas.create_line(), rozdiel je len v tom, že čiarou automaticky spojí posledný nakreslený bod s prvým a vnútro útvaru vyplní nastavenou farbou (fill='farba').

Dvojicu príkazov:

button1 = tkinter.Button(text='popis', command=funkcia)

button1.pack()

môžeme skrátene zapísať aj takto:

tkinter.Button(text='popis', command=funkcia).pack()

Pri odchytávaní udalostí na stlačenie klávesnice nemusíme použiť príkaz canvas.bind_all(), stačí aj canvas.bind(). Pred tým aktivujeme odchytávanie klávesnice priamo z canvasu pomocou funkcie canvas.focus_set(). Postačí nám teda bind, nepotrebujeme odchytávať udalosť z ktorýchkoľvek iných widgetov (súčiastok) v okne aplikácie.

Prehľad všetkých úloh

1. Háďa______________________________________[], Cnv, aft.

2. Háďa - priebeh hry________________________'', txt, fx()

3. Displej v električke______________________'', [], txt, Cnv, fx(), aft.

4. Záznamy z meteorologických staníc_________'', (), [], txt

5. Označené jedlá____________________________'', {}, txt

6. Noty______________________________________'', txt, Cnv, fx(), aft.

7. Náhodné skúšanie__________________________'', []

8. Nájdi puknutý tanier______________________'', [], Cnv, fx()

9. Preteky lodičiek__________________________'', [], Cnv, fx()

10. Vykreslenie krížovky 1___________________'', (), [], txt, Cnv, fx()

11. Súťaž v behu_____________________________(), [], txt

12. Vyťaženosť liniek dopravného podniku_____'', [], txt

13. Žrút_____________________________________'', (), [], Cnv

14. Skok do diaľky___________________________(), [], {}, txt

15. Zobrazenie zátvoriek_____________________'', [], Cnv

16. Mená v stĺpcoch__________________________'', [], txt

17. Tajná tabuľka____________________________'', []

18. Kresliaci robot 1________________________'', [], Cnv

19. Preklopenie obrázka______________________'', [], [[]], txt, Cnv

20. Tabuľka početností_______________________'', [], txt

21. Poprehadzovaný text 1____________________'', [], txt

22. Poprehadzovaný text 2____________________'', [], txt

23. Zašifrovaný text 1_______________________'', txt, fx()

24. Zašifrovaný text 2_______________________'', txt, fx()

25. Lotéria__________________________________'', [], txt, fx()

26. Krajina__________________________________[], Cnv, fx()

27. Vírus____________________________________'', [], txt, fx()

28. Hlasovanie 1_____________________________'', (), [], txt

29. Kompresia obrázka________________________'', txt, fx()

30. NIM______________________________________'', Cnv, fx()

31. Čiernobiely obrázok______________________'', txt, Cnv, fx()

32. Konverzia súboru 1_______________________'', txt, fx()

33. Spektrum odtieňov________________________'', [], txt, Cnv

34. Dekompresia obrázka______________________'', [], txt, fx()

35. Vykreslenie komprimovaného obrázka_______[], txt, Cnv, fx()

36. Vykreslenie krížovky 2___________________'', (), [], txt, Cnv, fx()

37. Hlasovanie 2_____________________________'', [], txt

38. Spokojnosť zákazníkov 1__________________'', [], txt

39. Spokojnosť zákazníkov 2__________________'', [], txt

40. Analýza údajov___________________________'', [], txt

41. Výber jedla______________________________'', [], txt, Cnv

42. Zachráň padajúce vajíčko_________________'', Cnv, fx(), aft.

43. Pyrotechnik______________________________[], Cnv, fx(), aft.

44. Uhádni padajúce slovo____________________'', Cnv, fx(), aft.

45. Učenie sa slovíčok_______________________'', [], txt

46. Obesenec_________________________________'', [], txt

47. Čiarový kód______________________________'', txt, Cnv, fx()

48. Násobilka________________________________'', (), [], txt, fx()

49. Rezervácia miesteniek____________________'', [], txt, Cnv, fx()

50. Obrys obrázka____________________________txt, Cnv

51. Kompresia oznamu 1_______________________'', []

52. Kompresia oznamu 2_______________________'', []

53. Zástavba na ulici________________________[], txt, Cnv

54. Lodičky__________________________________[[]], txt, Cnv, fx()

55. Kresliaci robot 2________________________'', [], txt, Cnv, fx()

56. Editor levelov 1_________________________[], txt, Cnv, fx()

57. Editor levelov 2_________________________[], Cnv, fx()

58. Trasa linky metra________________________'', [], txt, Cnv

59. Vyťaženosť autobusovej linky_____________'', [], txt, Cnv, fx()

60. Kalkulačka_______________________________'', Cnv, fx()

61. Delenie__________________________________'', (), Cnv, fx()

62. Anketa___________________________________'', [], txt, Cnv, fx()

63. Dopravný prieskum________________________(), [], txt

64. Zasadací poriadok________________________'', (), [], txt, Cnv, fx()

Prehľad grafických úloh

1. Háďa______________________________________[], Cnv, aft.

3. Displej v električke______________________'', [], txt, Cnv, fx(), aft.

6. Noty______________________________________'', txt, Cnv, fx(), aft.

8. Nájdi puknutý tanier______________________'', [], Cnv, fx()

9. Preteky lodičiek__________________________'', [], Cnv, fx()

10. Vykreslenie krížovky 1___________________'', (), [], txt, Cnv, fx()

13. Žrút_____________________________________'', (), [], Cnv

15. Zobrazenie zátvoriek_____________________'', [], Cnv

18. Kresliaci robot 1________________________'', [], Cnv

19. Preklopenie obrázka______________________'', [], [[]], txt, Cnv

26. Krajina__________________________________[], Cnv, fx()

30. NIM______________________________________'', Cnv, fx()

31. Čiernobiely obrázok______________________'', txt, Cnv, fx()

33. Spektrum odtieňov________________________'', [], txt, Cnv

35. Vykreslenie komprimovaného obrázka_______[], txt, Cnv, fx()

36. Vykreslenie krížovky 2___________________'', (), [], txt, Cnv, fx()

41. Výber jedla______________________________'', [], txt, Cnv

42. Zachráň padajúce vajíčko_________________'', Cnv, fx(), aft.

43. Pyrotechnik______________________________[], Cnv, fx(), aft.

44. Uhádni padajúce slovo____________________'', Cnv, fx(), aft.

47. Čiarový kód______________________________'', txt, Cnv, fx()

49. Rezervácia miesteniek____________________'', [], txt, Cnv, fx()

50. Obrys obrázka____________________________txt, Cnv

53. Zástavba na ulici________________________[], txt, Cnv

54. Lodičky__________________________________[[]], txt, Cnv, fx()

55. Kresliaci robot 2________________________'', [], txt, Cnv, fx()

56. Editor levelov 1_________________________[], txt, Cnv, fx()

57. Editor levelov 2_________________________[], Cnv, fx()

58. Trasa linky metra________________________'', [], txt, Cnv

59. Vyťaženosť autobusovej linky_____________'', [], txt, Cnv, fx()

60. Kalkulačka_______________________________'', Cnv, fx()

61. Delenie__________________________________'', (), Cnv, fx()

62. Anketa___________________________________'', [], txt, Cnv, fx()

64. Zasadací poriadok________________________'', (), [], txt, Cnv, fx()

Prehľad konzolových úloh

2. Háďa - priebeh hry________________________'', txt, fx()

4. Záznamy z meteorologických staníc_________'', (), [], txt

5. Označené jedlá____________________________'', {}, txt

7. Náhodné skúšanie__________________________'', []

11. Súťaž v behu_____________________________(), [], txt

12. Vyťaženosť liniek dopravného podniku_____'', [], txt

14. Skok do diaľky___________________________(), [], {}, txt

16. Mená v stĺpcoch__________________________'', [], txt

17. Tajná tabuľka____________________________'', []

20. Tabuľka početností_______________________'', [], txt

21. Poprehadzovaný text 1____________________'', [], txt

22. Poprehadzovaný text 2____________________'', [], txt

23. Zašifrovaný text 1_______________________'', txt, fx()

24. Zašifrovaný text 2_______________________'', txt, fx()

25. Lotéria__________________________________'', [], txt, fx()

27. Vírus____________________________________'', [], txt, fx()

28. Hlasovanie 1_____________________________'', (), [], txt

29. Kompresia obrázka________________________'', txt, fx()

32. Konverzia súboru 1_______________________'', txt, fx()

34. Dekompresia obrázka______________________'', [], txt, fx()

37. Hlasovanie 2_____________________________'', [], txt

38. Spokojnosť zákazníkov 1__________________'', [], txt

39. Spokojnosť zákazníkov 2__________________'', [], txt

40. Analýza údajov___________________________'', [], txt

45. Učenie sa slovíčok_______________________'', [], txt

46. Obesenec_________________________________'', [], txt

48. Násobilka________________________________'', (), [], txt, fx()

51. Kompresia oznamu 1_______________________'', []

52. Kompresia oznamu 2_______________________'', []

63. Dopravný prieskum________________________(), [], txt

26

Krajina

Pomocou programu môžeme generovať a vykreslovať náhodnú krajinu. Vytvorte program, ktorý:

- vygeneruje údaje pre kopec, pričom si najprv náhodne určí x-ovú pozíciu vrcholu a y-ovú súradnicu počiatočnej výšky kopca. Pre kopec platí, že jeho výška je v prvej časti (pred vrcholom) neklesajúca a za vrcholom nerastúca. Zmena v reliéfe kopca môže byť každých 10 bodov a je náhodná voči predchádzajúcemu stavu výšky.

- vykreslí kopec pomocou príkazu canvas.create_polygon(). Farba kopca je niektorý náhodný odtieň zelenej farby.

- sa náhodne rozhodne, či ide kresliť kopec alebo údolie (či je najprv neklesajúca postupnosť a potom nerastúca alebo opačne) a vykreslí jeden kopec alebo jedno údolie.

- opakovane vykreslí viac náhodných kopcov / údolí, čím vznikne vygenerovaná krajina,

- po stlačení medzery nakreslí novú sériu náhodných kopcov a údolí.

Ukážka jedného kopca alebo jedného údolia:

Ukážka viacerých kopcov a údolí:

Otázky:

1. Navrhnite formát textového súboru na uloženie údajov nakreslenej a vygenerovanej krajiny.

2. Dá sa z ukážky určiť, koľko kopcov (resp. údolí) program vygeneroval? Zdôvodnite svoju odpoveď.

riešenie úlohy

40

Analýza údajov

Lokálne potraviny sa rozhodli, že zistia spokojnosť s poskytnutými službami u svojich zákazníkov. Pri východe z predajne nainštalovali box, v ktorom zákazník vyjadrí svoju spokojnosť / nespokojnosť pomocou dotykovej obrazovky. Všetky vyjadrenia sa zapíšu do textového súboru. Vyjadrenia sú v textovom súbore spokojnost_1.txt (k dispozícii sú aj súbory spokojnost_2.txt a spokojnost_3.txt). Na každom riadku je jedno vyjadrenie zákazníka. Vyjadrenie obsahuje čas zaznamenania v tvare hodina:minúta, potom nasleduje jedna medzera a text áno alebo nie podľa toho, či bol zákazník spokojný alebo nespokojný. V súbore sú vyjadrenia z viacerých dní.

Ukážka vstupného textového súboru:

15:38 áno

15:39 áno

14:33 áno

08:38 áno

07:42 áno

15:20 áno

Ukážka výstupu:

1. deň - počet reakcií:2

2. deň - počet reakcií:1

3. deň - počet reakcií:1

4. deň - počet reakcií:2

Počet všetkých vyjadrení: 6

Hodina:7 Reakcií zákazníkov:1

Hodina:8 Reakcií zákazníkov:1

Hodina:14 Reakcií zákazníkov:1

Hodina:15 Reakcií zákazníkov:3

Počet dní: 4

Vytvorte program, ktorý zistí a vypíše:

- celkový počet vyjadrení,

- počet všetkých vyjadrení v jednotlivých hodinách dňa, ale iba v tých hodinách, keď boli nejaké vyjadrenia,

- počet dní, počas ktorých sa zbierali vyjadrenia (predpkladajme, že každý deň bolo zaznamenané aspoň jedno vyjadrenie a že vstupné dáta sú zapísané v takom poradí, ako boli zrealizované),

- počet vyjadrení v jednotlivých dňoch.

riešenie úlohy

26

Krajina

import tkinter, random

canvas = tkinter.Canvas(width=700, height=500, bg='lightblue')

canvas.pack()

def kresli_kopec():

kopec = []

smer = random.choice((1,-1))                #  {riadok A}

kopec.append(0)

kopec.append(random.randint(200, 500))

vrchol = random.randint(100, 600)

for i in range(vrchol // 10):

nova_hodnota = kopec[-1] + smer * random.randint(0, 5)

kopec.append(i*10+1)

kopec.append(nova_hodnota)

smer = -1 * smer

for i in range((700-vrchol) // 10 + 10):

nova_hodnota = kopec[-1] + smer * random.randint(0, 5)

kopec.append(i*10+vrchol)

kopec.append(nova_hodnota)

kopec = [0, 500] + kopec + [700, 500]

farba = '#00{:02x}00'.format(random.randint(100, 200)) #  {riadok B}

canvas.create_polygon(kopec, fill=farba, outline='black')

def prekresli(event):

canvas.delete('all')

for i in range(10):

kresli_kopec()

#kresli_kopec()

canvas.bind_all('<space>', prekresli)

Otázky:

1. Čo spôsobí zápis na riadku {riadok A}? Ako inak by sme ho mohli zapísať?

2. Vysvetlite zápis na riadku {riadok B}.

3. Ako je vyriešená zmena stúpania medzi prvou časťou kopca a druhou časťou?

4. Koľko informácií o kopcoch je v pamäti počas behu tohto programu? Je možné optimalizovať využitie pamäte? Ak áno, ako?

zadanie úlohy

[] Cnv fx()

40

Analýza údajov

vyjadreni = [0] * 24

subor = open('subory/spokojnost_0.txt', 'r')

dni = 0

cas1 = '00:00'

pocet_v_dni = 0

for riadok in subor:

riadok = riadok.strip()

info = riadok.split()

cas2 = info[0]

cas2_roz = info[0].split(':')

hodina = int(cas2_roz[0])

minuta = int(cas2_roz[1])

vyjadreni[hodina] += 1

if cas2 < cas1:

dni += 1

print('{}. deň - počet reakcií:{}'.format(dni, pocet_v_dni))

pocet_v_dni = 1

else:

pocet_v_dni += 1

cas1 = cas2

print('{}. deň - počet reakcií:{}'.format(dni, pocet_v_dni))

pocet_vyjadreni = sum(vyjadreni)

print('Počet všetkých vyjadrení:', pocet_vyjadreni)

for i in range(24):

if vyjadreni[i] > 0:

print('Hodina:{} Reakcií zákazníkov:{}'.format(i, vyjadreni[i]))

print('Počet dní:', dni)

Otázky:

1. Podľa čoho vieme, že záznam je z ďalšieho dňa?

2. Ako funguje porovnávanie časov?

zadanie úlohy

'' [] txt