Osmá lekce obsahuje sadu příkladů na procvičení podmínek, cyklů, seznamů a generátoru náhodných čísel.
Studijní materiály
Odkaz pro zobrazení Google Slides.
Zpětná vazba
Kterým příkazem mažeme položku ze seznamu?
Jakým příkazem rozdělíš slovo/slova do seznamu dle separátoru?
Programy
Pozpátku
"""
pozpatku.py
Vytvoř program, který načte řetězec a vypíše ho pozpátku od posledního znaku po první. Program uprav tak, že načteš celou větu, kterou rozsekáš po slovech a ta vypíšeš pozpátku.
Př.: Dnes je ale krásný den!
!ned ýnsárk ela ej senD
"""
veta = "Ahoj světe!"
delka = len(veta)
zacatek = delka - 1
konec = -1
krok = -1
for i in range(zacatek, konec, krok):
print(veta[i], end = "")
print("\n------------------")
seznam = list(veta.split(" "))
for slovo in seznam:
# print(slovo)
delka = len(slovo)
zacatek = delka - 1
konec = -1
krok = -1
for i in range(zacatek, konec, krok):
print(slovo[i], end = "")
print()
Palindrom
"""
palindrom.py
Vytvoř program, který vyhodnotí, zdali je vložené slovo palindrom. Palindrom je slovo, které lze číst zepředu i zezadu stejně.
"""
slovo = input("Vlož slovo: ")
slovo = slovo.lower()
pozpatku = ""
zacatek = len(slovo) - 1
konec = -1
krok = -1
for i in range(zacatek, konec, krok):
pozpatku = pozpatku + slovo[i]
# print(pozpatku)
if slovo == pozpatku:
print("Je to palindrom. ")
else:
print("Není to palindrom.")
Prvočíslo
"""
prvocislo.py
Vytvoř program, který vyhodnotí, zdali je vložené číslo prvočíslo. Prvočísla mají právě dva dělitele, jsou dělitelná pouze 1 a sami sebou.
"""
cislo = input("Vlož číslo: ")
if cislo.isdigit() and int(cislo) > 0:
cislo = int(cislo)
delitele = []
for i in range(1, cislo + 1):
if cislo % i == 0:
delitele.append(i)
print(f"Dělitelé: {delitele}")
if len(delitele) == 2:
print(f"Číslo {cislo} je prvočíslo.")
else:
print(f"Číslo {cislo} není prvočíslo.")
else:
print("Nebylo zadáno kladné číslo.")
Prvočísla
"""
prvocisla.py
Vytvoř program, který vyhodnotí prvních „x“ prvočísel. Prvočísla ukládej do seznamu a na konci jej vypiš.
"""
x = int(input("Zadej, kolik prvočísel chceš vypsat: "))
cislo = 1
prvocisla = []
while len(prvocisla) < x:
delitele = []
for i in range(1, cislo + 1):
if cislo % i == 0:
delitele.append(cislo)
if len(delitele) == 2:
prvocisla.append(cislo)
cislo = cislo + 1
print(f"Prvních {x} prvočísel je {prvocisla}.")
Automat
"""
automat.py
Vytvoř program, který bude simulovat hrací automat. Ze sady znaků (♥ ♦ ♣ ♠) bude generovat tři náhodné znaky. Doplň bodování, pokud se vygenerují tři stejné znaky, přičtou se body. Po výpisu tří znaků se program uživatele zeptá, zdali chce pokračovat.
Na konec vypiš počet bodů.
"""
import random
seznam = ['♥', '♦', '♣', '♠']
body = 0
kola = 0
pokracovani = "ANO"
while pokracovani == "ANO":
los = []
kola = kola + 1
for i in range(0, 3):
los.append(random.choice(seznam))
print(los
)
if los[0] == los[1] == los[2]:
print("Shoda 3 znaků.")
body = body + 1
else:
print("Není shoda.")
pokracovani = input("Pro pokračování napiš \"ano\": ")
pokracovani = pokracovani.upper()
if kola > 0:
print(f"Hrál/a jsi {kola} kol.")
print(f"Získal/a jsi {body} bodů.")
Bingo
"""
bingo.py
Zahrajeme si zjednodušené bingo. Hrací pole 5 × 5 naplň čísly 1–75 (vždy po pěti číslech ze skupin: 1–15, 16–30, 31–45, 46–60 a 61–75); buď je zadá uživatel, nebo je náhodně vygeneruj. Vylosuj 25 náhodných čísel 1–75, kontroluj, zdali se tvůj tip shoduje s losovanými čísly.
Nakonec vypiš počet shodných čísel.
"""
import random
zacatek = 1
konec = 15
hrac = []
for i in range(0, 5):
for j in range(0, 5):
cislo = random.randint(zacatek, konec)
while cislo in hrac:
cislo = random.randint(zacatek, konec)
hrac.append(cislo)
print(f"{cislo:>4}", end = "")
zacatek = zacatek + 15
konec = konec + 15
print()
print("\n-----------------------\n")
bingo = []
for i in range(0, 25):
cislo = random.randint(1, 75)
while cislo in bingo:
cislo = random.randint(1, 75)
bingo.append(cislo)
print(f"{cislo:>4}", end = "")
if (i + 1) % 5 == 0:
print()
print("\n-----------------------\n")
shoda = []
for cislo in bingo:
if cislo in hrac:
shoda.append(cislo)
if len(shoda) > 0:
print("Gratulujeme k výhře!")
print(f"Shoda v {len(shoda)} číslech.")
print(f"Výpis: {shoda}.")
else:
print("Bohužel jsi nevyhrál/a.")
Dvojice
"""
dvojice.py
Losuj dvojice dívek a chlapců do školních lavic. Jména se nesmí opakovat (Maruška nemůže sedět zároveň s Jeníkem a Péťou). Měj dva stejně dlouhé seznamy, v jednom dívky, ve druhém chlapce. Seznamy náhodně zamíchej a vypiš dvojice dívka–chlapec (vždy [0] index z jednoho seznamu a k němu [0] index ze druhého atd.).
"""
import random
divky = ["Maruška", "Anička", "Petra", "Terezka", "Miška"]
chlapci = ["Tom", "Jeník", "Petr", "Kubík", "David"]
random.shuffle(divky)
random.shuffle(chlapci)
for i in range(0, len(divky)):
print(f"{i + 1}. lavice: {divky[i]} + {chlapci[i]}")
Tombola
"""
tombola.py
K cenám tomboly losuj jméno osoby, která cenu vyhrává. Měj dva seznamy: ceny tomboly (postupně procházej ceny od poslední po první) a seznam osob. K ceně tomboly náhodně vybírej ze seznamu osob.
"""
import random
ceny = ["auto", "kolo", "popelnice", "poukaz", "víno", "pivo"]
lide = ["Adam", "Božena", "Cecílie"]
zacatek = len(ceny) - 1
konec = -1
krok = -1
for i in range(zacatek, konec, krok):
vyherce = random.choice(lide)
print(f"Cenu {ceny[i]} vyhrává {vyherce}.")
Dárkomat
"""
darkomat.py
Blíží se Vánoce a každý ve firmě přichystá pozornost pro jednoho kolegu. Nesmí se stát, že by dával dárek sám sobě. Vypisuj, kdo komu připraví dárek na vánoční večírek. Připrav si dva identické seznamy osob ve firmě. Využívej příkaz pro smazání položky ze seznamu.
"""
import random
lide = ["Adam", "Bob", "Cirda", "Dana", "Eva", "Fanynka", "Gusťa"]
kopie = lide.copy()
for clovek in lide:
proKoho = random.choice(kopie)
while proKoho == clovek:
proKoho = random.choice(kopie)
print(f"{clovek} připraví dárek pro {proKoho}.")
kopie.remove(proKoho)