2. Priebežný test z Programovania (1) v 2022 - variant C¶
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
oprav(tabulka, n)
, ktorá zo zadanej dvojrozmernej tabuľky spraví štvorcovú tabuľka veľkostin
xn
. Funkcia nič nevypisuje ani nevracia, len modifikuje vstupnú tabuľku.>>> t = [[], [1, 2, 3]] >>> oprav(t, 4) >>> print(*t, sep='\n') [0, 0, 0, 0] [1, 2, 3, 0] [0, 0, 0, 0] [0, 0, 0, 0]
Zadefinuj:
def oprav(tabulka, n): ...
Dodefinuj metódy triedy:
class Postupnost: ...
tak, aby fungovalo:
>>> a = Postupnost(1, 'a', 3) >>> type(a) <class '__main__.Postupnost'> >>> a (1, 'a', 3) >>> a.hodnota (1, 'a', 3) >>> a.hodnota = (3, 4, 5, 6) ... AttributeError: property 'hodnota' of 'Postupnost' object has no setter >>> b = Postupnost(3, 4, 5, 6) >>> a < b True >>> min(a, b, Postupnost(1, 'A', 3, 4)) (1, 'A', 3, 4)
Napíš funkciu
vyrob(funkcia, postupnost)
, ktorá zo zadanej postupnosti hodnôt vytvorí množinu dvojíc (tuple
). Každá takáto dvojica bude mať na prvom mieste funkciou spracovanú hodnotu a na druhom samotnú hodnotu z postupnosti. V tejto postupnosti môžu byť aj hodnoty, pre ktoré zadaná funkcia spôsobí chybu - tieto hodnoty sa budú ignorovať. Napríklad:>>> m = vyrob(str, range(5, 10)) >>> m {('9', 9), ('8', 8), ('7', 7), ('5', 5), ('6', 6)} >>> vyrob(lambda x: x+1, (4, 'a', 5, 'c')) {(5, 4), (6, 5)}
Zadefinuj:
def vyrob(funkcia, postupnost): ...
Napíš funkciu
vyhod(podmienka, slovnik)
, ktorá z daného slovnika vyhodí všetky prvky (kľúče), pre ktoré je splnená zadaná podmienka. Funkcia správne spracuje aj chybové situácie, ktoré môžu vzniknúť počas volania podmienky, Napríklad:>>> d = {'a': 1, 2:'b', 'c':3, 4:'d'} >>> vyhod(lambda x: x in (2, 'c'), d) >>> d {'a': 1, 4: 'd'}
Zadefinuj:
def vyhod(podmienka, slovnik): ...
Daná funkcia
stvorce
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 stvorce(d, f=0): if d < 25: t.pencolor(('red', 'green', 'blue', 'yellow')[f%4]) t.fd(d) else: for i, u in enumerate((80, 85, 88, 75)): stvorce(d*(.3, .5, .4, .35)[i], i) t.lt(u)
Napríklad, by to malo fungovať takto:
>>> t = stvorce(200) >>> t (14, 10, 12, 13) >>> stvorce(300) (23, 18, 22, 22)
Uvedom si, že funkcia by mala správne fungovať aj pre viac spustení.
V textovom súbore twain.txt sú slová oddelené medzerami, prípadne koncami riadkov. Nájdi čo najväčšiu n-ticu rôznych slov, ktoré sú všetky zložené z rovnakých písmen, pričom v niekotrých slovách sa niektoré písmená môžu objavovať aj viackrtá. Keďže takýchto n-tíc je v tomto súbore viac, nájdi čo najväčšiu skupinu slov z rovnakých písmen. Slová priraď do premennej
slova
. Napríklad, výsledkom by mohla byť trojica:slova = ('spirit', 'strip', 'spirits')
vtedy, keby sme nepotrebovali nájsť čo najväčšiu skupinu slov. Ak je takých najväčších skupín slov viac, stačí priradiť ľubovoľnú z nich.
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ť:
# 2C. priebezny test 2022
# student: Janko Hrasko
# datum: 13.12.2022
zrejme ako študenta uvedieš svoje meno.