Pátá lekce je zaměřena na příklady s řetězci a kolekcemi, a složené podmínky obsahující logické spojky.

Studijní materiály

Odkaz pro zobrazení Google Slides.

Kontrolní otázky

Jak přistupujeme k jednotlivým prvkům kolekce či k jednotlivým znakům řetězce?
Čím se od sebe liší logické spojky AND a OR, resp. jaký minimální počet spojovaných podmínek musí u každé z nich platit?

Programy

"""
retezce.py
Ulož do proměnné řetězec, zjisti jeho délku, vypiš jeho první a poslední znak.
"""
import time

s = "řetězec"

delka = len(s)
print(f"Délka řetězce je {delka} znaků.")

print(f"První znak řetězce: {s[0]}")
print(f"Druhý znak řetězce: {s[1]}")
print(f"Třetí znak řetězce: {s[2]}")
print(f"Poslední znak řetězce: {s[delka - 1]}")

for i in range(0, delka):
print(s[i])
time.sleep(1)

"""
ascii.py
Vypiš na monitor znaky standardní 7bitové ASCII tabulky; vedle čísla pozice bude znak.
Tip: výpis bez zalomení řádku:
print(a, end = '')
"""
for i in range(0, 128):
print(f"{i}: {chr(i)}\t", end = "")

"""
inicialy.py
Do jedné proměnné načti jméno a příjmení. Vypiš iniciály uživatele. Vypiš jméno a příjmení malými písmeny (minuskule, mínusky), velkými písmeny (majuskule, verzálky), vyzkoušej různé kombinace. Načti věk uživatele jako řetězec. Když bude obsahovat číslice, převeď jej na celé číslo, jinak vypiš chybovou hlášku. Věk vypiš na monitor spolu s datovým typem.
Vyzkoušej si metody center(), ljust(),
zfill(), rjust()
"""
celeJmeno = "Jan Novák"
jmeno, prijmeni = celeJmeno.split(" ")
# print(jmeno)
# print(prijmeni)

inicialy = jmeno[0] + prijmeni[0]
print(f"Iniciály: {inicialy}")

print(f"Minuskule: {jmeno.lower()} {prijmeni.lower()}")
print(f"Majuskule: {jmeno.upper()} {prijmeni.upper()}")

vek = input("Zadej věk uživatele: ")

if vek.isdigit():
vek = int(vek)
print(f"Věk: {vek}, datový typ: {type(vek)}")
else:
print("Nebylo zadáno číslo.")

print(celeJmeno.center(30))
print(celeJmeno.rjust(30))

"""
kavarna.py
Vytvoř program, který vypíše nabídku kavárny, tedy název nápoje, jeho objem a cenu. Výstup formátuj do přehledné tabulky, data budou ve sloupcích.
"""
napoj = "káva s mlékem", "cappuccino", "džus", "voda", "smetana"
objem = "200 ml", "180 ml", "250 ml", "100 ml", "50 ml"
cena = "45 Kč", "60 Kč", "30 Kč", "5 Kč", "8 Kč"

pocet = len(napoj)

for i in range(0, pocet):
print(f"{napoj[i]:<15} {objem[i]:>6} {cena[i]:>6}")

"""
nakup.py
Napiš program, který načte názvy komodit, které uživatel nakoupil. Dále načte množství, které za každou komoditu nakoupil.
Nakonec do přehledné tabulky vypíše účet, např.:
mléko          2 * 20.00 =    40.00
brambory     0.5 * 15.00 =     7.50
pivo          10 *  8.50 =    85.00
"""
zbozi = input("Zadej zboží: "), input("Zadej zboží: "), input("Zadej zboží: ")
mnozstvi = int(input("Zadej množství: ")), int(input("Zadej množství: ")), int(input("Zadej množství: "))
cena = 20, 30, 40

pocet = len(zbozi)

for i in range(0, pocet):
print(f"{zbozi[i]:<10} {mnozstvi[i]:>4} * {cena[i]:>4} = {cena[i] * mnozstvi[i]:>6}")

"""
obsahuje.py
Načti řetězec obsahující cifry a znaky. Řetězec procházej znak po znaku a znaky rozděluj do skupin: písmena, cifry, jiné znaky. Vypiš, kolik znaků každá skupina obsahuje. Program uprav: načti nový znak, když se znak v původním řetězci ještě nevyskytuje, přidej jej na konec řetězce.
"""
s = input("Zadej řetězec: ")
delka = len(s)
pocetCisla = 0
pocetZnaky = 0
pocetJine = 0

for i in range(0, delka):
if s[i].isdigit():
pocetCisla = pocetCisla + 1
else:
if s[i].isalpha():
pocetZnaky = pocetZnaky + 1
else:
pocetJine = pocetJine + 1

print(f"Počet číslic: {pocetCisla}")
print(f"Počet znaků: {pocetZnaky}")
print(f"Počet jiných znaků: {pocetJine}")

znak = input("Zadej znak: ")

if znak not in s:
s = s + znak
print(s)

"""
trideniASCII.py
Vytvoř příklad, který roztřídí všechny znaky 7bitové ASCII tabulky na písmena, cifry a jiné znaky. Jednotlivé skupiny ukládej do nových proměnných, nakonec vypiš jejich obsah a počet za každou skupinu.
"""
znaky = ""
cifry = ""
jine = ""

for i in range(0, 128):
znak = chr(i)
if znak.isalpha():
znaky += znak
elif znak.isdigit():
cifry += znak
else:
jine += znak

print(f"Znaky: {znaky} (počet {len(znaky)})")
print(f"Cifry: {cifry} (počet {len(cifry)})")
print(f"Jiné: {jine} (počet {len(jine)})")
print(f"Kontrola: {len(znaky) + len(cifry) + len(jine)}")

"""
znamka.py
Uživatel zadá celé číslo. Program bude vyhodnocovat, zdali se jedná/nejedná o školní známku (tzn. o číslo v rozsahu 1 až 5). Využij co nejvíce možností řešení:
složené podmínky;
logické spojky;
rozsahy.
"""
x = int(input("Zadej celé číslo: "))

# složené podmínky
if x < 1:
print("Není známka.")
elif x <= 5:
print("Je známka.")
else:
print("Není známka.")

# logické spojky (spojka AND)
if x >= 1 and x <= 5:
print("Je známka.")
else:
print("Není známka.")

# logické spojky (spojka OR)
if x < 1 or x > 5:
print("Není známka.")
else:
print("Je známka.")

# rozsahy
if x in range(1, 6):
print("Je známka.")
else:
print("Není známka.")
if x not in range(1, 6):
print("Není známka.")
else:
print("Je známka.")

"""
pocasi.py
Vytvoř program, dle zadané teploty vypíše, jaký je pocitový stav (např. je teplo, je obstojně, je zima).
"""
teplota = int(input("Zadej teplotu ve °C: "))

if teplota < 5:
print("Je zima.")
elif teplota in range(5, 16):
print("Je chladno.")
elif teplota in range(16, 21):
print("Je tepleji.")
else:
print("Je vedro.")

"""
bodovani.py
Vytvoř program, který postupně projde bodové výsledky 5 osob a spolu se jménem osoby vypíše, kolik bodů a jaké hodnocení osoba získala. Rozsahy bodování urči dle vlastního uvážení.
"""
osoby = "Jan", "Tom", "Nela", "Eva", "Martina"
body = 20, 60, 85, 75, 90
pocet = len(osoby)

for i in range(0, pocet):
print(f"{osoby[i]:>10} : {body[i]:>5} ", end = "")
if body[i] <= 35:
print("C")
elif body[i] <= 85:
print("B")
else:
print("A")

"""
rocniObdobi.py
Vytvoř program, který dle zadaného měsíce číslem vypíše, jaké roční období momentálně je.
1, 2 zima
3, 4, 5 jaro
6, 7, 8 léto
9, 10, 11 podzim
12 zima
"""
import datetime
dnes = datetime.date.today()
mesic = dnes.month

print(f"Dnes je: {dnes} ({type(dnes)})")
print(f"Měsíc je: {mesic} ({type(mesic)})")
# mesic = int(input("Zadej měsíc číslem: "))

if mesic >= 1 and mesic <= 12:
# jedná se o správně zadaný měsíc
if mesic <= 2:
print("zima")
elif mesic <= 5:
print("jaro")
elif mesic <= 8:
print("léto")
elif mesic <= 11:
print("podzim")
else:
print("zima")
else:
print("Byla vložena nevhodná hodnota.")

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.