ebSkola

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.

2.4.13. Lieto mainīgos, datu tipus un pamatkonstrukcijas.

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 no input() 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.5 uzbrukuma 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.

  1. Ieraksti a = input("Pirmais skaitlis: ") un b = input("Otrais skaitlis: ").
  2. Pievieno rindu print(a + b) un palaid ar 5 un 5.
  3. Pieraksti, ko programma izdrukāja.
  4. Ieliec abas ievades int() iekšā: a = int(input("Pirmais skaitlis: ")).
  5. Palaid vēlreiz ar tiem pašiem 5 un 5.
  6. 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.

  1. Izveido jaunu failu varona_lapa.py.
  2. Ieraksti teksta ievadi vards = input("Vārds: ").
  3. Ieraksti vesela skaitļa ievadi hp = int(input("Dzīvības punkti: ")).
  4. Ieraksti daļskaitļa ievadi jauda = float(input("Uzbrukuma jauda: ")).
  5. Izrēķini bojajums = hp * jauda.
  6. Izdrukā trīs rindas: vārdu, HP un aprēķināto bojājumu.
  7. 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āž.

  1. Palaid programmu ar HP vērtību 0 un pieraksti rezultātu.
  2. Palaid ar negatīvu HP -50 un pieraksti, vai rezultāts ir loģisks.
  3. Palaid ar tukšu ievadi - vienkārši nospied Enter.
  4. Izlasi kļūdas nosaukumu un pieraksti to.
  5. Palaid ar jaudu abc un pieraksti arī šo kļūdu.
  6. 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.

  1. Pievieno izvadē pie HP vārdu HP, piemēram 100 HP.
  2. Pievieno pie bojājuma vārdu bojājuma punkti.
  3. Pievieno pirmo rindu, kas sasveicinās ar spēlētāju vārdā.
  4. Pievieno pēdējo rindu ar atvadu tekstu.
  5. 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() vai float() 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 vārdu: Ozols
Ievadi sākuma punktus: 50
Ievadi reizinātāju (piem., 1.2): 1.5
Dalībnieks Ozols iegūst 75.0 punktus!