2.2 Interaktivitāte un konvertācija
Stundas uzdevums: Izveidot interaktīvu programmu, iegūt datus no lietotāja caur termināli un konvertēt ievadīto tekstu matemātiskos datu tipos tālākai apstrādei.
70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - parādi, ko dara int() ap input() · 2. uzdevums (~25 min) - uzraksti varoņa lapu ar trim ievadēm · 3. uzdevums (~20 min) - pārbaudi robežgadījumus un salabo tos. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.
Pirms sāc: atver VS Code un izveido failu varonis.py. Noderēs 2.1 stundā pierakstītais par int() un float().
Teorija: Ievade un datu tipu tulkošana
Lai programma reaģētu uz spēlētāja darbībām, tai jāspēj pieņemt un pareizi interpretēt informācija no ārpasaules.
- Input (Ievade): Funkcija
input()aptur kodu un gaida lietotāja tekstu. Atceries: visi dati noinput()sākotnēji ir String (Simbolu virkne). - String (Simbolu virkne): Teksta datu tips
str. Piemēram,"15"datoram ir tikai divi simboli, nevis skaitlis piecpadsmit. - Type casting (Datu tipu konvertācija): Funkciju izmantošana, lai mainītu datu tipu.
- Integer (Vesels skaitlis): Funkcija
int()pārvērš tekstu par veselu skaitli (piemēram, HP punkti, inventāra priekšmetu skaits). - Float (Daļskaitlis): Funkcija
float()pārvērš tekstu par skaitli ar decimāldaļu (piemēram,1.5uzbrukuma reizinātājs).
Praktiskie uzdevumi
1. uzdevums -
Parādi, ko dara int() ap input()
Beigās tu redzēsi, ka viena funkcija maina visu rezultātu.
- Ieraksti
a = input("Pirmais skaitlis: ")unb = input("Otrais skaitlis: "). - Pievieno rindu
print(a + b)un palaid ar 5 un 5. - Pieraksti, ko programma izdrukāja.
- Ieliec abas ievades
int()iekšā:a = int(input("Pirmais skaitlis: ")). - Palaid vēlreiz ar tiem pašiem 5 un 5.
- Pieraksti, kas mainījās.
Gatavs, kad: pirmajā reizē izvade ir 55, bet pēc int() pievienošanas - 10.
2. uzdevums -
Uzraksti varoņa lapu ar trim ievadēm
Beigās programma savāks varoņa datus un izdrukās sakārtotu aprakstu.
- Izveido jaunu failu
varona_lapa.py. - Ieraksti teksta ievadi
vards = input("Vārds: "). - Ieraksti vesela skaitļa ievadi
hp = int(input("Dzīvības punkti: ")). - Ieraksti daļskaitļa ievadi
jauda = float(input("Uzbrukuma jauda: ")). - Izrēķini
bojajums = hp * jauda. - Izdrukā trīs rindas: vārdu, HP un aprēķināto bojājumu.
- Palaid un pārbaudi ar Anna, 100, 1.2.
Gatavs, kad: programma izdrukā trīs rindas, un bojājums ir 120.0.
3. uzdevums -
Pārbaudi robežgadījumus un salabo tos
Beigās tu zināsi, kuras ievades tavu programmu nogāž.
- Palaid programmu ar HP vērtību
0un pieraksti rezultātu. - Palaid ar negatīvu HP
-50un pieraksti, vai rezultāts ir loģisks. - Palaid ar tukšu ievadi - vienkārši nospied Enter.
- Izlasi kļūdas nosaukumu un pieraksti to.
- Palaid ar jaudu
abcun pieraksti arī šo kļūdu. - Pieraksti vienu secinājumu: kura ievade ir bīstamākā un kāpēc.
Gatavs, kad: tev ir pierakstīti vismaz divi ievades veidi, kas programmu avarē, ar to kļūdu nosaukumiem.
Papildu uzdevums - Pievieno mērvienības izvadei
Ja pamatdarbs ir gatavs, padari izvadi saprotamāku cilvēkam.
- Pievieno izvadē pie HP vārdu
HP, piemēram100 HP. - Pievieno pie bojājuma vārdu
bojājuma punkti. - Pievieno pirmo rindu, kas sasveicinās ar spēlētāju vārdā.
- Pievieno pēdējo rindu ar atvadu tekstu.
- Palaid un izlasi visu izvadi skaļi - tai jāskan kā teikumiem.
Gatavs, kad: izvadi var izlasīt kā parastus teikumus, nevis kā atsevišķus skaitļus.
Biežākās kļūdas (un kā tās labot):
- ValueError (Vērtības kļūda): Rodas, ja
int()vaifloat()funkcijā tiek nodots teksts, kas nav cipars (piemēram, "pieci"). Terminālī jāievada tikai matemātiskas vērtības. - TypeError (Tipa kļūda): Rodas, ja mēģina veikt matemātiskas darbības starp String un Integer. Pārliecinies, ka visi dati aprēķinos ir konvertēti uz skaitļiem.
- Decimālkomats pret decimālpunktu: Python un terminālis Float vērtībās kā atdalītāju atpazīst tikai punktu (
.), nevis komatu (,). Ievadot komatu, programma sabruks.
Koda piemērs: Datu iegūšana un konvertācija
# Teksta iegūšana
vards = input("Ievadi vārdu: ")
# Vesela skaitļa iegūšana
baze = int(input("Ievadi sākuma punktus: "))
# Daļskaitļa iegūšana
reizinatajs = float(input("Ievadi reizinātāju (piem., 1.2): "))
# Matemātika
gala_punkti = baze * reizinatajs
# Izvade
print("Dalībnieks", vards, "iegūst", gala_punkti, "punktus!")
Ievadi sākuma punktus: 50
Ievadi reizinātāju (piem., 1.2): 1.5
Dalībnieks Ozols iegūst 75.0 punktus!