Šestá lekce se zabývá cykly, a to konkrétně cyklem s pevným počtem opakování a cyklem s podmínkou na začátku.

Studijní materiály

Odkaz pro zobrazení Google Slides.

Kontrolní otázky

Kdy je nejlepší použít cyklus „for“?
Jaký nejmenší počet opakování cyklu „while“?

Programy

"""
cykly.py
S užitím cyklů „for“ a „while“ vypiš vzestupnou řadu celých čísel v rozsahu od „a“ do „b“. Krajní hodnoty rozsahů budou načteny na vstupu od uživatele.

Rozšíření:
čísla správně seřaď, tzn. cyklus bude začínat na menším z čísel a končit na větším čísel;
vyhodnocuj počet sudých a lichých čísel v rozsahu;
vyhodnoť průměr vypsaných čísel.

vstup: a, b
výstup: vzestupná řada čísel od "a" do "b"
"""
a, b = int(input("Zadej hodnotu \"a\": ")), int(input("Zadej hodnotu \"b\": "))

zacatek = 0
konec = 0

if a < b:
zacatek = a
konec = b
elif b < a:
zacatek = b
konec = a
else:
print("Nebyla zadána různá čísla, cyklus se neprovede.")

if zacatek != konec:
suma = 0
licha = 0
for i in range(zacatek, konec + 1):
print(i)
suma = suma + i
if i %2 != 0:
licha = licha + 1

print(f"Průměr je {suma / (konec - zacatek + 1)}.")
print(f"Počet lichých čísel: {licha}.")
print(f"Počet sudých čísel: {konec - zacatek + 1 - licha}.")
print("-----------")

i = zacatek
while i <= konec:
print(i)
i = i + 1

"""
ctverec.py
Vypiš na monitor čtverec z hvězdiček. Délku strany čtverce zadá uživatel na vstupu.
"""
delka = int(input("Zadej délku strany čtverce: "))

if delka > 0:
for i in range(0, delka):
print("* " * delka)

print()
i = 0
while i < delka:
print("* " * delka)
i = i + 1

"""
nasobilka.py
Vypiš na monitor malou násobilku čísel 1–10.
Násobilku formátuj vzhledově do tabulky.
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
...
10 20 30 40 50 60 70 80 90 100
"""
for i in range(1, 11):
for j in range(1, 11):
print(f"{i * j:>4}", end = "")
print()

"""
cisla.py
Vytvoř program pro postupné načítání čísel a vyhodnoť jejich součet, minimum a maximum.
Řadu čísel ukončí číslice 0.
"""
cislo = int(input("Zadej číslo: "))
suma = 0
i = 0

while cislo != 0:
i = i + 1
suma = suma + cislo
if i == 1:
min = cislo
max = cislo
else:
if cislo < min:
min = cislo
elif cislo > max:
max = cislo
cislo = int(input("Zadej číslo: "))

if i > 0:
print(f"\nSoučet je: {suma}.")
print(f"Průměr je: {suma / i:.2f}.")
print(f"Minimum je: {min}.")
print(f"Maximum je: {max}.")

"""
znamky.py
Vytvoř program pro postupné zadávání známek, tzn. celých čísel v rozsahu 1–5. Pokud uživatel zadá číslo mimo rozsah, cyklus bude ukončen. Vypiš, kolik známek uživatel zadal.
"""
znamka = int(input("Zadej 1. známku: "))
i = 0
suma = 0
seznam = []

while znamka in range(1, 6):
seznam.append(znamka)
i = i + 1
suma = suma + znamka
znamka = int(input(f"Zadej {i + 1}. známku: "))

if i > 0:
print(f"Bylo zadáno {i} známek.")
print(f"Průměrná známka je {suma / i:.2f}.")

if len(seznam) > 0:
print(f"{sum(seznam)}, {len(seznam)}, {min(seznam)}, {max(seznam)}, ")
print(seznam)
print(f"Průměr: {sum(seznam) / len(seznam)}")

"""
nakupniSeznam.py
Vytvoř algoritmus, který do seznamu uloží „x“ položek seznamu pro nákup. Kontroluj, aby se položky v seznamu neopakovaly. Položky seznamu vypiš před a po setřídění.
"""
x = int(input("Zadej počet položek seznamu: "))

if x > 0:
seznam = []
i = 0

while i < x:
polozka = input(f"Zadej {i + 1}. položku: ")
polozka = polozka.lower()
if i == 0:
seznam.append(polozka)
i = i + 1
else:
if polozka in seznam:
print(f"{polozka} už v seznamu máš!")
else:
seznam.append(polozka)
i = i + 1
for abc in seznam:
print(abc)

seznam.sort()

for abc in seznam:
print(abc)

"""
nahoda.py
Vytvoř program, ve kterém si vyzkoušíš některé funkce knihovny random. Program zkombinuj s cykly a seznamy.

Např.:
- generování čísla;
- výběr náhodného znaku/prvku z/ze řetězce/seznamu;
- promíchání položek seznamu;
- generování náhodných „x“ položek seznamu.
"""
import random

for i in range(0, 5):
cislo = random.random()
print(cislo)

seznam = []

for i in range(0, 10):
seznam.append(random.randint(1, 10))
i = 0

while i < 10:
cislo = random.randint(1, 10)
if cislo not in seznam:
seznam.append(cislo)
i = i + 1

seznam.sort()
for polozka in seznam:
print(polozka)

random.shuffle(seznam)
for polozka in seznam:
print(polozka)

print(f"Náhodná položka: {random.choice(seznam)}")

s = "ABCDEF"
print(random.choice(s))

seznam = list(s)
print(seznam)
random.shuffle(seznam)
print(seznam)

x = int(input("Zadej počet položek seznamu: "))

for i in range(0, x):
seznam.append(random.randint(1, 10))

print(seznam)

"""
loterie.py
Vytvoř program, který vygeneruje „x“ unikátních náhodných čísel v rozsahu 1–80. Čisla ukládej do seznamu.
"""
import random

x = int(input("Zadej počet čísel ke generování: "))

seznam = []

i = 0

if x in range(1, 81):
while i < x:
cislo = random.randint(1, 80)
if cislo not in seznam:
seznam.append(cislo)
i = i + 1
print(seznam)
else:
print("Počet musí být v rozsahu 1--80.")

"""
tabulka.py
Vytvoř program, který vygeneruje tabulku o počtu řádků a sloupců „a“ × „b“ naplněnou náhodnými znaky A–Z.
a ... řádky
b ... sloupce
"""
import random

abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

a = int(input("Zadej počet řádků: "))
b = int(input("Zadej počet sloupců: "))

if a > 0 and b > 0:
for i in range(0, a):
for j in range(0, b):
print(random.choice(abc) + " ", end = "")
print()
else:
print("Nebyla zadána kladná čísla.")

Zaujal Tě tento online kurz?

Přihlásit k newsletteru

Projekt online vzdělávání byl realizován v rámci Stipendia Czechitas v projektu: „Ženy do IT“ (reg.č. CZ.03.1.51/0.0/0.0/16_061/0003268), který je financován z prostředků Evropského sociálního fondu prostřednictvím Operačního programu Zaměstnanost.