ebSkola

2.3 Matemātika un f-strings

Stundas uzdevums: Lietot paplašinātus matemātikas operatorus spēles mehānikas radīšanai un formatēt rezultātu izvadi, izmantojot modernu un lasāmu f-string sintaksi.

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

70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - izmēģini //, % un ** · 2. uzdevums (~25 min) - uzraksti inventāra kalkulatoru · 3. uzdevums (~20 min) - pārraksti izvadi ar f-string un noapaļo. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.

Pirms sāc: atver VS Code un izveido failu matematika.py. Šajā stundā katru operatoru vispirms izmēģināsi atsevišķi un tikai tad liksi programmā.

Teorija: Matemātikas operatori un teksta formatēšana

  • f-strings (Formatētas virknes): Mūsdienīgs un ērts veids, kā Python valodā ievietot mainīgo vērtības tieši tekstā. To dara, pirms pēdiņām pierakstot burtu f, un pašu mainīgo ieliekot {figūriekavās}.
  • Integer division (Veselā dalīšana) //: Dalīšanas operācija, kas ignorē skaitļus aiz komata (decimāldaļu) un atgriež tikai veselo daļu kā int datu tipu.
  • Modulo (Atlikums) %: Matemātiska operācija, kas atgriež tikai to vērtību, kas "paliek pāri" pēc veselās dalīšanas. Bieži izmanto spēļu loģikā, piemēram, inventāra vietu aprēķināšanai.
  • Exponentiation (Kāpināšana) **: Skaitļa reizināšana pašam ar sevi norādīto reižu skaitu. (piem., 2 ** 3 ir tas pats kas $2^3$).

Praktiskie uzdevumi

1. uzdevums -

Izmēģini //, % un **

Beigās tu zināsi, ar ko dalīšana ar // atšķiras no parastās dalīšanas.

  1. Ieraksti rindu print(17 / 5) un palaid.
  2. Ieraksti rindu print(17 // 5) un palaid.
  3. Ieraksti rindu print(17 % 5) un palaid.
  4. Pieraksti visus trīs rezultātus README.md failā.
  5. Ieraksti rindu print(2 ** 3) un pieraksti rezultātu.
  6. Paskaidro sev: 17 dalīts ar 5 ir 3 pilnas reizes un 2 pāri.

Gatavs, kad: tu vari pateikt, ka // dod 3, % dod 2, bet ** dod 8.

2. uzdevums -

Uzraksti inventāra kalkulatoru

Beigās programma pateiks, cik pilnu somu vajag un cik mantu paliks pāri.

  1. Ieraksti mantas = int(input("Cik mantu ir? ")).
  2. Ieraksti somas_ietilpiba = int(input("Cik mantu ietilpst somā? ")).
  3. Izrēķini pilnās somas: pilnas = mantas // somas_ietilpiba.
  4. Izrēķini atlikumu: pari = mantas % somas_ietilpiba.
  5. Izdrukā abus skaitļus divās atsevišķās rindās.
  6. Palaid ar 17 mantām un somu, kurā ietilpst 5.

Gatavs, kad: programma pateiks, ka pilnas somas ir 3 un pāri paliek 2 mantas.

3. uzdevums -

Pārraksti izvadi ar f-string un noapaļo

Beigās izvade būs viens skaidrs teikums, nevis atsevišķi skaitļi.

  1. Nomaini izvadi uz print(f"Vajag {pilnas} somas un {pari} mantas paliks pāri.").
  2. Palaid un pārbaudi, vai teikums salasās.
  3. Pievieno rindu videji = mantas / somas_ietilpiba.
  4. Izdrukā to ar print(f"Vidēji {videji} somas") un pieraksti, cik ciparu ir aiz punkta.
  5. Nomaini uz print(f"Vidēji {videji:.1f} somas") un palaid vēlreiz.
  6. Pieraksti vienu secinājumu: ko dara :.1f figūriekavās.

Gatavs, kad: pirms labojuma skaitlis ir garš, piemēram 3.4000000000000004, bet pēc tā - tieši 3.4.

Papildu uzdevums - Pievieno kāpināšanu spēles formulā

Ja pamatdarbs ir gatavs, izmanto ** kā spēles specialā gājiena formulu.

  1. Ieraksti limenis = int(input("Varoņa līmenis: ")).
  2. Izrēķini speks = limenis ** 2.
  3. Izdrukā to ar f-string vienā teikumā.
  4. Palaid ar līmeņiem 2, 5 un 10 un pieraksti rezultātus.
  5. Pieraksti, cik reizes spēks pieaug, kad līmenis pieaug divas reizes.

Gatavs, kad: ar līmeni 5 spēks ir 25, bet ar līmeni 10 - 100, un tu vari to izskaidrot.

Biežākās kļūdas (un kā tās labot):

  • Aizmirsts f prefikss: Ja pirms pēdiņām neuzrakstīsi burtu f, terminālis izvadīs tekstu, neatpazīstot mainīgos: "Ar spēku {speks} tu...".
  • ZeroDivisionError (Dalīšana ar nulli): Parādās, ja 2. uzdevumā lietotājs ievada, ka spēlētāju skaits ir 0. Matemātiski dalīt ar nulli nav iespējams, un programmas izpilde apstāsies.
  • Drukas kļūdas figūriekavās: Figūriekavās {} ievietotajam mainīgā nosaukumam ir precīzi jāsakrīt ar iepriekš definēto. Ja deklarēji bojajums, bet iekavās raksti {Bojajums} (ar lielo burtu), saņemsi NameError.

Koda piemērs: f-strings un operatori

# Mainīgo sagatavošana
vards = "Zibens"
limenis = 5

# Izvade ar mainīgajiem un tiešu matemātiku figūriekavās
print(f"Spēlētājs {vards} ir {limenis} līmenī.")

# ** ir kāpināšana. Tātad limenis ** 2 nozīmē 5 kvadrātā (5 * 5).
print(f"Tava speciālā gājiena spēks ir {limenis ** 2}!")
Spēlētājs Zibens ir 5 līmenī.
Tava speciālā gājiena spēks ir 25!