1. 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 prvky Pythonu, ktoré sme sa neučili v prvých 13. prednáškach. Svojim funkciám (oproti zadaniu) môžeš zmeniť mená parametrov.


  1. Napíš funkciu zluc(z1, z2), ktora dostáva dva (možno rôzne dlhé) zoznamy nejakých hodnôt. Funkcia tieto dva zoznamy zlúči tak, že vo výslednom zozname sa budú postupne striedať prvky týchto dvoch zoznamov: [z1[0], z2[0], z1[1], z2[1], z1[2], ...]. Zrejme, ak je niektorý zo zoznamov kratši, tak sa tam z neho objavia len existujuce prvky. Funkcia nič nevracia ani nevypisuje, len modifikuje zoznam z1, v ktorom bude výsledný zlúčený zoznam. Napriklad:

    >>> a = [1, 2, 3, 4]
    >>> b = ['a', 'b']
    >>> zluc(a, b)
    >>> print(a)
        [1, 'a', 2, 'b', 3, 4]
    

  1. Napíš funkciu vyhodnot(retazec), ktorá dostane znakový reťazec s celými číslami, medzi ktorými môžu byť znamienka '+' alebo '-'. funkcia vráti hodnotu takéhoto aritmetického výrazu. Napríklad:

    >>> vyhodnot('123-7-11+45')
        150
    

  1. Nájdi 4 najmenšie za sebou idúce prvočísla, ktoré všetky končia cifrou 7. Napríklad, ak by nám stačili len dve takéto prvočísla, výsledkom by boli čísla 337, 347. Výsledok pre 4 takéto prvočísla priraď do premennej:

    zoznam = [337, 347]
    

    Uvedom si, že dve prvočísla sú za sabou idúce, ak medzi nimi nie je žiadne ďalšie prvočíslo. Pre túto úlohu nemusíš odovzdávať program, stačí len priradiť 4 čísla do premennej zoznam.


  1. V textovom súbore sú slová oddelené aspoň jednou medzerou alebo novým riadkom. Napíš funkciu subor(meno_suboru), ktorá zistí všetky slová, ktoré sa v ňom vyskytli párny počet-krát (vráti zoznam slov). Napríklad pre súbor:

      mama ma   emu a ema
    ma mamu ale
        mama
     ani ema nema elu
    

    funkcia vráti zoznam: ['mama', 'ma', 'ema']


  1. Korytnačka by nakreslila tento strom so striedajúcimi sa farebnými bodkami:

    f = 'red green blue'.split()
    def strom(d):
        t.fd(d)
        if d < 10:
            t.dot(10, f[0])
            f.append(f.pop(0))
        else:
            t.lt(30)
            strom(int(d * .7))
            t.rt(80)
            strom(int(d * .6))
            t.lt(50)
        t.fd(-d)
    

    Prepíš túto funkciu tak, aby nepotrebovala korytnačí modul turtle a namiesto vykreslenia stromu vypíše celkovú dĺžku cesty od koreňa k príslušnej farbe (ak by ku každej farbe vyštartovala húsenica od koreňa k farebnému listu, tak nás zaujíma celková dĺžka prejdených ciest).

    Napríklad pre volanie strom(20) by sa malo vypísať:

    red 82
    green 42
    blue 40
    

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ť:

# 1A. priebezny test 2022
# student: Janko Hrasko
# datum: 8.11.2023

zrejme ako študenta uvedieš svoje meno.