Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.

782/3558

Zadání domácích úkolů -- 3A

`-> řešení minulých úloh

Obsah:

  1. Volitelná úloha
  2. Podmínky a cykly II
  3. Podmínky a cykly III
  4. Opakování I

Volitelná úloha

Zvolte si prosím vlastní úlohu podle své vlastní zdatnosti tak, aby vás tato úloha ve vašem studiu a poznání posunula -- pokud možno vpřed :-)

Zde je nabídka pro ty, co na nic nemůžou přijít:

Autobus

Vytvořte program pro generování a výpis časového jízdního řádu dálkové autobusové linky podle informací zadaných od uživatele.

  1. Načtěte od uživatele seznam jízdních dob autobusu mezi jednotlivými zastávkami v minutách (jde o dálkovou přepravu, časy mohou být dlouhé – např. i více než 100 minut). Počet zadaných dob může být libovolný (nenulový).
  2. Dále načtěte "digitální" čas odjezdu autobusu z výchozí zastávky (HH:MM).
  3. Vypište na obrazovku jízdní řád – časový plán jízdy pro jednotlivé zastávky, tj. v kolik hodin
  4. Zastávky číslujte postupně od 1. K první zastávce dopište slovo "výchozí", k poslední slovo "konečná".
  5. Na závěr vypište celkovou dobu jízdy autobusu ve formě počtu hodin a minut. Za vypočtené číselné údaje napište slova "hodin" a "minut" vyskloňované dle pravidel českého pravopisu (viz příklad).

příklad:

Zadejte jízdní časy mezi zastávkami v minutách: 15 35 60 121 10
Čas výjezdu autobusu (HH MM): 10 30

Jízdní řád:
10:30 zastávka 1 - výchozí
10:45 zastávka 2
11:20 zastávka 3
12:20 zastávka 4
14:21 zastávka 5
14:31 zastávka 6 - konečná

Celková doba jízdy: 4 hodiny a 1 minuta

Binární strom

Implementujte vložení (případně nalezení a smazání) čísla do binární stromu.


Podmínky a cykly II

Zde je několik málo mírně obtížnějších úloh na procvičení podmínek a cyklů. Vstup je brán vždy z klávesnice. Pokud někdo z vás vymyslí nějakou podobnou zajímavou úlohu a pošle mi ji, odměním ho hezkou známkou a úlohu zde rád zveřejním.

  1. Je dána posloupnost čísel v intervalu 0 až 100, z nichž některá mohou být stejná. Určete, kolik hodnot se mezi vstupními čísly nachází pouze jednou.

  2. Vypište na obrazovku kalendář ve tvaru:

    Po Út St Čt Pá So Ne
        1  2  3  4  5  6  
     7  8  9 10 11 12 13  
    14 15 16 17 18 19 20  
    21 22 23 24 25 26 27  
    28 29 30 31  
    

    Tato úloha nespočívá v pouhém nalezení modulu (Calendar), který kalendář umí vypsat! Je potřeba jej opravdu naprogramovat.

    Aktuální datum, nebo měsíc zjistíte pomocí modulu datetime: http://docs.python.org/2.7/library/datetime.html, ale není to až tak zapotřebí. Pro začátek stačí, když program bude načítat první den v týdnu, který připadá na první den měsíce. Například program, generující výše zmíněnou ukázku by přijal jako vstup číslo 2, protože měsíc začíná úterkem.

    >>> import datetime
    >>> today=datetime.date.today()
    >>> today.month
    10
    >>> today.day
    30
    >>> today.year
    2012
    >>> today.weekday()
    1
    >>> datetime.date(2012,10,31).weekday()
    2
    >>> datetime.date(2012,10,28).weekday()
    6
    >>> dayCount=[None,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

    `--> stáhnout

  3. Je dáno přirozené číslo N. Jakým nejmenším počtem platidel je možné zaplatit částku N korun, máte-li k dispozici neomezené množství českých mincí a bankovek všech druhů? Vytiskněte rozpis použitých platidel.

    kolik? > 5839
    >> 1 x 5000
    >> 2 x 2000
    >> 1 x 1000
    >> 1 x 500
    >> 1 x 200
    >> 1 x 100
    >> 1 x 20
    >> 1 x 10
    >> 1 x 5
    >> 2 x 2
    
  4. Je dána posloupnost celých čísel. Vypište jen ta čísla, jejíchž cifry jsou ve vzestupném pořadí.

    zadej čísla > -129 598 496 568 598 -125 
    >>>>>>>>>>>>> -129 568 -125
    
  5. Nalezněte všechna dvojciferná čísla, se zadaným ciferným součtem. Úlohu opakujte i pro trojciferná čísla.

    cirerný součet = 8
    >>> 17 26 35 44 53 62 71 
    >>> 107 206 ... 413 ... 701 ...
    

Podmínky a cykly III

  1. Napište funkci

    def nasobek(cislo):
      pass

    `--> stáhnout

    • cislo: celé kladné číslo
    • návratová hodnota: součin všech cifer, kromě nuly

    Například:

    nasobek(123058) == 1 * 2 * 3 * 5 * 8
    nasobek(7009) == 7 * 9
    nasobek(12345) == 120

    `--> stáhnout

  2. V souboru je zadáno zapsáno několik čísel. Vypište ta čísla, která se v tomto souboru nachází právě třikrát

    1066
    3391
    1622
    3673
    3953 
    
  3. vytvořte funkci

    def shoda(retezec_a, retezec_b):
      pass

    `--> stáhnout

    Výstupem bude řetězec znaků 0 a 1. Znak 1 bude tam, kde se oba řetěz shodují.

    ahoj karle      neco sem napisu 
    azdr karle      toto je konec
    ----------      ---------------
    1000111111      000110100000000
    

Opakování I

(podmínky, cykly, funkce, soubory)

  1. Vytvořte funkci generující bezpečné heslo.

    def heslo(pocet_naku=8):
      velka = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      pass
      return heslo

    `--> stáhnout

    Bezpečné heslo obsahuje alespoň jedno velké písmeno, alespoň jedno malé písmeno a alespoň jednu číslici.

  2. Vytvořte funkci pro ověření validity zápisu závorek v matematických výrazech.

    def zavorky(pocet_naku=8):
      return True or False
    
    
    if __name__ == '__main__':
        assert zavorky("((5+3)*2+1)") == True, "Simple"
        assert zavorky("{[(3+1)+2]+}") == True, "Different types"
        assert zavorky("(3+{1-1)}") == False, ") is alone inside {}"
        assert zavorky("[1+1]+(2*2)-{3/3}") == True, "Different operators"
        assert zavorky("(({[(((1)-2)+3)-3]/3}-3)") == False, "One is redundant"
        assert zavorky("2+3") == True, "No brackets, no problem"
        assert zavorky("([{}()]{[]})") == True, "No brackets, no problem"
        assert zavorky("([[{}(])]{[]})") == False, "No brackets, no problem"

    `--> stáhnout

  3. S pomocí knihovny matplolib vytvořte následující graf.

    Nabíjení kondenzátoru


---> řešení minulých úloh

Licence Creative Commons Valid XHTML 1.0 Strict Valid CSS! Antispam.er.cz Blog: Tlapicka.net