2. Priebežný test z Programovania (1) v 2022 - variant A¶
Odovzdávaš len jeden skript test.py
, v ktorom budú všetky tvoje riešenia úloh. V odovzdanom riešení nepoužívaj import
a ani global
. Svojim funkciám (oproti zadaniu) môžeš zmeniť mená parametrov.
Napíš funkciu
dopln(tabulka, hodnota)
, ktorá do zadanej dvojrozmernej tabuľky doplní zadanú hodnotu tak, aby vznikla štvorcová tabuľka (rovnaký počet riadkov a stĺpcov). Funkcia nič nevypisuje ani nevracia, len modifikuje vstupnú tabuľku.>>> t = [[], [1, 2, 3]] >>> dopln(t, 9) >>> print(*t, sep='\n') [9, 9, 9] [1, 2, 3] [9, 9, 9]
Zadefinuj:
def dopln(tabulka, hodnota=0): ...
Daná funkcia
rek
kreslí pomocou korytnačej grafiky nejakú rekurzívnu krivku. Každá nakreslená čiara je zafarbená jednou zo štyroch farieb. Prepíš túto funkciu tak, aby namiesto kreslenia čiar vrátila n-ticu počtov čiar jednotlivých farieb. Samozrejme, že pritom nepoužiještkinter
:def rek(d, f=0): if d < 10: t.pencolor(('red', 'green', 'blue', 'yellow')[f%4]) t.fd(d) else: for i, u in enumerate((60, -120, 60, 0)): rek(d*(.3, .5, .5, .2)[i], f+i) t.lt(u)
Napríklad, by to malo fungovať takto:
>>> t = rek(100) >>> t (18, 17, 20, 21) >>> rek(200) (55, 53, 48, 49)
Uvedom si, že funkcia by mala správne fungovať aj pre viac spustení.
V textovom súbore dobs.txt sú slová oddelené medzerami, prípadne koncami riadkov. Nájdi trojicu rôznych slov, ktoré sú všetky zložené z rovnakých písmen. Keďže takýchto trojíc je v tomto súbore viac, nájdi trojicu čo najdlhších slov. Trojicu priraď do premennej
trojica
. Napríklad, výsledkom by mohla byť trojica:trojica = ('tma', 'mat', 'tam')
vtedy, keby sme nepotrebovali nájsť čo najdlhšiie takéto slová.
Dodefinuj metódy triedy:
class Dvojica: ...
tak, aby fungovalo:
>>> x = Dvojica(7, 13) # parametrami sú dve celé čísla >>> x (7, 13) >>> type(x) <class '__main__.Dvojica'> >>> y = Dvojica(10, 20) >>> z = x + y >>> type(z) <class '__main__.Dvojica'> >>> z (17, 33) >>> x.a 7 >>> z.b 33 >>> y.a = 13 ... AttributeError: property 'a' of 'Dvojica' object has no setter >>> z.b = 40 ... AttributeError: property 'b' of 'Dvojica' object has no setter
V reťazci je neprázdna množina čísel (celých a desatinných). Napíš funkciu
mnozina(retazec)
, ktorá z tohto reťazca vráti množinu čísel. V tomto reťazci môžu byť aj chybné zápisy, ktoré ale bude táto funkcia ignorovať. Napríklad:>>> m = mnozina('{3.14, 314, "314", 42, .314, 3.1.4}') >>> type(m) <class 'set'> >>> m {0.314, 314, 3.14, 42}
Zadefinuj:
def mnozina(retazec): ...
Napíš funkciu
vyhod(podmienka, mnozina)
, ktorá z danej množiny vyhodí všetky prvky, pre ktoré je splnená zadaná podmienka. Funkcia správne spracuje aj chybové situácie, ktoré môžu vzniknúť počas volania podmienky, Napríklad:>>> m = set('python') | set(range(3, 50, 7)) >>> m {'o', 'n', 't', 'y', 3, 38, 10, 45, 17, 'h', 24, 31, 'p'} >>> vyhod(lambda x: x < 't' or x%2, m) >>> m {'t', 'y', 3, 38, 10, 45, 17, 24, 31}
Zadefinuj:
def vyhod(podmienka, mnozina): ...
Riešenie odovzdaj v súbore test.py
(môžeš si ho stiahnuť z L.I.S.T.u), pričom prvé tri riadky súboru budú obsahovať:
# 2A. priebezny test 2022
# student: Janko Hrasko
# datum: 13.12.2022
zrejme ako študenta uvedieš svoje meno.