Úlohy k prednáške 1¶
Nižšie nájdeš niekoľko úloh na precvičenie z prvej prednášky JDA. Sú zamerané na prácu s premennými, dátovými typmi (číslami, reťazcami, boolean hodnotami), základnými operáciami a formátovaním výstupu. Niektoré z nich môžu vyžadovať trošku kreativity. Nepoužívaj žiadne pokročilé funkcie ani cykly či vstup z klávesnice (input) – k tým sa dostaneš neskôr. Cieľom je, aby si precvičil(a) prácu s tým, čo bolo doteraz vysvetlené.
Odporúčanie k riešeniu¶
- Každú úlohu si môžeš riešiť v samostatnom textovom či kódovom odstavci v Jupyter Notebooku.
- Neboj sa experimentovať a spúšťať kód viac ráz. Sleduj, ako sa mení stav premenných.
- Pamätaj, že spúšťanie odstavcov “mimo poradia” môže zmeniť výsledky, keďže premennej mohla byť medzitým priradená iná hodnota. Ak nevieš, v akom stave sú premenné, môžeš reštartovať kernel (
Kernel -> Restart
) a spustiť kód od začiatku pekne postupne.
1. Jednoduchá kalkulačka s formátovaním¶
- Vytvor premenné
a
ab
s nejakými číselnými hodnotami (celočíselnými alebo desatinnými). - Vypočítaj a vypíš súčet, rozdiel, súčin, mocninu a celočíselné delenie.
- Pri výpise použi formátovanie tak, aby si zobrazil(a) výsledky zarovnané na stĺpce. Napr. formát v štýle:
a: 10 b: 3 a + b: 13 a - b: 7 ...
- Skús použiť rôzne spôsoby zarovnania (vpravo, vľavo, vycentrovať) a formátovania čísel.
Tip: Môžeš využiť metódu format()
alebo tzv. f-strings (napr. f"{hodnota:>10}"
) na zarovnanie.
# YOUR CODE
2. Porovnávanie a boolean hodnoty¶
- Vytvor premennú
x
s ľubovoľným číselným obsahom. - Vypíš True/False výsledky týchto podmienok (napr. cez
print(...)
):x == 0
x > 10
x != 10 and x <= 50
x != 10 or x > 100
- Zapíš do premennej
result
boolean hodnotu, ktorá bude výsledkom (3) a (4) spojených logickým operátoromand
. Vypíšresult
.
Experiment: Zmeň obsah x
a sleduj, ako sa menia výsledky.
# YOUR CODE
3. “Bezpečná” aritmetika¶
- Vytvor premennú
divider
s číselnou hodnotou (napr. 0 alebo iné číslo). - Vytvor premennú
number
s nejakou číselnou hodnotou. - Chceme vypočítať
number / divider
, ale ak jedivider
rovný nule, chcem namiesto delenia uložiť do premennejdivision_result
hodnotu nekonečno. - Vypíš hodnotu premennej
division_result
. - Zamysli sa, kedy je vhodné používať nekonečno a kedy by si mal radšej vrátiť chybu (v reálnej praxi).
Poznámka: Zatiaľ stačí použiť obyčajné if
– nezabudni správne odsadiť kód!
# YOUR CODE
4. Reťazce a ich spracovanie¶
- Vytvor premennú
text
, ktorá bude obsahovať ľubovoľný viacriadkový reťazec (použi trojité úvodzovky""" ... """
), napr. krátku vetu o sebe alebo nejaký citát. - Vypíš jeho dĺžku pomocou.
- Pomocou indexovania vypíš:
- prvý znak
- posledný znak
- nejaký podreťazec (napr. znaky od 2. po 5. v poradí)
- Odstráň pomocou metódy
.replace()
zo svojho reťazca jedno z vybraných slov (napr. ak tam máš slovo „som“, odstráň ho nahradením""
). Vypíš výsledok. - Zisti, či text začína a končí určitým slovom (napr.
startswith("Ahoj")
). Vypíš výsledok.
# YOUR CODE
5. Spracovanie textu¶
Vytvor premennú
long_text
, ktorá bude obsahovať dlhší reťazec napr. vo forme viet alebo slov oddelených čiarkou či medzerami (napr."PYthON je super LEN ho treba precvičovať, inak sa to nedá naučiť."
).Pomocou metódy
split()
rozdeľ tento reťazec buď podľa medzier, čiarky, prípadne iného oddeľovača (podľa toho, akú štruktúru si zvolil/la). Získaj tak zoznam jednotlivých slov/viet.Každý prvok tohto zoznamu očisti o prípadné nadbytočné medzery, tabulátory alebo bodky, čiarky (použi
strip()
aleboreplace()
podľa potreby).Všetky tieto vyčistené „podreťazce” (napr. slová) znovu spoj dokopy s použitím
join()
.- Môžeš napr. pripojiť všetky prvky do jedného riadku tak, že ich oddelíš čiarkou alebo medzerou.
Voliteľné vylepšenie:
- Vyhľadaj vo výslednom texte (napr. cez
find()
) konkrétne slovo (napr."precvičovať"
). Ak ho nájdeš, vypíš jeho index, inak vypíš, že sa v texte nenachádza. - Môžeš zmeniť všetky slová na veľké či malé písmená (napr.
s.upper()
).
- Vyhľadaj vo výslednom texte (napr. cez
# YOUR CODE
6. Formátovanie správy s premennými¶
Predstav si, že chceš zobraziť krátku informáciu o známke študenta a priemernej úspešnosti.
Vytvor premenné
student_name
(string),grade
(int) aaverage_score
(float).Vypíš správu v tvare napr.:
Študent/Študentka: Martin Získaná známka: 1 Celková priemerná úspešnosť: 87.6543 %
- Pri percentách zaokrúhli na 2 desatinné miesta.
- Pekne vycentruj meno študenta napr. do 20 znakov.
- Môžeš experimentovať s inými formátmi výpisu (napr. zarovnávanie, oddeľovanie znakov hviezdičkou atď.).
# YOUR CODE
7. “Posúvač” reťazca¶
- Vytvor premennú
word
s reťazcom (napr."Python"
). - “Posuň” jej znaky o 1 doľava a posledný znak vlož na začiatok.
- Príklad: Ak je
word = "Python"
, po posunutí buden
na začiatku a zvyšokpytho
bude za ním (tzn."nPytho"
). - Urob to pomocou slicing-u
[:...]
a[...]
.
- Príklad: Ak je
- Vypíš pôvodný aj posunutý reťazec.
Výzva: Skús posun viackrát za sebou.
# YOUR CODE
8. Kontrola typu a prevod dát¶
- Vytvor premenné
a = "42"
,b = "3.14"
,c = "abc"
. - Skús každý z týchto reťazcov previesť na číslo pomocou
int()
alebofloat()
a zisti, kedy vzniká chyba. - Vytvor premennú
d = "12345"
. Vypíš, koľko cifier obsahuje a koľko je to ako číslo vynásobené dvoma. - Zamysli sa, prečo pri prevode
"abc"
na číslo došlo k chybe (a aké výnimky, t. j. chyby, môžeš takto dostať).
# YOUR CODE
9. Malá “databáza”¶
- Vytvor premenné, ktoré reprezentujú tvoj (alebo fiktívny) profil:
name
(string)age
(int)height
(float)is_student
(bool)
- Napíš krátku správu o danom profile – napr. "Moje meno je..., mám ... rokov, meriam ... cm, ... študent(ka).".
- Pre boolean
is_student
si zadefinuj logiku: ak jeTrue
, vypíš “som študent(ka)”, inak “nie som študent(ka)”. - Použi správne odsadenie a
if
tak, aby si sa vyhol/vyhla logickej chybe.
- Pre boolean
- Vypíš text vo formáte, ktorý vyzerá úhľadne (napr. odsadenie, zarovnanie).
# YOUR CODE
10. “Spracovanie zoznamu s podmienkami”¶
Vytvor premennú
data
, ktorá bude zoznamom čísel – môžeš si zvoliť, či budú pozitívne, negatívne, ale pridaj tam aspoň jednu väčšiu hodnotu napr. 999, a zopár bežných čísel, napr.[3, -1, 7, 0, 999, 12, -5, 42]
.Napíš kód s for cyklom (napr.
for x in data:
), ktorý:- Preskočí (
continue
) všetky záporné čísla (t. j. ak jex < 0
, pokračuj ďalšou iteráciou bez spracovania). - Ak narazíš na číslo 999, okamžite ukonči (
break
) cyklus (nechceš ďalej spracovávať). - Všetky ostatné (kladné a nenulové) čísla nejako spracuj – napr. zrátaš ich dokopy, alebo ich vypíšeš.
- Preskočí (
Vypíš výsledok:
- Ak počítaš súčet, tak napr. „Súčet zaujímavých hodnôt je: ...“
- Alebo ak iba vypisuješ čísla, stačí do konzoly uviesť „Spracované číslo: ...“.
Skús zmeniť poradie hodnôt v
data
a spustiť kód znova. Sleduj, ako príkazybreak
acontinue
ovplyvňujú priebeh cyklu.
Tipy a rozšírenia:¶
- Môžeš využiť aj while cyklus s ručným inkrementovaním indexu – hľadaj rozdiel, či je to náročnejšie alebo jednoduchšie.
- Pridaj logiku, kde ak by si narazil na hodnotu 0, tak ju vynecháš alebo vyhlásiš za špeciálny prípad („Nula! Preskočím.“).
- Ak chceš trénovať
enumerate()
, môžeš pri každom spracovanom čísle vypísať aj jeho index v pôvodnom zozname.
Takto si overíš, že rozumieš mechanizmu cyklov, základných príkazov break
a continue
, a vieš ich použiť pri iterovaní cez zoznam s rôznymi podmienkami.
# YOUR CODE
# YOUR CODE
11. Validácia známok študentov¶
Predstav si, že máš slovník grades
, ktorý mapuje mená študentov na ich (možno neúplné či chybné) známky. Napríklad:
grades = {
"Adam": 95,
"Beata": 101,
"Cyril": -5,
"Diana": 87,
"Erik": 45,
"Filip": 120,
}
Zmysel: Niektorí študenti môžu mať:
- Zápornú hodnotu známky (napr.
-5
) – predstavuje zjavne chybné údaje, ktorým neveríme. - Priveľkú známku nad 100 – to je tiež neprípustné (maximom je 100).
1. Zadanie¶
- Napíš kód, ktorý bude cez for cyklus prechádzať všetky
(meno, známka)
páry v slovníkugrades
. - Ak zistíš, že známka je negatívna, preskoč ju (použi
continue
) – považujeme ju za chybnú, no chceme pokračovať pre ďalších študentov. - Ak zistíš, že známka je nad 100, okamžite preruší cyklus (použi
break
), pretože nechceme ďalej spracovávať, kým neoveríme, prečo sú tam také veľké hodnoty. - Všetky ostatné (platné) známky si chceš sčítať a započítať do počtu validných známok.
- Na konci vypíš priemer z týchto platných hodnôt (pozn.: ak si nenašiel žiadnu platnú známku pred
break
, môžeš skončiť s priemerom 0 alebo zobraziť upozornenie).
2. Príklady vstupov¶
- Vstup s vyššie spomenutými údajmi (viď
grades
). - Môžeš skúsiť iný scenár, kde žiadna známka nie je chybná – nebudeš mať
break
anicontinue
a pekne získate priemer všetkých. - Alebo scenár, kde prvá známka je nad 100 – kód by mal hneď
break
a žiadne iné údaje nespracuje.
3. Vylepšenia (voliteľné)¶
- Môžeš pridať logiku pre nulové známky (napr. ak by 0 bola osobitný prípad).
- Môžeš zapisovať aj mená študentov, ktorých známky boli validné, a na konci ich spolu s priemerom vypísať.
- Skús namiesto
for ... in grades.items()
použiť iný prístup (napr.while
, iterovať cez kľúče atď.).
# YOUR CODE