1: Kintamieji

Besikeičiantiems duomenims/informacijai saugoti programoje naudojami kintamieji. Jie turi vardus (panašiai kaip failai), pagal kuriuos galima duomenis pasiekti.

Duomenų priskyrimo veiksmas atrodo panašiai kaip matematikoje:

«kintamojo vardas» = «priskiriama reikšmė»
(Tokie «dvigubi skliaustai» bus naudojami formuluočių dalių paaiškinimui.)

Pvz, kintamajam pinigai priskiriama reikšmė 13:

pinigai = 13
Po šio priskyrimo esančiuose veiksmuose Python "žinos", kad pinigai yra 13.

Atsargiai, būtų klaida:

13 = pinigai
Nes Python sintaksėje numatyta, kad priskyrimas vyksta iš dešinės lygybės pusės į kairę (ir ne kitaip).

Žemiau trumpas kelių veiksmų pavyzdys su kintamuoju:

Pavyzdys
Kintamojo naudojimo pavyzdys.

Panagrinėkite programos eilutes ir išsiaiškinkite, kaip kuri nulėmė atspausdintą rezultatą. Kintamasis x turi reikšmę 13 pirmose dviejose print komandose, vėliau jam priskiriama reikšmė 7.

Kaip pastebėjote, su skaičiais galima atikti aritmetinius veiksmus - tam skirti operatoriai + - * / ir dar keli (bet apie juos - vėliau).

Šiaip, programuotojams sekti programos veiksmus tenka gan dažnai - ypač, kai ieškoma klaidų. Kaip keičiasi kintamųjų reikšmės patogu sekti lentelėje (kad ir ant popieriaus), pvz:

Tikslas: nustatyki, kokias reikšmes turės kintamieji programos pabaigoje.

first = 2
second = 3
third = first * second
second = third - first
first = first + second + third
third = second * first
Principas: Lentelėje surašomos ir sekamos kintamųjų reikšmės. Nuslinkite iki lentelės pabaigos, kad sužinotumėt galutines reikšmes.

Veiksmas Reikšmės (įvykus veiksmui)
first second third
first = 2 2
second = 3 2 3
third = first * second 2 3 6
second = third - first 2 3 4 6
first = first + second + third 2 12 4 6
third = second * first 12 4 6 48

Taigi, programos pabaigoj kintamasis first yra lygus 12, second yra 4, o third reikšmė yra 48.

Norint suprasti programos kodą, tokia lentelė visada pravers. Taip pat yra automatizuotų priemonių, leidžiančių sekti programą pažingsniui - šioje sistemoje yra Python3 vizualus seklys (jį rasite ir viršutiniame meniu). Pabandykime juo pasinaudoti.

Mygtukas "Forward >" arba rodyklės klavišai leis eiti pažingsniui (po eilutę) pirmyn (arba atgal). Stebėkite, kaip keičiasi kintamieji po kiekvienos eilutės.

Trumpas pratimas/klausimas:

Trumpo atsakymo užduotis: Sekitei x'o reikšmę?

Kokia x reikšmė programos pabaigoje?

x = 10
x = x + x
x = x - 5
Teisingai!

Dvi dažnos klaidos

Jei bandote naudoti kintamąjį (vardą), kuriam nebuvo priskirta jokia reikšmė, programa “lūžta”, nes tokio nežino. Pabandykime:

Pavyzdys: Nežinomas kintamasis

Kaip matote, gavom klaidos pranešimą NameError: name 'trouble' is not defined. Jei padarysite žioplą rašybos klaidą (praleisite raidę ar parašysite mažają vietoj didžiosios), taip pat gausite tokią klaidą: pvz.

Pavyzdys: Klaidelė kintamojo pavadinime

Kita dažnoka pradedančiųjų klaida (kurią jau minėjom), kai supainiojamos priskyrimo = pusės.

Pavyzdys: SyntaxError: can't assign to literal

Pirma eilutė OK, o antra - bėda: (4 = x). Skaičius 4 yra konstanta (negali keistis), todėl nėra prasmės jam priskirti kitą reikšmę. Taigi, nors matematikoje A = B ir B = A reiškia tą patį, programavime taip nėra - priskyrimo veiksmas turi kryptį.

Pratimai

Kintamųjų naudojimo apšilimas:

Programavimo pratimas: Heads, Shoulders, Knees and Toes

Įsivaizduokite, kad programoje jau yra kintamasis "people", kuris reiškia vakarėlio dalyvių skaičių. Parašykite veiksmus, kurie skaičiuotų vakarėlio dalyvių galvas (kintamasis heads), pečius (shoulders), kelius(knees) ir kojų pirštus (toes). Jums nereikia atspausdinti (print) reikšmių - jas automatiškai patikrins sistema.
Užuomina

Sumaišytos programos eilutės

Šioje užduotyje esantis kodas yra teisingas, tačiau jame sumaišytos eilutės. Sudėkite eilutes teisinga tvarka (pertempdami su pele).

Sumaišytų eilučių užduotis: Vidutinio greičio skaičiuoklė
Turime duomenis (kintamuosius) apie motociklininko kelionę per kalną:
uphillDistance (įkalnė) ir downhillDistance (nuokalnė) reiškia nuotolį kilometrais,
o uphillTime (įkalnės laikas) ir downhillTime (nuokalnės laikas) - kiek truko kiekviena kelionės dalis. Sutvarkyk eilutes, kad programa rastų ir atspausdintų visos kelionės vidutinį greitį.
Užuomina
  • totalDistance = uphillDistance + downhillDistance
  • print(averageSpeed)
  • averageSpeed = totalDistance / totalTime
  • totalTime = uphillTime + downhillTime

Sukeiski

Paskutinis pratimas

Programavimo pratimas: Sukeisk kintamųjų reikšmes
Sistema automatiškai paruoš du kintamuosius (x ir y). Reikia sukeisti jų reikšmes. Reikšmių atspausdinti nereikia.
Sprendimas yra trumpas ir greitas, bet jį sugalvoti nelengva.


Užuomina 1
Aritmetikos (+-*/) naudoti nereikia . Tereikia naudoti reikšmės priskyrimą =. Galima sukurti naują kintamąjį ;)
Užuomina 2
Turime du tikslus, priskirti x reikšmę y-ui ir priskirti y reikšmę x-ui. Vieną reikšmę priskirti galime naudodami:

x = y
Kaip abu tikslus pasiekti iškarto? Čia reikia “out of the box” mąstymo!
Užuomina 3
Ši programėlė atrodo daug žadanti:

x = y
y = x
Bet yra problema. Kadangi x-ui priskyrus y-o reikšmę, pradinės x-o reikšmės nebeliks :/. Kaip ją išsaugoti, kad vėliau galėtume priskirti y-ui?
Užuomina 4
X pradinę reikšmę galima išsaugoti naujame kintamajame, pvz xpradinis = x. Po to, galima x = y. Pabaigoje, priskirk y-ui pradinę x-o reikšmę.
Užuomina 5

Vikipedijos nuoroda, kurioje pseudokodo kalba pateiktas sukeitimo pavyzdys. Arba galima gudriai panaudoti aritmetiką kad nereiktų papildomo kintamojo (tačiau šis metodas veiks tik su skaičiais, su tekstu taip nepavyktų).

Jei teisingai atlikai šį pratimą, esi pasiruošęs keliauti toliau.