Skip to content

cviceni03

malja edited this page Dec 15, 2016 · 1 revision

Úkoly z hodiny

Řešení jsou k nahlédnutí ve složce cviceni03.

Úkol 1 - Opakování cykly

  • napište program, který pomocí konstrukce for i in range(od, do, krok):

    • vytiskněte čísla 10 až 500 po deseti
    • vytiskněte čísla -20 až -600 po dvaceti
  • napište program, který udělá to samé pomocí while cyklu:

    • vytiskněte čísla 10 až 500 po deseti
    • vytiskněte čísla -20 až -600 po dvaceti

Úkol 2: Ramanujan Taxi

Ramanujan byl velmi zajímavý geniální indický matematik. Byl objeven prof. Hardym a pozván do Anglie. Zde onemocněl a když ho prof. Hardy navštívil v nemocnici, řekl mu, že za ním přijel taxíkem číslo XXXX. Ramanujan mu okamžitě odpověděl, že je to velmi zajímavé číslo, protože je to nejmenší číslo, které lze zapsat dvěma různými způsoby jako součet dvou krychlí (třetích mocnin přirozených čísel). Najděte čtyřciferné číslo taxíku XXXX.

Úkol 3: absolutní hodnota

Napište funkci s jedním argumentem, která vrací absolutní hodnotu tohoto argumentu

Úkol 4: Největší společný dělitel

Napište funkce gcd1 a gcd2, které vrátí největšího společného dělitele a počet kroků, které k výpočtu potřebovaly.

Funkce gcd1 bude počítat největšího společného dělitele čísel a a b takto:

  • Dokud a není rovno b
    • Je-li a větší než b
      • a = a-b
    • jinak
      • b = b-a
  • a i b jsou největší společný dělitel původních čísel

Funkce gcd2 bude počítat největšího společného dělitele čísel a a b takto:

  • Dokud b není rovno nule
    • t = b
    • b = a mod b
    • a = t
  • a je největší společný dělitel původních čísel

Zjistěte kolik kroků potřebuje gcd1 a gcd2 pro spočtení největšího společného dělitele 6997193,18992381 a dvojice 361, 18992381

Úkol 5: Césarova šifra

Napište program, který přečte jednu řádku ze vstupu s textem složeným pouze z písmen a mezery a druhou řádku s číslem definujícím posunutí písmen v Césarově šifře.

Program na výstup vypíše řetězec zašifrovaný posunutím písmen o zadanou hodnotu Ascii hodnota znaku se získá funkcí ord('A'), opačně znak z celého čísla získáte pomocí funkce chr(65) Je nutné posouvat velká písmena na velká písmena, malá písmena na malá písmena a mezeru ponechat jako mezeru

Úkol 6: Převod měsíců

Napište funkci convert_num_to_month, která dostane jako parametr pořadové číslo měsíce v roku a vrátí jeho jméno.

Napište funkci convert_month_to_num, která dostane jako parametr jméno měsíce v roku a vrátí jeho pořadové číslo v roce.

POZOR: leden má číslo 1, prosinec 12

Tuto funkci použijte v programu, který načte řetězec a pokud je první znak písmeno a vytiskne na obrazovku číslo měsíce, pokud je první znak číslo vytiskne název měsíce

Pomůcka: V programu můžete využít následující proměnnou:

month=['leden','unor','brezen','duben','kveten','cerven','cervenec','srpen','zari','rijen','listopad','prosinec']

Domácí práce

Lehká varianta

Program přečte ze standardního vstupu celé kladné číslo v rozsahu 0 až 99 (označme ho k) Program vytiskne tabulku udávající soudělnost čísel m,n=1,…,k

Pokud jsou číslat m,n soudělná, vypíše se na n-tém řádku a m-tém sloupci 'x', jinak vytiskne '.'

Program pro úlohu HW03 pojmenujte commensurable.py

Pokud není na vstup zadáno celé kladné číslo v rozsahu 0 až 99, vypíše program ERROR a skončí

Pozn. Čísla jsou soudělná, jestliže jejich největší společný dělitel je větší než 1.

Např. pro vstup 10 program vytiskne:

..........
.x.x.x.x.x
..x..x..x.
.x.x.x.x.x
....x....x
.xxx.x.xxx
......x...
.x.x.x.x.x
..x..x..x.
.x.xxx.x.x

Těžší varianta

Vytvořte program numbers.py pro úlohu HW03, který ze standardního vstupu přečte řádku, která obsahuje bud číslo v desítkové soustavě nebo číslo zapsané slovy bez háčků např. dvestepadesatsedmtisictristasedmdesatpet a toto číslo převede do opačného zápisu. Pokud vstup neodpovídá ani jedné z těchto možností, vytiskne 'ERROR' a skončí.

Vstup dvestepadesatsedmtisictristasedmdesatpet výstup 257375

Vstup 543210 výstup petsetctyricettritisicedvestedeset

Všechny čísla jsou pouze celá čísla v rozsahu 1 až 999999.

Pro slovni cislo jsou použity tyto slovni vyjadreni:

jeden, dva, tri, ctyri, pet, sest, sedm, osm, devet, deset, jedenact, dvanact, trinact, ctrnact, patnact, sestnact, sedmnact, osmnact, devatenact, dvacet, tricet, ctyricet, padesat, sedesat, sedmdesat, osmdesat, devadesat, sto, dveste, trista, ctyrista, petset, sestset, sedmset, osmset, devetset, tisic, tisice.

Poznámka: V češtině je správně “dvatisice”, ale lze napsat “stodvatisic” a “stodvatisice”. Po Vás požadujeme řešení ve tvaru “stodvatisice”.