Vadovėlis/Kas čia eina?

Iš Pitonas.


Įvestis ir kintamieji

Kintamieji
Kintamieji

Jaučiu, kad atėjo laikas tikrai sudėtingai programai. Štai ji:

print("Stop!")
vartotojo_įvestis = input("Kas čia eina? ")
print("Gali praeiti,",  vartotojo_įvestis )

Kai paleidau programą, štai ką mano ekranas parodė:

Stop!
Kas čia eina? Benas
Gali praeiti, Benas

Pastaba: Jei paleisi kodą spausdamas "F5", Python išvestis bus tik tokia:

Stop!
Kas čia eina?

Tu turi įvesti savo vardą į Python apvalkalą ir tada paspausti enter norėdama/s pamatyt likusį tekstą.

Žinoma, kai tu paleisi programą, tavo ekranas atrodys kitaip dėl input() užklausos. Kai paleidai programą (juk paleidai, tiesa?), tu turėjai surinkti savo vardą ir tada paspausti Enter. Programa atspausdino dalį teksto ir tavo vardą. Taip atrodo įvesties pavyzdys. Programa pasiekia tam tikrą kodo tašką ir laukia vartotojo įvesties, kad duomenis galėtų panaudoti tolimesniuose procesuose.

Žinoma, gauti informaciją iš vartotojo pasaulio nieko verta, jei tos informacijos nėra kur padėti. Ir šioje vietoje atsiranda kintamieji.

Pavyzdinėje programoje vartotojo_įvestis yra kintamasis. Kintamieji yra kaip dėžės, į kurias galima įdėti norimas informacijos dalis.

Štai programa, parodanti kintamųjų pavyzdžius:

a = 123.4
b23 = 'Šlamštas'
vardas = "Benas"
b = 432
c = a + b
print("a + b yra", c)
print("vardas yra", vardas)
print("Rūšiuotos dalys, Po vidurnakčio ar", b23)

Štai kokia išvestis:

a + b yra 555.4
vardas yra Benas
Rūšiuotos dalys, Po vidurnakčio ar Šlamštas


Kintamieji laiko duomenis. Viršuje aprašytoje programoje kintamieji yra a, b23, vardas, b ir c. Pagrindiniai du kintamųjų tipai yra tekstas ir skaičius. Tekstas yra raidžių, skaičių ir kitų simbolių seka. Šiame pavyzdyje b23 ir vardas yra tekstinio tipo kintamieji. Šlamštas, Benas, a + b yra, vardas yra, ir Rūšiuotos dalys, Po vidurnakčio ar šioje programoje yra tiesiog tekstinės reikšmės. Paprastas tekstas yra apsuptas kabučių " arba '.

Kitas kintamojo tipas yra skaičius. Atkreipkite dėmesį, kad kintamieji, kurie naudojami saugoti reikšmes, nenaudoja kabučių (" ir '). Jei norite naudoti realias reikšmes, privalote naudoti kabutes.

reikšmė1 == Oho
reikšmė2 == "Oho"

Abu pavyzdžiai atrodo vienodai, bet pirmu atveju Python tikrins ar reikšmė, patalpinta kintamajame reikšmė1, yra tokia pati kaip kintamojo Oho. Antrame pavyzdyje Python tikrins ar tekstas (konkrečios raidės O,h ir o) yra tokios pat kaip ir reikšmė2 (toliau daugiau paaiškinsiu apie tekstą ir ==).

Priskyrimai

Gerai, dabar mes turime dėžutes, pavadintas kintamaisiais, taip pat informaciją, kuri gali būti kintamajame. Kompiuteris pamatys tokią eilutę vardas = "Benas" ir perskaitys ją kaip "Padėk tekstą Benas į dėžę (ar kintamąjį) vardas". Vėliau, pamatęs sakinį c = a + b jį perskaitys kaip "padėt sumą a + b arba 123.4 + 432, kas lygu 555.4, į c". Dešinė sakinio pusė konvertuosis ir rezultatas bus padėtas į kintamajį kairėje pusėje (c). Tai yra vadinama priskyrimu. Turėtume nemaišyti priskyrimo ir matematinio lygybės ženklo (=). Ką reiškia == aptarsime vėliau.


O štai ir kitas kintamųjų naudojimo pavyzdys:

a = 1
print(a)
a = a + 1
print(a)
a = a * 2
print(a)

Ir žinoma štai tokį rezultatą gausime:

1
2
4

Net jei kintamieji yra abiejose lygybės pusėse (pavyzdžiui šlamštas = šlamštas), kompiuteris vis tiek perskaitys taip: "Pirmiausia surask informaciją, kuri patalpinta ir tada surask, kur ją padėti"

Dar viena programa prieš man pabangiant šį skyrių:

skaičius = float(input("Įvesk skaičių: "))
sveikasSkaičius = int(input("Įvesk sveiką skaičių: "))
tekstas = input("Įvesk tekstą: ")
print("skaičius =", skaičius)
print("skaičius yra", type(skaičius))
print("skaičius * 2 =", skaičius * 2)
print("sveikas skaičius =", sveikasSkaičius)
print("sveikas skaičius yra", type(sveikasSkaičius))
print("sveikasSkaičius * 2 =", sveikasSkaičius * 2)
print("tekstas =", tekstas)
print("tekstas yra", type(tekstas))
print("tekstas * 2 =", tekstas * 2)

Rezultatas:

Įvesk skaičių: 12.34
Įvesk sveiką skaičių: -3
Įvesk tekstą: Labas
skaičius = 12.34
skaičius yra <class 'float'>
skaičius * 2 = 24.68
sveikas skaičius = -3
sveikas skaičius yra <class 'int'>
sveikasSkaičius * 2 = -6
tekstas = Labas
tekstas yra <class 'str'>
tekstas * 2 = LabasLabas


Atkreipk dėmesį, kad kintamasis skaičius buvo sukurtas su float(input()), išsaugos, o vėliau atspausdins tokį skaičių, koks buvo įvestas – su kableliu. Kintamasis sveikasSkaičius, kuris buvo sukurtas su int(input()), grąžina sveiką skaičių – reikšmę be kablelio. Tuo tarpu tekstas, kuris buvo sukurtas su input(), grąžino tekstinę eilutę (gali būti aprašoma ir str(input())). Jei tu nori, kad vartotojas įvestų skaičių su kableliu, naudok float(input()) kintamojo tipą. Jei nori, kad vartotojas įvestų sveiką skaičių, naudok int(input()) (jeigu vartotojas įves skaičių su kabliu – dalį po kabelio programa tiesiog ignoruos), bet jei nori teksto – naudok input().

Antra pusė programos naudoja type() funkciją, kuri nusako, kokio tipo kintamasis yra. Skaičius yra int arba float tipo. Tai yra angliškų žodžių integer (sveikas skaičius) ir floating point (slankusis kablelis, naudojamas daugiausiai skaičiams su kableliu) trumpiniai. Tekstinė eilutė yra str, trumpinys string (tekstinė eilutė). Sveiki skaičiai ir slankusis kablelis gali būti naudojami matematinėms funkcijoms, tekstas – ne. Atkreipk dėmesį, kai Python'as daugina skaičių iš sveiko skaičiaus gaunamas rezultatas, kurio ir galima tikėtis, tačiau jei tekstas padauginamas iš sveiko skaičiaus – sukuriamos kelios teksto kopijos (pavyzdžiui, tekstas * 2 = LabasLabas)

Tos pačios operacijos su teksto tipu daro kitokius dalykus nei su skaičiais. Taip pat, kai kurios operacijos veikia tik su skaičiais ir grąžina klaidą, jei bus bandoma panaudoti tesktą. Štai keletas interaktyvių pavyzdžių:

>>> print("Čia" + " " + "yra" + " junginys.")
Čia yra junginys.
>>> print("Ha, " * 5)
Ha, Ha, Ha, Ha, Ha, 
>>> print("Ha, " * 5 + "ha!")
Ha, Ha, Ha, Ha, Ha, ha!
>>> print(3 - 1)
2
>>> print("3" - "1")
Traceback (most recent call last):
  File "<string>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'str'
>>> 

Štai sąrašas kelių operacijų su tekstu:

Operacija Symbolis Pavyzdys
Pakartojimas * "i" * 5 == "iiiii"
Sujungimas + "Hello, " + "World!" == "Hello, World!"

Pagrindinės tipų konvertavimo operacijos:

Operacija Funkcija Pavyzdys Pastabos
Konvertavimas į sveikąjį skaičių int int("3") == 3
Konvertavimas į realųjį skaičių float float("3.14") == 3.14
Konvertavimas į tekstinę eilutę str str(3) == "3" Daugaiu apie tai gali paskaityti skyriuje Daugiau apie tekstines eilutes
Konvertavimas į loginį tipą bool bool(1) == True
Kintamojo tipo gavimas type print(type(kintamasis))

Konstantos

Konstanta tai tam tikras nekintamas dydis. Rašant kodą nekintančius dydžius naudinga aprašyti, kaip konstantas. Tai padaro kodą lengviau suprantamą ir lengviau skaitomą. Python kalboje, ne taip kaip kai kuriose kitose kalbose konstantų nėra, tad tam reikia naudoti paprastus kintamuosius. Tam kad būtų aišku jog tai yra konstanta Pitone įprasta konstantas pavadinti didžiosiomis raidėmis.

Konstantų pavyzdžiai:

PI = 3.141592653589793

#Oilerio konstanta
E = 2.718281828459045
SEKUNDŽIŲ_VALANDOJE = 3600

#Absoliutis nulis pagal Celsijaus skalę
TEMPERATŪRA_ABSOLIUTUS_NULIS = -273.15
NUORODA = "https://pitonas.lt"

#Apibrėžiant konstantą galime panaudoti ir aritmetinius veiksmus
SEKUNDŽIŲ_PAROJE = 60 * 60 * 24


Parašykime programą, kuri skaičiuoja skritulio plotą, panaudodami π kaip konstantą:

PI = 3.141592653589793

spindulys = float(input("Skritulio spindulys: "))
plotas = PI * spindulys * spindulys
print("Skritulio plotas: ", plotas)


Pavyzdžiai

Laikas.py

# ši programa apskaičiuoja laiko priklausomybę nuo greičio ir atstumo
print("Įvesk greitį ir atstumą")
greitis = float(input("Greitis: "))
atstumas = float(input("Atstumas: "))
laikas = (atstumas / greitis)
print("Laikas:", laikas)

Rezultatas:

Įvesk greitį ir atstumą
Greitis: 5
Atstumas: 10
Laikas: 2.0
Įvesk greitį ir atstumą
Greitis: 3.52
Atstumas: 45.6
Laikas: 12.9545454545

Plotas.py

# Ši programa apskaičiuoja stačiakampio perimetrą ir plotą 
print("Įveskite stačiakampio informaciją")
ilgis = float(input("Ilgis: "))
plotis = float(input("Plotis: "))
perimetras = (2 * ilgis + 2 * plotis) 
print("Plotas:", ilgis * plotis)
print("Perimetras:", perimetras)

Pavyzdžio rezultatas:

Įveskite stačiakampio informaciją
Ilgis: 4
Plotis: 3
Plotas: 12.0
Perimetras: 14.0
Įveskite stačiakampio informaciją
Ilgis: 2.53
Plotis: 5.2
Plotas: 13.156
Perimetras: 15.46

temperatura.py

# Ši programa konvertuoja temperatūra iš Farenheitų į Celsijų
KONVERTAVIMO_KOEFICIENTAS = 5.0 / 9.0

far_temp = float(input("Temperatūra Farenheitais: "))
cels_temp = (far_temp - 32.0) * KONVERTAVIMO_KOEFICIENTAS
print("Temperatūra Celsijaus laipsniais:", cels_temp )

Pavyzdžio rezultatas:

Temperatūra Farenheitais: 32
Temperatūra Celsijaus laipsniais: 0.0
Temperatūra Farenheitais: -40
Temperatūra Celsijaus laipsniais: -40.0
Temperatūra Farenheitais: 212
Temperatūra Celsijaus laipsniais: 100.0
Temperatūra Farenheitais: 98.6
Temperatūra Celsijaus laipsniais: 37.0

Pratimai

1. Parašyk programą, kuri priima 2 tekstines reikšmes ir 2 skaičius iš vartotojo įvesties, sujungia tekstus be tarpų ir atvaizduoja gautą rezultatą, o tada sudaugina du skaičius ir atvaizduoja naujoje eilutėje.

Sprendimas  
  
tekstas1 = input('Tekstas 1: ')
tekstas2 = input('Tekstas 2: ')
skaičius1 = float(input('Skaičius 1: '))
skaičius2 = float(input('Skaičius 2: '))
print(tekstas1 + tekstas2)
print(skaičius1 * skaičius2)


2. Parašyk programą, kuri paprašytų įvesti savo vardą ir amžių, o ji atspausdintų tekstą “Labas, aš {vardas}. Man {metai} metų.”. Kur {vardas} ir {metai} yra įvesti duomenys.

Sprendimas  
 
vardas = input("Įvesk savo vardą: ")
metai = input("Įvesk savo amžių: ")
print("Labas, aš ", vardas, ". Man ", metai, " metų.")


3. Parašyk programą, kuriai įvestum sekundžių skaičių, o ji išvestų, kiek tai yra minučių.

Sprendimas  
 
sekundės = int(input("Įvesk sekundžių skaičių: "))
minutės = sekundės / 60
print(sekundės, "s = ", minutės, "min")