Search
This is an old revision of the document!
Na vstupu přečtěte celé číslo reprezentující útratu v hospodě v Kč. Vypiště kolik mincí je minimálně potřeba zaplacení účtu, pokud nemůžete platit bankovkami. Vypiště také, které mince to budou. Připomínáme, že české mince mají hodnoty: 1, 2, 5, 10, 20 a 50.
Vzorový vstup:
Zadejte vasi utratu: 79
Vzorový výstup:
Celkem je potreba 5 minci Pocet minci o hodnote 50 Kc: 1 Pocet minci o hodnote 20 Kc: 1 Pocet minci o hodnote 10 Kc: 0 Pocet minci o hodnote 5 Kc: 1 Pocet minci o hodnote 2 Kc: 2 Pocet minci o hodnote 1 Kc: 0
Pokud je zákazník příliš dlouho v hospodě, pokusí se zadat záporné číslo. Všechny podobné situace musíte ve svých kódech ošetřovat a vypsat odpovídající chybovou hlášku.
Bude zveřejněno na konci druhého dne.
Pokud potřebujete opakovat určitou část kódu několikrát, můžete tento program napsat pouze jednou a vložit jej do cyklu. Pro začátek se seznámíme s for cyklem. Jeho fungování si předvedeme na jednoduchém příkladu, kdy chceme 10-krát vypsat nápis “Hello world!”, který nám je již dobře známý.
for i in range(0, 10): print("Hello world!")
Cyklus začíná první hodnotou a zvyšuje hodnotu i, dokud je menší než druhá hodnota rozsahu (10).
Pro některé úlohy nám nestačí jednoduchý cyklus. V takovém případě je možné vytvořit vnořený cyklus (vícenásobný). Jeho fungování si budeme demonstrovat na následujícím příkladu:
for i in range(1, 5): for j in range(1, i): print(j) print("---")
Výstup tohoto programu bude:
--- 1 --- 1 2 --- 1 2 3 ---
Někdy je v programu užitečné generovat náhodná čísla. Právě k tomuto účelu slouží modul random. Jeho funkce randint(a, b) vrátí celé číslo v intervalu <a, b>. Její použití demonstruje následující příklad, který vygeneruje náhodné číslo z rozsahu 1 až 6, a tedy simuluje hrací kostku.
# Program hraci kostka import random x = random.randint(1, 6) print(x)
Takto vygenerovaná čísla ve skutečnosti nejsou náhodná, ale pseudonáhodná. To znamená, že jsou počítána jasně definovaným algoritmem, který vytváří takovou posloupnost čísel, že se její prvky zdají být náhodné.
Pokud chcete vygenerovat desetinné číslo, použijte funkci random(). Ta vygeneruje číslo z intervalu <0, 1).
import random x = random.random() print(x)
Pseudonáhodná čísla můžeme použít například při odhadu hodnoty pi metodou Monte Carlo (bude vysvětleno na tabuli.)
Přečtěte číslo N ze standardního vstupu a poté:
Přečtěte celé číslo N ze standardního vstupu. Vypiště čísla 1 až N. Oddělte je vždy čárkou a mezerou. Pozor, za posledním číslem žádná čárka ani mezera být nemá.
print("abc",end="")
Vzorový výstup pro N=5:
1, 2, 3, 4, 5
Přečtěte celé číslo N ze standartního vstupu. Vypiště čísla od N do 1 sestupně se stejným formátováním.
5, 4, 3, 2, 1
Napište program pro výpočet faktoriálu. Program načte jedno číslo (předpokládejte, že se jedná o přirozené číslo nebo nulu) a následně spočítá a vypíše faktoriál tohoto čísla. Připomeňmě, že faktoriál čísla n je definován takto:
Pro ověření správnosti vašeho programu si můžete výsledky zkontrolovat s následujícím seznamem:
Napište program, který načte jedno číslo (předpokládejte, že se jedná o přirozené číslo) a vypíše, zda se jedná o prvočíslo. Poznamenejme, že prvočíslo je takové přirozené číslo, které má právě dva dělitele: jedničku a samo sebe. Tedy číslo jedna není prvočíslo!
Přečtěte binární zápis čísla na vstupu a vypište jeho hodnotu v dekadickém zápise (normální číslo).
b = input("Zadejte cislo ve dvojkove soustave: ") delka = len(b)
Vzorový vstup
10101
Vzorový výstup
21
Modifikujte program na testování prvočíselnosti tak, aby vypsal všechna prvočísla menší než zadané n.
# Vojta cislo = int(input("Zadej cislo: ")) for x in range (0, cislo): for i in range (x-1, 0, -1): if (x%i == 0) and (i>1): #print("Cislo " + str(x) + " neni prvocislo.") break if i == 1: print(str(x), end=" ") print()
Načtěte hodnotu N na vstupu a vypiště jednotkovou matici o velikosti N*N.
Vzorový výstup pro N=3
1, 0, 0 0, 1, 0 0, 0, 1
# Vojta hodnost = int(input("Zadej hodnost matice: ")) for a in range (0, hodnost): for b in range (0, hodnost): if (a==b): print("1", end=" ") else: print("0", end=" ") print()
Načtěte na vstupu liché číslo N větší nebo rovno 5 a vypište na konzoli “baráček” o odpovídající velikosti. Pokud čílo není liché nebo je menší než 5. Vypiště nějakou chybovou hlášku.
Vzorový výstup pro N=5
X X X XXXXX X X X X x X XXXXX
# Vojta vyska = int(input("Zadej vysku domu: ")) if (vyska < 5) or (vyska%2==0): print("Vyska musi byt liche cislo vetsi nez 5") else: print((vyska//2)*" " + "#") for a in range (0, int((vyska//2)-1)): print(((vyska//2)-1-a)*" ", end="") print("#", end="") print((2*a+1)*" ", end="") print("#") print("#"*vyska) for c in range (vyska-2): print("#" + " "*(vyska-2) + "#") print("#"*vyska)
Napište program, který načte přirozené číslo n. Pak tento program vypíše n-tý člen Fibonacciho posloupnosti.
# Vojta predpred = 1 pred = 1 souc = 0 cislo = int(input("Zadej prirozene cislo: ")) for i in range (cislo-3): souc = predpred + pred predpred = pred pred = souc print(souc)
Napište program, který načte dvě přirozená čísla a najde a vytiskne jejich největšího společného dělitele.
# Vojta a = int(input("Zadej prirozene cislo a: ")) b = int(input("Zadej prirozene cislo b: ")) for i in range (1,b): if (a%i==0) and (b%i==0): cislo = i print(cislo)
Napište program, který načte dvě celá čísla a vypíše součet všech celých čísel v uzavřeném intervalu mezi nimi.
# Honza prvni_cislo = int(input("Zadejte prvni cislo: ")) druhe_cislo = int(input("Zadejte druhe cislo: ")) if prvni_cislo > druhe_cislo: # prohodime hodnoty cisel, aby prvni cislo bylo mensi prvni_cislo, druhe_cislo = druhe_cislo, prvni_cislo soucet = 0 for i in range(prvni_cislo, druhe_cislo + 1): soucet += i print(soucet)
Napište program který načte dvě přirozená čísla, základ a exponent, a vypočítá hodnotu základexponent. Nezapomeňte, že hodnota 00 není definovaná.
Např.:
Zadejte zaklad: 5 Zadejte exponent: 3 5^3 = 125
# Honza zaklad = int(input("Zadejte zaklad: ")) exponent = int(input("Zadejte exponent: ")) if exponent == 0: if zaklad == 0: # nula na nultou print("Hodnota je nedefinovana.") else: # cokoliv na nultou je jedna print(str(zaklad) + "^0 = 1") elif zaklad == 0: # nula na cokoliv (krome nuly) je nula print("0^" + str(exponent) + " = 0") else: vysledek = 1 for i in range(exponent): vysledek *= zaklad print(str(zaklad) + "^" + str(exponent) + " = " + str(vysledek))
Napište program, který vygeneruje 10 náhodných čísel v rozsahu 1 až 100. Program spočítá počet sudých a lichých čísel. Program dále spočítá průměrnou hodnotu všech čísel. Nakonec program nalezne největší a druhé největší číslo.
# Honza import random pocet_cisel = 10 # ze zadani nejvetsi_cislo = 0 druhe_nejvetsi_cislo = 0 prumer = 0 pocet_sudych = 0 pocet_lichych = 0 print("Pocitac vygeneroval: ", end = "") for i in range(pocet_cisel): nahodne_cislo = random.randint(1, 100) if i == pocet_cisel - 1: print(nahodne_cislo) else: print(nahodne_cislo, end=", ") prumer += nahodne_cislo if nahodne_cislo % 2 == 0: pocet_sudych += 1 else: pocet_lichych += 1 if nahodne_cislo > nejvetsi_cislo: druhe_nejvetsi_cislo = nejvetsi_cislo nejvetsi_cislo = nahodne_cislo elif nahodne_cislo == nejvetsi_cislo or nahodne_cislo > druhe_nejvetsi_cislo: druhe_nejvetsi_cislo = nahodne_cislo prumer /= pocet_cisel print("Pocet sudych cisel ve vygenerovane posloupnosti je " + str(pocet_sudych)) print("Pocet lichych cisel ve vygenerovane posloupnosti je " + str(pocet_lichych)) print("Ve vygenerovane posloupnosti je " + str(nejvetsi_cislo) + " nejvetsim cislem.") print("Ve vygenerovane posloupnosti je " + str(druhe_nejvetsi_cislo) + " druhym nejvetsim cislem.") print("Prumer vygenerovane posloupnosti je " + str(prumer))