<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="lt">
	<id>https://wiki.pitonas.lt/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Audrius</id>
	<title>Pitonas - Naudotojo indėlis [lt]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pitonas.lt/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Audrius"/>
	<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/Specialus:Ind%C4%97lis/Audrius"/>
	<updated>2026-10-07T01:26:03Z</updated>
	<subtitle>Naudotojo indėlis</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Problem%C5%B3_sprendimo_automatizavimas&amp;diff=598</id>
		<title>Problemų sprendimo automatizavimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Problem%C5%B3_sprendimo_automatizavimas&amp;diff=598"/>
		<updated>2025-01-30T08:59:09Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Problemų sprendimo automatizavimas ===&lt;br /&gt;
Žmonės nuo senų laikų susiduria su įvairiais sudėtingais uždaviniais. Iki atsirandant kompiuteriams, uždaviniams, kurių sprendimui gauti reikėdavo atlikti daug skaičiavimo operacijų XIX ir XX a. pirmoje pusėje būdavo surenkamos visos komandos skaičiuotojų, kurie turėdavo atlikti reikiamus skaičiavimus. Tokiu būdu būdavo atliekami sudėtingi skaičiavimai astronomijoje, apskaičiuojamos balistinių raketų trajektorijos, atliekami skaičiavimai orų prognozėms. Šis darbas būdavo ilgas ir gan nuobodus. Šiais laikais šias problemas galima automatizuoti panaudojant kompiuterius.&lt;br /&gt;
&lt;br /&gt;
=== Automatizavimo pavyzdžiai ===&lt;br /&gt;
==== Aritmetinės operacijos ====&lt;br /&gt;
Turbūt vienas iš paprasčiausių automatizavimo pavyzdžių būtų - aritmetinių skaičiavimų automatizavimas. Parašykime paprastą programą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Įvesk pirmą skaičių&amp;quot;)&lt;br /&gt;
skaičius1 = int(input())&lt;br /&gt;
print(&amp;quot;Įvesk antrą skaičių&amp;quot;)&lt;br /&gt;
skaičius2 = int(input())&lt;br /&gt;
sandauga = skaičius1 * skaičius2&lt;br /&gt;
print(&amp;quot;Skaičių sandauga yra:&amp;quot;, sandauga)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tokia paprasta automatizacija leidžia greitai sudauginti du didelius skaičius, išvengiant žmogaus klaidų.&lt;br /&gt;
&lt;br /&gt;
==== Didelio kiekio duomenų apdorojimas ====&lt;br /&gt;
Vienas iš dažniausių automatizavimo pritaikymų - didelio kiekio duomenų apdorojimas. Kompiuteriu galima greitai apdoroti didelį kiekį duomenų, kuriuos apdoroti žmogui užtruktų daug laiko. Įsivaizduokime kad turime failą, kur surašytos kiekvienos metų dienos vidutinė temperatūra Farenheito skalėje. Mūsų tikslas suskaičiuoti vidutinę metų temperatūrą Celsijaus skalėje. Be kompiuterio tektų ilgai ir nuobodžiai atlikti daug veiksmų. Nesunku kažkur ir klaidą padaryti. Tuo tarpu galime viską automatizuoti parašius tokį kodą:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def paversk_farenheitus_į_celsijus(temperatūra_farenheitais):&lt;br /&gt;
    temperatūra_celsijais = (temperatūra_farenheitais - 32) * 5 / 9&lt;br /&gt;
    return temperatūra_celsijais&lt;br /&gt;
&lt;br /&gt;
def skaičiuok_vidutinę_temperatūrą(duomenų_failo_pavadinimas):&lt;br /&gt;
    viso_celsijų = 0&lt;br /&gt;
    dienų_skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    with open(duomenų_failo_pavadinimas, &#039;r&#039;) as failas:&lt;br /&gt;
        for eilutė in failas:&lt;br /&gt;
            farenheitai = int(eilutė)&lt;br /&gt;
            celsijai = paversk_farenheitus_į_celsijus(farenheitai)&lt;br /&gt;
            viso_celsijų += celsijai&lt;br /&gt;
            dienų_skaičius += 1&lt;br /&gt;
&lt;br /&gt;
    vidutinė_temperatūra = viso_celsijų / dienų_skaičius&lt;br /&gt;
    return vidutinė_temperatūra&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    duomenų_failas = &amp;quot;temperatūros.txt&amp;quot;&lt;br /&gt;
    vidutinė_temperatūra = skaičiuok_vidutinę_temperatūrą(duomenų_failas)&lt;br /&gt;
    print(f&amp;quot;Vidutinė temperatūra yra: {vidutinė_temperatūra}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Itin sudėtingų problemų automatizavimas ====&lt;br /&gt;
Egzistuoja daug itin sudėtingų problemų, kurių automatizavimui reikalingi superkompiuteriai. Štai keletas pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;Orų prognozė ir klimato modeliavimas&#039;&#039;. Orų prognozės modeliai naudoja didelius duomenų kiekius, gaunamus iš satelitų, radarų ir kitų šaltinių. Superkompiuteris gali apdoroti šiuos duomenis realiu laiku. Tam naudojami sudėtingi algoritmai simuliuojantys atmosferos dinamiką, vandenynų sroves ir kitus atmosferos reiškinius. Tai leidžia gauti greitesnes ir tikslesnes orų prognozes, bei pasiruošti galimoms stichinėms nelaimėms.&lt;br /&gt;
# &#039;&#039;Vaistų kūrimas&#039;&#039;. Superkompiuteris atlieka automatizuotas simuliacijas ir virtualius eksperimentus su modeliuojamais vaistais. Analizuojamos molekulinės struktūros ir jų tarpusavio sąveika. Taip nustatomos potencialios naujos vaistinės medžiagos ir įvertinamas jų naudingumas.&lt;br /&gt;
# &#039;&#039;Transporto ir logistikos optimizacija&#039;&#039;. Superkompiuteriu optimizuojami transporto ir logistikos tinklai. Aviacijoje tai leidžia optimizuoti skrydžių maršrutus ir taip taupyti degalus, bei trumpinti kelionės laiką. Krovinių pervežime tai padeda optimizuoti maršrutus, efektyviai paskirstyti krovinius ir minimizuoti kaštus.&lt;br /&gt;
&lt;br /&gt;
==== Uždaviniai, kuriuos sudėtinga automatizuoti ====&lt;br /&gt;
Ne visų problemų sprendimus įmanoma lengvai automatizuoti. Štai du pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
#&#039;&#039;Matematinių teoremų įrodymas.&#039;&#039; Įrodyti teoremai gali reikėti patikrinti be galo daug įvairių galimybių ir atvejų. Dažnai to neįmanoma padaryti automatizacijos būdu.&lt;br /&gt;
# &#039;&#039;Sveikųjų skaičių faktorizavimas.&#039;&#039; Faktorizavimo tikslas rasti duoto skaičiaus pirminius daugiklius. Pirminių skaičių faktorizavimu yra paremtos šiuolaikinės kriptografinės sistemos, pavyzdžiui viešojo rakto kriptosistema [https://lt.wikipedia.org/wiki/RSA RSA]. Nors egzistuoja skaičių faktorizavimo algoritmai, tačiau faktorizuoti itin didelius skaičius, naudojamus kriptografijoje net ir galingais kompiuteriais užtrunka labai ilgai. Pavyzdžiui RSA dažnai galima sutikti raktus, kurie yra 2048 bitų ilgio sveikasis skaičius. Faktorizuoti tokį skaičių net ir galingu superkompiuteriu, gali užtrukti tūkstančius metų.&lt;br /&gt;
&lt;br /&gt;
=== Skaičiavimo laikas ===&lt;br /&gt;
Viena svarbiausių metrikų programavime yra programos vykdymo laikas. Vykdymo laiką tiesiogiai įtakoja naudojamų skaičiavimų sudėtingumas, duomenų kiekis, bei naudojamo kompiuterio galia.&lt;br /&gt;
&lt;br /&gt;
==== Skaičiavimo laiko nustatymas ====&lt;br /&gt;
Nori sužinoti kiek ilgai užtruko įvykdyti tavo programą? Pitone tą gali padaryti keletu būdų. Pateikiu vieną iš jų:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Importuojame paketą, leidžiantį dirbti su laiku&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Pasiimimame algortimo vykdymo pradžios laiką&lt;br /&gt;
pradžios_laikas = time.time()&lt;br /&gt;
&lt;br /&gt;
# Čia įrašome kodą, kurio vykdymo trukmę norime matuoti&lt;br /&gt;
&lt;br /&gt;
# Pasiimame vykdymo pabaigos laiką&lt;br /&gt;
pabaigos_laikas = time.time()&lt;br /&gt;
&lt;br /&gt;
# Paskaičiuojame vykdymo pradžios ir pabaigos laikus. Tai ir bus mūsų vykdymo laikas &lt;br /&gt;
vykdymo_laikas = pabaigos_laikas - pradžios_laikas&lt;br /&gt;
print(f&amp;quot;Vykdymo laikas sekundėmis: {vykdymo_laikas:.6f}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pasirinkto algoritmo įtaka skaičiavimo laikui ====&lt;br /&gt;
Dažnai tą patį uždavinį galima spręsti ne vienu skirtingu būdu. Sakykime mums reikia suskaičiuoti visų skaičių nuo 1 iki N sumą. Tą padarysime dviem skirtingais būdais ir pamatuosime vykdymo laikus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Importuojame paketą, leidžiantį dirbti su laiku&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
def suma(N):&lt;br /&gt;
    rezultatas = 0&lt;br /&gt;
    # Skaičiuojame rezultatą tiesiogiai sudėdami visus skaičius&lt;br /&gt;
    for i in range(1, N + 1):&lt;br /&gt;
        rezultatas += i&lt;br /&gt;
    return rezultatas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print (&amp;quot;Įvesk N&amp;quot;)&lt;br /&gt;
N = int(input())&lt;br /&gt;
&lt;br /&gt;
# Pasiimame algoritmo vykdymo pradžios laiką&lt;br /&gt;
pradžios_laikas = time.time()&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Suma:&amp;quot;, suma(N))&lt;br /&gt;
&lt;br /&gt;
# Pasiimame vykdymo pabaigos laiką&lt;br /&gt;
pabaigos_laikas = time.time()&lt;br /&gt;
&lt;br /&gt;
# Paskaičiuojame vykdymo pradžios ir pabaigos laikus. Tai ir bus mūsų vykdymo laikas &lt;br /&gt;
vykdymo_laikas = pabaigos_laikas - pradžios_laikas&lt;br /&gt;
print(f&amp;quot;Vykdymo laikas sekundėmis: {vykdymo_laikas:.6f}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Įvykdžiau šį kodą savo kompiuteryje, su N=100000000 (100 milijonų), vykdymo trukmė buvo 11,6 sekundės&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Importuojame paketą, leidžiantį dirbti su laiku&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
def suma(N):&lt;br /&gt;
    # Pasinaudojame matematine formule&lt;br /&gt;
    return N * (N + 1) // 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print (&amp;quot;Įvesk N&amp;quot;)&lt;br /&gt;
N = int(input())&lt;br /&gt;
&lt;br /&gt;
# Pasiimame algoritmo vykdymo pradžios laiką&lt;br /&gt;
pradžios_laikas = time.time()&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Suma:&amp;quot;, suma(N))&lt;br /&gt;
&lt;br /&gt;
# Pasiimame vykdymo pabaigos laiką&lt;br /&gt;
pabaigos_laikas = time.time()&lt;br /&gt;
&lt;br /&gt;
# Paskaičiuojame vykdymo pradžios ir pabaigos laikus. Tai ir bus mūsų vykdymo laikas &lt;br /&gt;
vykdymo_laikas = pabaigos_laikas - pradžios_laikas&lt;br /&gt;
print(f&amp;quot;Vykdymo laikas sekundėmis: {vykdymo_laikas:.6f}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabar su N=100000000, vykdymo laikas tebuvo 0,001132 sekundės. Gali išbandyti abu kodo atvejus. Pamatysi, jog jų atsakymai bus vienodi, o vykdymo laikas skirsis daug kartų. Nors vykdymo greitis priklausys nuo konkretaus kompiuterio ir gali gauti kitokią trukmę, nei gavau aš, bet antrasis algoritmas visada bus greitesnis, nepriklausomai nuo naudojamo kompiuterio.&lt;br /&gt;
&lt;br /&gt;
=== Atmintis ===&lt;br /&gt;
Tam, kad galėtų įvykdyti tavo parašytą programą, kompiuteris turės naudoti operacinę atmintį laikyti vykdomam kodui, bei kintamiesiems.&lt;br /&gt;
Pitonas turi automatinę atminties valdymo sistemą. Ši sistema pasirūpina, kad būtų išskirta reikiama atmintis, programai vykdyti ir kad ta atmintis būtų atlaisvinta, kai programai jos nebereikia. Kai sukuriame naują kintamąjį ar objektą, pitonas išskirs reikiamą atminties kiekį reikšmei saugoti. Kai kintamasis taps nebereikalingas ta atmintis bus atlaisvinta. Tai padeda programuotojui susikoncentruoti į efektyvaus algoritmo kūrimą ir nesukti galvos dėl atminties atlaisvinimo.&lt;br /&gt;
&lt;br /&gt;
==== Kiek atminties užima vienas kintamasis? ====&lt;br /&gt;
Patikrinti kiek atminties užima kintamasis, galima naudojant &amp;lt;code&amp;gt;sys.getsizeof&amp;lt;/code&amp;gt;. Štai kodo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#Importuojame paketą, leidžiantį dirbti su atmintimi&lt;br /&gt;
import sys&lt;br /&gt;
skaičius = 10&lt;br /&gt;
print(&amp;quot;Kintamojo užimama atmintis baitais:&amp;quot;, sys.getsizeof(skaičius))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paleidęs kodą pamatysi, jog šis kintamasis užima 28 baitus. Taigi, sveikiesiems skaičiams saugoti pitonui reikės 28 baitų, bet labai dideliems skaičiams saugoti 28 baitų gali ir nepakakti. Pavyzdžiui: skaičiui 1234567890 saugoti pitonas jau naudos 32 baitus. Kitokio tipo kintamiesiems naudojamos atminties kiekis bus kitoks. Štai realiajam skaičiui saugoti reikės 24 baitų, o tekstui reikiamos atminties kiekis priklausys nuo teksto ilgio.&lt;br /&gt;
&lt;br /&gt;
Dabartinių kompiuterių atmintis pakankamai didelė, tad sprendžiant šioje knygoje esančius uždavinius, greičiausiai neteks susidurti su atminties trūkumu. Tačiau sprendžiant dideles ir sudėtingas problemas atminties gali imti ir pristigti. Tad rašant programas svarbu pagalvoti kaip efektyviai naudoti atmintį.&lt;br /&gt;
&lt;br /&gt;
==== Pasirinkto algoritmo įtaka naudojamos atminties kiekiui ====&lt;br /&gt;
Ankstesniame pavyzdyje jau matei, kad du skirtingi algoritmai gali išspręsti tą patį uždavinį, o jų veikimo greitis gali smarkiai skirtis. Taip pat ir su atmintimi. Gali būti skirtingų algoritmų, kuriems vykdyti reikės skirtingų atminties kiekių. Paimkime paprastą programą, kuri sudeda keturis skaičius 2 skirtingais būdais.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def suma1 (sk1, sk2, sk3, sk4):&lt;br /&gt;
    suma = sk1 + sk2 + sk3 + sk4&lt;br /&gt;
    return suma&lt;br /&gt;
&lt;br /&gt;
def suma2 (sk1, sk2, sk3, sk4):&lt;br /&gt;
    tarpinė_suma1 = sk1&lt;br /&gt;
    tarpinė_suma2 = tarpinė_suma1 + sk2&lt;br /&gt;
    tarpinė_suma3 = tarpinė_suma2 + sk3&lt;br /&gt;
    suma = tarpinė_suma3 + sk4&lt;br /&gt;
    return suma&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abi funkcijos gražins tą patį rezultatą. Tačiau &amp;lt;code&amp;gt;suma1&amp;lt;/code&amp;gt; naudoja tik 1 kintamąjį, o &amp;lt;code&amp;gt;suma2&amp;lt;/code&amp;gt; naudoja net 4, tad ir atminties reikės net 4 kartus daugiau.&lt;br /&gt;
&lt;br /&gt;
==== Atmintis, greitis ir kodo aiškumas ====&lt;br /&gt;
Kiekvienas programuotojas turbūt norėtų, kad jo parašytas kodas veiktų kiek galima greičiau, naudotų kiek galima mažiau atminties, būtų lengvai skaitomas ir keičiamas. Bet sprendžiant realius uždavinius to pasiekti gali būti neįmanoma. Gali tekti rinktis ar pasirinkti greitesnį algoritmą, kuris naudoja daugiau atminties ar tą kuris lėtesnis, bet taupoma atmintis. Bet gali būti ir taip kad itin greitas ar mažai atminties naudojantis algoritmas bus labai sudėtingas ir sunkiai suprantamas, o norint padaryti pakeitimus reikės labai daug programuotojo pastangų. Tuomet prioritetas gali būti teikimas ir kodo aiškumui. Tai kam skirti prioritetą: greičiui, atminčiai ar aiškumui? Tai priklauso nuo konkretaus uždavinio ir reikalavimų. Mokantis pitono rekomenduoju pirmiausia rašyti tvarkingą ir aiškų kodą. Bet visada pagalvok, ar gali kodą parašyt optimalesnį atminties ar greičio atžvilgiu.&lt;br /&gt;
&lt;br /&gt;
=== Problemų formuluotės ===&lt;br /&gt;
==== Neaiškios formuluotės ====&lt;br /&gt;
Ar galėtum teisingai išspręsti tokius uždavinius su pitonu?:&lt;br /&gt;
&lt;br /&gt;
 1. Įvedus skaičių, programa turi atspausdinti &amp;quot;Didelis&amp;quot;, jei skaičius didelis, arba &amp;quot;Mažas&amp;quot; - jei skaičius mažas.&lt;br /&gt;
 2. Programa turi mokėti suskaičiuoti užrašytą sąlygą. Pavyzdžiui užrašius &amp;quot;2+3&amp;quot; turi būti atspausdinta 5.&lt;br /&gt;
&lt;br /&gt;
Pirmu atveju gali parašyti tokį kodą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print (&amp;quot;Įvesk skaičių?&amp;quot;)&lt;br /&gt;
skaičius = int(input())&lt;br /&gt;
if skaičius &amp;gt; 10:&lt;br /&gt;
   print(&amp;quot;Didelis&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
   print (&amp;quot;Mažas&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ar žmogus pateikęs užduotį būtų patenkintas tokiu sprendimu? Sunku pasakyti, nes mes nežinome kas jo manymu yra didelis skaičius. Kaip turėtų būti suformuluota tokio uždavinio sąlygą, kad tokių neaiškumų nebeliktų? Ar tiktų toks formulavimas?:&lt;br /&gt;
&lt;br /&gt;
 Įvedus skaičių programa turi atspausdinti &amp;quot;Didelis&amp;quot;, jei skaičius didesnis už 100, arba &amp;quot;Mažas&amp;quot; jei skaičius mažesnis už 100.&lt;br /&gt;
&lt;br /&gt;
Nors uždavinio formuluotė jau aiškesnė, tačiau vis dar nėra pilnai aiški. Kas atsitiktų jei būtų įvestas skaičius 100? Užduoties formuluotė to nepaaiškina. Tad reikėtų ją dar patobulinti. Aiški sąlyga galėtų skambėti šitaip:&lt;br /&gt;
&lt;br /&gt;
 Įvedus skaičių programa turi atspausdinti &amp;quot;Didelis&amp;quot;, jei skaičius didesnis arba lygus 100, arba &amp;quot;Mažas&amp;quot; jei skaičius mažesnis už 100.&lt;br /&gt;
&lt;br /&gt;
Kaip spręstum antrąjį uždavinį? Galbūt parašytum programą kuri mokėtų sudėti daug skaičių? Bet ar to užtenka? Pavyzdyje nurodyta sudėtis, bet sąlygoje nėra parašyta, jog turi būti skaičiuojam &#039;&#039;&#039;tik&#039;&#039;&#039; sudėtis. Galbūt sąlygos autorius tikisi ir kitų veiksmų. Mes to nežinome, nes sąlyga nėra pakankamai aiški. Gerai suformuluota sąlyga galėtų skambėti šitaip:&lt;br /&gt;
&lt;br /&gt;
 Programa turi mokėti suskaičiuoti užrašytą sąlygą. Sąlygoje gali būti naudojamos sudėties, atimties, daugybos ir dalybos veiksmai, gali būti naudojami skliaustai. Pavyzdžiui užrašius &amp;quot;2+3&amp;quot; turi būti atspausdinta 5.&lt;br /&gt;
&lt;br /&gt;
==== Perteklinės formuluotės ====&lt;br /&gt;
Gera problemos formuluotė neturėtų būti perteklinė. Perteklinė formuluotė nepadeda rasti geresnio sprendimo, bet gali netgi trukdyti įsigilinti į problemą. Pavyzdžiui:&lt;br /&gt;
&lt;br /&gt;
 Parašyk programą, kuri skaičiuotų stačiakampio plotą. Programa turi leisti įvesti stačiakampio ilgį ir plotį, o išvesti jo plotą. Formulės darbui su stačiakampiais:&lt;br /&gt;
 Perimetras: 2 * (ilgis + plotis)&lt;br /&gt;
 Plotas: ilgis * plotis&lt;br /&gt;
&lt;br /&gt;
Nors šiame pavyzdyje prašoma suskaičiuoti plotą, bet taip pat duota ir perimetro formulė, kuri mums nereikalinga, šiai problemai išspręsti. Tai bereikalingai pailgina sąlygą ir gali sukelti papildomų klausimų kodėl ši formulė čia pateikta.&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=593</id>
		<title>Knyga</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=593"/>
		<updated>2025-01-23T09:27:37Z</updated>

		<summary type="html">&lt;p&gt;Audrius: /* Spausdinimas ir formatavimas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Vadovėlis}}&lt;br /&gt;
[[Category:Knyga]]&lt;br /&gt;
&lt;br /&gt;
Tai - standartinės Python programavimo kalbos vadovėlis, išverstas iš [https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3 Non programmer&#039;s Tutorial for Python 3] ir adaptuotas Lietuvos mokykloms.&lt;br /&gt;
&lt;br /&gt;
Šis vadovėlis yra atvirojo kodo, [https://www.gnu.org/licenses/gpl-3.0.html GPL v3] licencija.&lt;br /&gt;
&lt;br /&gt;
==Turinys==&lt;br /&gt;
&lt;br /&gt;
=== Python vadovėlis ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Autoriai|Autoriai]] ====&lt;br /&gt;
: Originalaus (angliško) vadovėlio autoriai ir vertėjai į lietuvių kalbą.&lt;br /&gt;
&lt;br /&gt;
==== [[/Įžanga|Įžanga]] ====&lt;br /&gt;
: Įžanginiai žodžiai&lt;br /&gt;
&lt;br /&gt;
==== [[/Įvadas|Įvadas]] ====&lt;br /&gt;
: Python&#039;o diegimas ir naudojimas&lt;br /&gt;
&lt;br /&gt;
=== Pagrindai ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Labas, Pasauli|Labas, Pasauli]] ====&lt;br /&gt;
: Spausdinimas ir aritmetika. Garsioji pirmoji programa &amp;amp;ndash; ekrano išvestis &amp;amp;ndash; skaičiai ir skaičiavimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Kas čia eina?|Kas čia eina?]] ====&lt;br /&gt;
: Kintamieji ir įvestis. Interaktyvi įvestis &amp;amp;ndash; tekstinė eilutė&lt;br /&gt;
&lt;br /&gt;
==== [[/Pasirinkimai|Pasirinkimai]] ====&lt;br /&gt;
: &amp;lt;tt&amp;gt;if, else&amp;lt;/tt&amp;gt; sakiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Loginiai reiškiniai|Loginiai reiškiniai]] ====&lt;br /&gt;
: Kompiuterinė logika &amp;amp;ndash; &amp;lt;tt&amp;gt;True&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;False&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;and&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;or&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;not&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Ciklai For|Ciklai For]] ====&lt;br /&gt;
: for ir range. Dar vienos rūšies ciklai&lt;br /&gt;
&lt;br /&gt;
==== [[/Suskaičiuoti iki 10|Suskaičiuoti iki 10]] ====&lt;br /&gt;
: Ciklai &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Įdėtiniai ciklai ir sąlygos|Įdėtiniai ciklai ir sąlygos]] ====&lt;br /&gt;
: Ciklas cikle, ifas ife&lt;br /&gt;
&lt;br /&gt;
==== [[/Funkcijų apibrėžimas|Funkcijų apibrėžimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Programų struktūrizavimas naudojant funkcijas&lt;br /&gt;
&lt;br /&gt;
==== [[/Sąrašai|Sąrašai]] ====&lt;br /&gt;
&lt;br /&gt;
: Kintamieji, kuriuose yra daugiau nei viena reikšmė&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Integruotosios funkcijos|Integruotosios funkcijos]] ====&lt;br /&gt;
: Pitono kalboje integruotos funkcijos - sum(), min(), max().&lt;br /&gt;
&lt;br /&gt;
=== Išplėstinė madžiaga ===&lt;br /&gt;
&lt;br /&gt;
;[[/Failų tvarkymas|Failų tvarkymas]]&lt;br /&gt;
: Skaitymas iš failų ir rašymas į failus&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Spausdinimas ir formatavimas|Spausdinimas ir formatavimas]] ====&lt;br /&gt;
: Tekstinės eilutės spausdinimas ir formatavimas&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: Algoritmai&lt;br /&gt;
&lt;br /&gt;
==== [[/Paieška ir Rikiavimas|Paieška ir Rikiavimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Paieška sąraše ir įvairūs rikiavimo būdai&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie sąrašus|Daugiau apie sąrašus]] ====&lt;br /&gt;
&lt;br /&gt;
: Sąrašų elementų ar dalių naudojimas&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie tekstines eilutes|Daugiau apie tekstines eilutes]] ====&lt;br /&gt;
&lt;br /&gt;
: Pažangesnės teksto manipuliacijos&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie funkcijas|Daugiau apie funkcijas]] ====&lt;br /&gt;
&lt;br /&gt;
: Parametrai, reikšmės, programos skaldymas&lt;br /&gt;
&lt;br /&gt;
==== [[/Žodynai|Žodynai]] ====&lt;br /&gt;
: Kintamieji, kuriuose yra raktų/reikšmių poros&lt;br /&gt;
&lt;br /&gt;
==== [[/Derinimas|Derinimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Išsiaiškinti, kas negerai&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Klasės|Klasės]] ====&lt;br /&gt;
: Klasės, objektai&lt;br /&gt;
&lt;br /&gt;
=== Programuotojas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Rekursinės funkcijos|Rekursinės funkcijos]] ====&lt;br /&gt;
:(Beveik) stulbinantis pavyzdys, kaip programuotojai gali mąstyt&lt;br /&gt;
&lt;br /&gt;
==== [[/Modulių naudojimas|Modulių naudojimas]] ====&lt;br /&gt;
:Standartinio funkcionalumo plėtiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Siekiant tobulumo|Siekiant tobulumo]] ====&lt;br /&gt;
:Kaip tvarkyti klaidas&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
;[[/Rekursija|Rekursija]]&lt;br /&gt;
: Rekursinės funkcijos&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==== [[/Įvadas į objektinį programavimą Python 3|Įvadas į objektinį programavimą Python 3]] ====&lt;br /&gt;
:OOP pagrindai (Objektinis programavimas, angl. &#039;&#039;Object-Oriented Programming&#039;&#039;)&lt;br /&gt;
:Perkelti apie klases į kitą temą&lt;br /&gt;
&lt;br /&gt;
==== [[/Importuotos bibliotekos ir vėžlys|Importuotos bibliotekos ir vėžlys]] ====&lt;br /&gt;
:Pagrindinės funkcijos iš įvairių bibliotekų.&lt;br /&gt;
&lt;br /&gt;
==== [[/Pažangios_funkcijos|Pažangios funkcijos]] ====&lt;br /&gt;
:Lambda, sorted, filter, map... Kas tai?&lt;br /&gt;
&lt;br /&gt;
=== Verta žinoti ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Duomenų tyryba ir informacija|Duomenų tyryba ir informacija]] ====&lt;br /&gt;
:Informacija apie dirbtinį intelektą, kriptografiją ir duomenis.&lt;br /&gt;
&lt;br /&gt;
=== Epilogas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Pabaiga|Pabaiga]] ====&lt;br /&gt;
: Ką toliau daryti&lt;br /&gt;
&lt;br /&gt;
==== [[/DUK|D.U.K.]] ====&lt;br /&gt;
: Dažnai užduodami klausimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Terminai|Terminai]] ====&lt;br /&gt;
: Terminų žodynas&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=592</id>
		<title>Knyga</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=592"/>
		<updated>2025-01-23T09:27:10Z</updated>

		<summary type="html">&lt;p&gt;Audrius: /* Nauja tema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Vadovėlis}}&lt;br /&gt;
[[Category:Knyga]]&lt;br /&gt;
&lt;br /&gt;
Tai - standartinės Python programavimo kalbos vadovėlis, išverstas iš [https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3 Non programmer&#039;s Tutorial for Python 3] ir adaptuotas Lietuvos mokykloms.&lt;br /&gt;
&lt;br /&gt;
Šis vadovėlis yra atvirojo kodo, [https://www.gnu.org/licenses/gpl-3.0.html GPL v3] licencija.&lt;br /&gt;
&lt;br /&gt;
==Turinys==&lt;br /&gt;
&lt;br /&gt;
=== Python vadovėlis ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Autoriai|Autoriai]] ====&lt;br /&gt;
: Originalaus (angliško) vadovėlio autoriai ir vertėjai į lietuvių kalbą.&lt;br /&gt;
&lt;br /&gt;
==== [[/Įžanga|Įžanga]] ====&lt;br /&gt;
: Įžanginiai žodžiai&lt;br /&gt;
&lt;br /&gt;
==== [[/Įvadas|Įvadas]] ====&lt;br /&gt;
: Python&#039;o diegimas ir naudojimas&lt;br /&gt;
&lt;br /&gt;
=== Pagrindai ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Labas, Pasauli|Labas, Pasauli]] ====&lt;br /&gt;
: Spausdinimas ir aritmetika. Garsioji pirmoji programa &amp;amp;ndash; ekrano išvestis &amp;amp;ndash; skaičiai ir skaičiavimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Kas čia eina?|Kas čia eina?]] ====&lt;br /&gt;
: Kintamieji ir įvestis. Interaktyvi įvestis &amp;amp;ndash; tekstinė eilutė&lt;br /&gt;
&lt;br /&gt;
==== [[/Pasirinkimai|Pasirinkimai]] ====&lt;br /&gt;
: &amp;lt;tt&amp;gt;if, else&amp;lt;/tt&amp;gt; sakiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Loginiai reiškiniai|Loginiai reiškiniai]] ====&lt;br /&gt;
: Kompiuterinė logika &amp;amp;ndash; &amp;lt;tt&amp;gt;True&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;False&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;and&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;or&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;not&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Ciklai For|Ciklai For]] ====&lt;br /&gt;
: for ir range. Dar vienos rūšies ciklai&lt;br /&gt;
&lt;br /&gt;
==== [[/Suskaičiuoti iki 10|Suskaičiuoti iki 10]] ====&lt;br /&gt;
: Ciklai &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Įdėtiniai ciklai ir sąlygos|Įdėtiniai ciklai ir sąlygos]] ====&lt;br /&gt;
: Ciklas cikle, ifas ife&lt;br /&gt;
&lt;br /&gt;
==== [[/Funkcijų apibrėžimas|Funkcijų apibrėžimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Programų struktūrizavimas naudojant funkcijas&lt;br /&gt;
&lt;br /&gt;
==== [[/Sąrašai|Sąrašai]] ====&lt;br /&gt;
&lt;br /&gt;
: Kintamieji, kuriuose yra daugiau nei viena reikšmė&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Integruotosios funkcijos|Integruotosios funkcijos]] ====&lt;br /&gt;
: Pitono kalboje integruotos funkcijos - sum(), min(), max().&lt;br /&gt;
&lt;br /&gt;
=== Išplėstinė madžiaga ===&lt;br /&gt;
&lt;br /&gt;
;[[/Failų tvarkymas|Failų tvarkymas]]&lt;br /&gt;
: Skaitymas iš failų ir rašymas į failus&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Spausdinimas ir formatavimas|Spausdinimas ir formatavimas]] ====&lt;br /&gt;
: Teksto spausdinimas ir formatavimas&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: Algoritmai&lt;br /&gt;
&lt;br /&gt;
==== [[/Paieška ir Rikiavimas|Paieška ir Rikiavimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Paieška sąraše ir įvairūs rikiavimo būdai&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie sąrašus|Daugiau apie sąrašus]] ====&lt;br /&gt;
&lt;br /&gt;
: Sąrašų elementų ar dalių naudojimas&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie tekstines eilutes|Daugiau apie tekstines eilutes]] ====&lt;br /&gt;
&lt;br /&gt;
: Pažangesnės teksto manipuliacijos&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie funkcijas|Daugiau apie funkcijas]] ====&lt;br /&gt;
&lt;br /&gt;
: Parametrai, reikšmės, programos skaldymas&lt;br /&gt;
&lt;br /&gt;
==== [[/Žodynai|Žodynai]] ====&lt;br /&gt;
: Kintamieji, kuriuose yra raktų/reikšmių poros&lt;br /&gt;
&lt;br /&gt;
==== [[/Derinimas|Derinimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Išsiaiškinti, kas negerai&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Klasės|Klasės]] ====&lt;br /&gt;
: Klasės, objektai&lt;br /&gt;
&lt;br /&gt;
=== Programuotojas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Rekursinės funkcijos|Rekursinės funkcijos]] ====&lt;br /&gt;
:(Beveik) stulbinantis pavyzdys, kaip programuotojai gali mąstyt&lt;br /&gt;
&lt;br /&gt;
==== [[/Modulių naudojimas|Modulių naudojimas]] ====&lt;br /&gt;
:Standartinio funkcionalumo plėtiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Siekiant tobulumo|Siekiant tobulumo]] ====&lt;br /&gt;
:Kaip tvarkyti klaidas&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
;[[/Rekursija|Rekursija]]&lt;br /&gt;
: Rekursinės funkcijos&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==== [[/Įvadas į objektinį programavimą Python 3|Įvadas į objektinį programavimą Python 3]] ====&lt;br /&gt;
:OOP pagrindai (Objektinis programavimas, angl. &#039;&#039;Object-Oriented Programming&#039;&#039;)&lt;br /&gt;
:Perkelti apie klases į kitą temą&lt;br /&gt;
&lt;br /&gt;
==== [[/Importuotos bibliotekos ir vėžlys|Importuotos bibliotekos ir vėžlys]] ====&lt;br /&gt;
:Pagrindinės funkcijos iš įvairių bibliotekų.&lt;br /&gt;
&lt;br /&gt;
==== [[/Pažangios_funkcijos|Pažangios funkcijos]] ====&lt;br /&gt;
:Lambda, sorted, filter, map... Kas tai?&lt;br /&gt;
&lt;br /&gt;
=== Verta žinoti ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Duomenų tyryba ir informacija|Duomenų tyryba ir informacija]] ====&lt;br /&gt;
:Informacija apie dirbtinį intelektą, kriptografiją ir duomenis.&lt;br /&gt;
&lt;br /&gt;
=== Epilogas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Pabaiga|Pabaiga]] ====&lt;br /&gt;
: Ką toliau daryti&lt;br /&gt;
&lt;br /&gt;
==== [[/DUK|D.U.K.]] ====&lt;br /&gt;
: Dažnai užduodami klausimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Terminai|Terminai]] ====&lt;br /&gt;
: Terminų žodynas&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=591</id>
		<title>Knyga/Spausdinimas ir formatavimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=591"/>
		<updated>2025-01-23T09:26:00Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Spausdinimas ir formatavimas ===&lt;br /&gt;
Standartinis tekstinės eilutės išvedimas į terminalą dažnai nėra pakankamas - įsivaizduokime situaciją: &lt;br /&gt;
&lt;br /&gt;
Benas nori, kad programa išspausdintų jam darbuotojų ir jų atliekamų pareigų sąrašą. Tekstas turėtų atrodyti maždaug taip: “Darbuotojas Jonas yra programuotojas”  &lt;br /&gt;
&lt;br /&gt;
Iš pirmo žvilgsnio, užduotis atrodo paprasta – reikia išspausdinti teksto eilutę: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(“Darbuotojas Jonas yra programuotojas”) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu Benas turi du darbuotojus, programos kodas atrodytų maždaug taip: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(“Darbuotojas Jonas yra programuotojas”) &lt;br /&gt;
print(“Darbuotojas Antanas yra buhalteris”) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kaip ir viskas gerai, bet ką daryti tuo atveju, jeigu Benas turi 100 darbuotojų? 100 kodo eilučių spausdinančių kiekvieno darbuotojo vardą ir pareigas, kurias reikia suvesti ranka? Programa nelogiška, nes tokiu atveju Benas gali tiesiog ant lapo ranka susirašyti darbuotojus ir nereik jokio pitono. Tai kaip išspręsti šią problemą? Pitonas turi atsakymą. &lt;br /&gt;
&lt;br /&gt;
Kaip ir dauguma programavimo kalbų, pitonas turi tekstinių eilučių formatavimą. Formatuotina tekstinė eilutė (angliškai - &amp;quot;String literal&amp;quot;), tai dinaminė tekstinė eilutė, kuri priima kintamuosius, o spausdinant tokią eilutę į terminalą, ji išveda kintamųjų reikšmes, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot; &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Mano vardas yra {vardas}&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę:&lt;br /&gt;
 Mano vardas yra Jonas &lt;br /&gt;
&lt;br /&gt;
Pitone yra keturi būdai, kaip galima formatuoti tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
# F-tekstinė eilutė (f-strings). &lt;br /&gt;
# str.format() metodas.&lt;br /&gt;
# Formatavimas naudojant % simbolį.&lt;br /&gt;
# Formatavimas naudojant šablonines tekstines eilutes (template strings)&lt;br /&gt;
&lt;br /&gt;
==== F-tekstinė eilutė ====&lt;br /&gt;
F-tekstinės eilutės pitone atsirado kartu su 3.6 versija. Tai yra vienas iš paprasčiausių ir lengviausiai skaitomų būdų formatuoti tekstines eilutes. F-tekstinės eilutės leidžia programuotojui tiesiogiai įtraukti išsireiškimus (angliškai - expressions) bei kintamuosius naudojant riestinius skliaustus (“{ }”). &lt;br /&gt;
&lt;br /&gt;
Pagrindiniai šio būdo privalumai: &lt;br /&gt;
&lt;br /&gt;
* Tekstinėje eilutėje galima rašyti išsireiškimus bei kintamuosius, naudojant vietaženklius (angliškai - placeholder). &lt;br /&gt;
&lt;br /&gt;
* Yra galimybė formatuoti skirtingus tipus - skaičius, datas bei tekstines eilutes, nustatant jų tikslumą ir lygiavimą. &lt;br /&gt;
&lt;br /&gt;
F-tekstinė eilutė žymima raide &#039;&#039;&#039;“f”&#039;&#039;&#039;, kuri yra rašoma prieš tekstinę eilutę indikuojančias kabutes – f&amp;quot;tekstinė eilutė&amp;quot;. Kintamųjų pavadinimai tokioje eilutėje yra įrašomi į riestinius skliaustus, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Mano vardas yra {vardas} ir man yra {amžius} metai.&amp;quot;)  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę:&lt;br /&gt;
 Mano vardas yra Ieva ir man yra 25 metai.&lt;br /&gt;
Kaip matome, pitonas automatiškai į vietaženklių su kintamųjų pavadinimais vietas įrašė kintamųjų reikšmes. Paminėtina ir tai, kad F-tekstinėje eilutėje gali būti naudojami išsireiškimai, juos įrašant į riestinius skliaustus, pvz.: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Kitais metais man sueis {amžius + 1} metai.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę:&lt;br /&gt;
 Kitais metais man sueis 26 metai.&lt;br /&gt;
Šiuo atveju, pitonas paėmė kintamąjį &#039;&#039;&#039;amžius&#039;&#039;&#039; ir prie jo pridėjo vienetą (25 + 1 = 26). Galimybė naudoti tokius paprastus išsireiškimus palengvina programuotojo darbą, kadangi nereikia atlikti šių veiksmų iki išvedant tekstinę eilutę į terminalą ar saugant ją faile. &lt;br /&gt;
&lt;br /&gt;
F-tekstinėje eilutėje galima atlikti skaičių formatavimą. Tai yra ypač naudingas funkcionalumas, kadangi programuotojui nereikia atlikti papildomų veiksmų, kaip, kad saugoti naują kintamąjį su suformatuota reikšme ir pan. F-tekstinėje eilutėje tai užrašoma tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Skaičiaus PI vertė yra: {pi:.2f}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;“:.2f”&#039;&#039;&#039; išsireiškimas indikuoja, kiek skaičių po kablelio rodyti - &#039;&#039;&#039;“:”&#039;&#039;&#039; (dvitaškis) nurodo formatavimo  instrukcijos pradžią, &#039;&#039;&#039;“.2”&#039;&#039;&#039; rodo, kiek skaičių po kablelio bus rodoma, “f” indikuoja, kad tai yra dešimtainis skaičius. Tokia tekstinė eilutė į terminalą išves:&lt;br /&gt;
 Skaičiaus PI vertė yra 3.14” &lt;br /&gt;
Kaip matome, tekstinė elutė pati nukirpo paskutinius tris skaičius po kablelio ir paliko tik du. &lt;br /&gt;
 &lt;br /&gt;
Pitonas taip pat suteikia galimybę F-tekstinėje eilutėje lygiuoti tekstą. Kaip ir formatuojant skaičius, &#039;&#039;&#039;“:”&#039;&#039;&#039; (dvitaškis) nurodo formatavimo  instrukcijos pradžią, &#039;&#039;&#039;“&amp;lt;”&#039;&#039;&#039; nurodo, jog bus lygiuojama kairėje pusėje, &#039;&#039;&#039;“&amp;gt;”&#039;&#039;&#039; nurodo lygiavimą dešinėje, o &#039;&#039;&#039;“^”&#039;&#039;&#039; - centre. Lygiavimas šiuo atveju yra suprantamas tekstinės eilutės kontekste, o ne ekrano, puslapio ar pan. Išraiška &#039;&#039;&#039;“:&amp;lt;10”&#039;&#039;&#039;, reiškia, kad bus taikomas lygiavimas iš kairės, o viso kintamojo ilgis bus 10 simbolių. Taip pat, galima nurodyti, kuo bus užpildomi tušti tarpai, pvz., &#039;&#039;&#039;“:.&amp;lt;10”&#039;&#039;&#039;., &#039;&#039;&#039;“.”&#039;&#039;&#039; einantis po dvitaškio ir prieš “mažiau” ženklą, indikuoja, kad tušti tarpai bus užpildyti taškais. Atrodo gana painiai, bet pažiūrėkime, kaip tai atrodo, kai kodą aprodoja pitonas: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama kairėje: {vertė:&amp;lt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama dešinėje: {vertė:&amp;gt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama centre: {vertė:^10}&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas terminale išves tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
 Lygiuojama kairėje: 20         &lt;br /&gt;
 Lygiuojama dešinėje:         20 &lt;br /&gt;
 Lygiuojama centre:     20     &lt;br /&gt;
&lt;br /&gt;
Kaip matome, skaičius 20 yra atvaizduojamas skirtingose vietose, pirmoje eilutėje - kairėje, antroje - dešinėje, trečioje centre. Mes nematome, bet viskas, kas yra po teksto, yra sudėta į 10 simbolių, iš kurių matome tik du – 20 arba “2” ir “0”. Pažiūrėkime, kaip tas pats kodas atrodytų, jeigu tarpus užpildytume taškais: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama kairėje: {vertė:.&amp;lt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama dešinėje: {vertė:.&amp;gt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama centre: {vertė:.^10}&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šis kodas išves terminale tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
 Lygiuojama kairėje: 20........ &lt;br /&gt;
 Lygiuojama dešinėje: ........20 &lt;br /&gt;
 Lygiuojama centre: ....20.... &lt;br /&gt;
&lt;br /&gt;
Kaip matome, į formatavimo sakinį pridėjus &#039;&#039;&#039;“.”&#039;&#039;&#039;, visi tušti tarpai buvo užpidlyti taškais. Dabar labai aiškiai matome, kaip veikia vertės lygiavimas – prie tekstinės eilutės yra pridedama 10 simbolių, o &#039;&#039;&#039;vertė&#039;&#039;&#039; yra judinama tarp tų simbolių - į pradžią, į pabaigą arba per vidurį. &lt;br /&gt;
&lt;br /&gt;
F-tekstinės eilutės yra moderniausias ir paprasčiausias būdas formatuoti tekstą bei kintamuosius prieš juos išvedant į terminalą, tačiau šis būdas veikia tik su pitono 3.6 ir vėlesnėmis versijomis. Nepaisant to, yra rekomenduojama naudoti šį tekstinių eilučių formatavimo būdą, o ne kitus, senesnius būdus. &lt;br /&gt;
&lt;br /&gt;
==== Tekstinės eilutės formatavimas naudojant str.format() metodą ====&lt;br /&gt;
Šis metodas atsirado pitono 3 versijoje, jis naujoja riestinius skliaustus kaip vietaženklius, kuriuos išvesties metu užpildo kintamųjų reikšmėmis. Gilinantis pastebėsite, kad šis būdas yra panašus į f-tekstinę eilutę - naudojama ta pati sintaksė, tad nebus sudėtinga suprasti veikimą. &lt;br /&gt;
&lt;br /&gt;
Metodas format() yra kviečiamas tiesiai iš tekstinės eilutės, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;Sveikas, pasauli! &amp;quot;.format() &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Naudojant .format() metodą dinaminės tekstinės eilutės dalys yra nurodomos riestiniuose skliaustuose, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;Sveikas, {}!&amp;quot; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Norint vietoje skliaustų matyti reikšmę, ją paduodame kaip kintamąjį .format() metodui: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;Sveikas, {}!&amp;quot;.format(&amp;quot;pasauli&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Svarbu paminėti tai, jog tuo atveju, kai yra kelios dinaminės dalys, t. y. tekstinėje eilutėje yra keli riestiniai skliaustai, pvz., &#039;&#039;&#039;&amp;quot;{}, {}!&amp;quot;&#039;&#039;&#039;, tai .format() metodui reikšmės yra paduodamos viena paskui kitą, iš kairės į dešinę:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;{}, {}&amp;quot;.format(&amp;quot;Sveikas&amp;quot;, &amp;quot;pasauli&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
format() metodui mes galime paduoti ir kintamuosius, vadovaujantis jau prieš tai aptartu eiliškumu: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Mano vardas yra {} ir man yra {} metai.&amp;quot;.format(vardas, amžius)) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
 Mano vardas yra Ieva ir man yra 25 metai. &lt;br /&gt;
&lt;br /&gt;
Format() metodui paduoti parametrai gali būti pernaudojami tekstinėje eilutėje, pvz.: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
“{0} yra {1}. {0} yra {2}.&amp;quot;.format(&amp;quot;Dangus&amp;quot;, &amp;quot;mėlynas&amp;quot;, &amp;quot;beribis&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Išvestas tekstas terminale: &lt;br /&gt;
&lt;br /&gt;
 Dangus yra mėlynas. Dangus yra beribis. &lt;br /&gt;
&lt;br /&gt;
Kaip matome, riestiniuose skliaustuose galime nurodyti parametro poziciją format() metodui perduotų parametrų sąraše. Tokiu būdu yra pernaudojamos reikšmės ir sumažinamas kodo kiekis. &lt;br /&gt;
&lt;br /&gt;
Skaičių bei lygiavimo formatavimas, iš principo veikia identiškai, kaip ir f-tekstinėje-eilutėje, tiesiog formatavimo taisykles paduodame į riestinius skliaustus: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
//Skaičiaus su kableliu formatavimas &lt;br /&gt;
&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Skaičiaus PI vertė yra: {:.2f}&amp;quot;.format(pi)) &lt;br /&gt;
&lt;br /&gt;
//Lygiavimo formatavimas &lt;br /&gt;
&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama kairėje: {:.&amp;lt;10}&amp;quot;.format(vertė))  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama dešinėje: {:.&amp;gt;10}&amp;quot;.format(vertė))  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama centre: {:.^10}&amp;quot;.format(vertė)) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas išves terminale tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
 Skaičiaus PI vertė yra 3.14. &lt;br /&gt;
 Lygiuojama kairėje: 20........ &lt;br /&gt;
 Lygiuojama dešinėje: ........20 &lt;br /&gt;
 Lygiuojama centre: ....20.... &lt;br /&gt;
&lt;br /&gt;
Kaip matome, iš principo &#039;&#039;&#039;str.format()&#039;&#039;&#039; metodas veikia labai panašiai, kaip ir f-tekstinės eilutės, tik užrašymas yra sunkiau skaitomas ir ilgesnis.  &lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant % ženklą &lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant % ženklą yra seniausias būdas pitone formatuoti tekstines eilutes. Šiais laikais jo naudojimas yra nerekomenduotinas, kadangi pitonas 3-oje ir vėlesnėse versijose sudarė galimybę naudoti daug paprasčiau skaitomas ir turinčias daug daugiau galimybių f-tekstines eilutes ir metodą str.format(). Su šiuo būdu supažindiname, nes jo naudojimą vis dar galime sutikti senose programose, kurios naudoja ankstesnę pitono versiją (senesnę nei 3.0). &lt;br /&gt;
&lt;br /&gt;
Šis būdas, kaip ir ankstesni, yra paremtas vietaženkliais, tačiau šiuo atveju, vietaženklis turi indikuoti, kokio tipo vertė bus įdėta į jo vietą, t. y. turi nurodyti duomenų tipą: &lt;br /&gt;
&lt;br /&gt;
# “%s” - s indikuoja, kad bus naudojamas tekstinės eilutės tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
# “%d” - d indikuoja, kad bus naudojamas skaičiaus tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
# “%f” - f indikuoja, kad bus naudojamas dešimtainio skaičiaus tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
Kode šie vietaženkliai panaudojami tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Mano vardas yra %s ir man yra %d metai.&amp;quot; % (&amp;quot;Ieva&amp;quot;, 25)) &lt;br /&gt;
&lt;br /&gt;
//Skaičiaus su kableliu formatavimas &lt;br /&gt;
&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Skaičiaus PI vertė yra: %.2f&amp;quot; % pi) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pats kodas yra žymiai sunkiau skaitomas, kintamųjų padavimas sudėtingesnis ir daug  sunkiau naudoti, jeigu reikia naudoti daugiau nei kelis parametrus. Paminėtina ir tai, kad šis būdas turi daug mažiau galimybių, pvz., neturi galimybės formatuoti lygiavimą ir pan. &lt;br /&gt;
 &lt;br /&gt;
==== Formatavimas naudojant šablonines tekstines eilutes (template strings) ====&lt;br /&gt;
Šabloninių tekstinių eilučių funkcionalumą suteikia string modelio Template klasė. Ši klasė suteikia saugią alternatyvą tekstinių eilučių formatavimui. Šis būdas yra naudingas tais atvejais, kai nėra pasitikima vartotojo įvestimi, kadangi padeda išvengti kodo įskiepio. Norint naudoti šį būdą, reikia susiimportuoti Template klasę iš string modelio: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from string import Template  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Norint naudoti template modelį, mes sukuriame template objektą, kurio konstruktoriuje nurodom tekstinės eilutės šabloną. Dinaminės tekstinės eilutės dalys yra indikuojamos &#039;&#039;&#039;“$”&#039;&#039;&#039; ženkliuku ir kintamojo pavadinimu. Norint dinaminio kintamojo vietoje nurodyti vertę, kviečiame objekto metodą &#039;&#039;&#039;substitute()&#039;&#039;&#039;, kurio parametruose nurodome dinaminio kintamojo pavadinimą ir priskiriam jam vertę: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas.&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(šablonas.substitute(vardas=&amp;quot;Ieva&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
 Mano vardas yra Ieva &lt;br /&gt;
&lt;br /&gt;
Šablono dinaminiems kintamiesiems gali būti priskirti kintamieji, ne tik tiesioginės reikšmės: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas ir man yra $amzius metai&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(šablonas.substitute(vardas=vardas, amzius=amžius))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
 Mano vardas yra Ieva ir man yra 25 metai. &lt;br /&gt;
&lt;br /&gt;
Paminėtina tai, kad substitute() metodas išmes klaidą, jeigu nepaduosime visų dinaminių parametrų verčių. Tam, kad išvengti šios klaidos, galime naudoti safe_substitute() metodą, kuris ignoruoja trūkstamas vertes ir slopina klaidos pranešimus: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas ir man yra $amzius metai &amp;quot;) &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(šablonas.safe_substitute(vardas=vardas))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
 Mano vardas yra Ieva ir man yra $amzius metai. &lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį, kad šabloninės eilutės kintamieji, negali būti su lietuviškomis raidėmis, pitono kompiliatorius nesupranta dinaminio kintamojo pavadinimo ir jį tiesiog paverčia tekstinės eilutės dalimi. &lt;br /&gt;
&lt;br /&gt;
Šabloninė tekstinė eilutė yra paprastas ir saugus būdas priimti ir išvesti vartotojo įvestį, bet jis nėra toks modernus, kaip f-tekstinės eilutės ar .format()metodas, ir negali atlikti sudėtingesnių formatavimo užduočių, pvz., lygiavimo. &lt;br /&gt;
&lt;br /&gt;
Taigi, kaip matome yra įvairų būdų, kuriuos galime pasitelkti tekstinės eilutės formatavimui. Prisiminkime temos pradžioje minėtą Beną ir jo problemą su darbuotojų ir jų pareigų išspausdinimu. Perskaitę šį skyrių matome, kad Benui nereikėtų šimtą kartų ranka rašyti tekstines eilutes, o pasitelkti tekstinės eilutės formatavimą. Beno darbuotojai sudėti į žodyną(angliškai - dictionary), tad juos išspausdinti terminale galime tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
darbuotojai = [  &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Jonas&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;programuotojas&amp;quot;},  &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Petras&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;buhalteris&amp;quot;},   &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Ieva&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;dizainerė&amp;quot;}  &lt;br /&gt;
&lt;br /&gt;
] &lt;br /&gt;
&lt;br /&gt;
for darbuotojas in darbuotojai:  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;{darbuotojas[&#039;vardas&#039;]} yra {darbuotojas[&#039;pareigos&#039;]}&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši programa terminale išspausdins visus žodyne esančius darbuotojus ir jų pareigas: &lt;br /&gt;
&lt;br /&gt;
 Jonas yra programuotojas &lt;br /&gt;
 Petras yra buhalteris&lt;br /&gt;
 Ieva yra dizainerė&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pasitelkdami f-tekstinę eilutę, Beno problemą mes išsprendėme dviem kodo eilutėmis - iteruojame per žodyną naudodami &#039;&#039;&#039;for&#039;&#039;&#039; ciklą ir išspausdinam žodyne saugomą informaciją apie darbuotojus. Formatuotinos tekstinės eilutės labai palengvina darbą su duomenų išvedimu ar įrašymu į failą, kadangi leidžia dinamiškai pakeisti tam tikras tekstinės eilutės vietas, nurodyti skaičiaus formatą ir atlikti panašius veiksmus tiesiogiai tekstinėje eilutėje. Tokia galimybė sumažina kodo kiekį ir daro kodą lengviau suprantamą, nes nereikia skaityti 20 eilučių kodo, aprašančio dešimtainio skaičiaus skaitmenų po kablelio apribojimą iki dviejų.&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=590</id>
		<title>Knyga/Spausdinimas ir formatavimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=590"/>
		<updated>2025-01-23T09:22:46Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Spausdinimas ir formatavimas ===&lt;br /&gt;
Standartinis tekstinės eilutės išvedimas į terminalą dažnai nėra pakankamas - įsivaizduokime situaciją: &lt;br /&gt;
&lt;br /&gt;
Benas nori, kad programa išspausdintų jam darbuotojų ir jų atliekamų pareigų sąrašą. Tekstas turėtų atrodyti maždaug taip: “Darbuotojas Jonas yra programuotojas”  &lt;br /&gt;
&lt;br /&gt;
Iš pirmo žvilgsnio, užduotis atrodo paprasta – reikia išspausdinti teksto eilutę: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(“Darbuotojas Jonas yra programuotojas”) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu Benas turi du darbuotojus, programos kodas atrodytų maždaug taip: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(“Darbuotojas Jonas yra programuotojas”) &lt;br /&gt;
print(“Darbuotojas Antanas yra buhalteris”) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kaip ir viskas gerai, bet ką daryti tuo atveju, jeigu Benas turi 100 darbuotojų? 100 kodo eilučių spausdinančių kiekvieno darbuotojo vardą ir pareigas, kurias reikia suvesti ranka? Programa nelogiška, nes tokiu atveju Benas gali tiesiog ant lapo ranka susirašyti darbuotojus ir nereik jokio pitono. Tai kaip išspręsti šią problemą? Pitonas turi atsakymą. &lt;br /&gt;
&lt;br /&gt;
Kaip ir dauguma programavimo kalbų, pitonas turi tekstinių eilučių formatavimą. Formatuotina tekstinė eilutė (angliškai - &amp;quot;String literal&amp;quot;), tai dinaminė tekstinė eilutė, kuri priima kintamuosius, o spausdinant tokią eilutę į terminalą, ji išveda kintamųjų reikšmes, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot; &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Mano vardas yra {vardas}&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę:&lt;br /&gt;
 Mano vardas yra Jonas &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pitone yra keturi būdai, kaip galima formatuoti tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
# F-tekstinė eilutė (f-strings). &lt;br /&gt;
&lt;br /&gt;
# str.format() metodas. &lt;br /&gt;
&lt;br /&gt;
# Formatavimas naudojant % simbolį. &lt;br /&gt;
&lt;br /&gt;
# Formatavimas naudojant šablonines tekstines eilutes (template strings) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F-tekstinė eilutė &lt;br /&gt;
&lt;br /&gt;
F-tekstinės eilutės pitone atsirado kartu su 3.6 versija. Tai yra vienas iš paprasčiausių ir lengviausiai skaitomų būdų formatuoti tekstines eilutes. F-tekstinės eilutės leidžia programuotojui tiesiogiai įtraukti išsireiškimus (angliškai - expressions) bei kintamuosius naudojant riestinius skliaustus (“{ }”). &lt;br /&gt;
&lt;br /&gt;
Pagrindiniai šio būdo privalumai: &lt;br /&gt;
&lt;br /&gt;
* Tekstinėje eilutėje galima rašyti išsireiškimus bei kintamuosius, naudojant vietaženklius (angliškai - placeholder). &lt;br /&gt;
&lt;br /&gt;
* Yra galimybė formatuoti skirtingus tipus - skaičius, datas bei tekstines eilutes, nustatant jų tikslumą ir lygiavimą. &lt;br /&gt;
&lt;br /&gt;
F-tekstinė eilutė žymima raide &#039;&#039;&#039;“f”&#039;&#039;&#039;, kuri yra rašoma prieš tekstinę eilutę indikuojančias kabutes – f&amp;quot;tekstinė eilutė&amp;quot;. Kintamųjų pavadinimai tokioje eilutėje yra įrašomi į riestinius skliaustus, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Mano vardas yra {vardas} ir man yra {amžius} metai.&amp;quot;)  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę:&lt;br /&gt;
 Mano vardas yra Ieva ir man yra 25 metai.&lt;br /&gt;
Kaip matome, pitonas automatiškai į vietaženklių su kintamųjų pavadinimais vietas įrašė kintamųjų reikšmes. Paminėtina ir tai, kad F-tekstinėje eilutėje gali būti naudojami išsireiškimai, juos įrašant į riestinius skliaustus, pvz.: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Kitais metais man sueis {amžius + 1} metai.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę:&lt;br /&gt;
 Kitais metais man sueis 26 metai.&lt;br /&gt;
Šiuo atveju, pitonas paėmė kintamąjį &#039;&#039;&#039;amžius&#039;&#039;&#039; ir prie jo pridėjo vienetą (25 + 1 = 26). Galimybė naudoti tokius paprastus išsireiškimus palengvina programuotojo darbą, kadangi nereikia atlikti šių veiksmų iki išvedant tekstinę eilutę į terminalą ar saugant ją faile. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F-tekstinėje eilutėje galima atlikti skaičių formatavimą. Tai yra ypač naudingas funkcionalumas, kadangi programuotojui nereikia atlikti papildomų veiksmų, kaip, kad saugoti naują kintamąjį su suformatuota reikšme ir pan. F-tekstinėje eilutėje tai užrašoma tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Skaičiaus PI vertė yra: {pi:.2f}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;“:.2f”&#039;&#039;&#039; išsireiškimas indikuoja, kiek skaičių po kablelio rodyti - &#039;&#039;&#039;“:”&#039;&#039;&#039; (dvitaškis) nurodo formatavimo  instrukcijos pradžią, &#039;&#039;&#039;“.2”&#039;&#039;&#039; rodo, kiek skaičių po kablelio bus rodoma, “f” indikuoja, kad tai yra dešimtainis skaičius. Tokia tekstinė eilutė į terminalą išves:&lt;br /&gt;
 Skaičiaus PI vertė yra 3.14” &lt;br /&gt;
Kaip matome, tekstinė elutė pati nukirpo paskutinius tris skaičius po kablelio ir paliko tik du. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pitonas taip pat suteikia galimybę F-tekstinėje eilutėje lygiuoti tekstą. Kaip ir formatuojant skaičius, &#039;&#039;&#039;“:”&#039;&#039;&#039; (dvitaškis) nurodo formatavimo  instrukcijos pradžią, &#039;&#039;&#039;“&amp;lt;”&#039;&#039;&#039; nurodo, jog bus lygiuojama kairėje pusėje, &#039;&#039;&#039;“&amp;gt;”&#039;&#039;&#039; nurodo lygiavimą dešinėje, o &#039;&#039;&#039;“^”&#039;&#039;&#039; - centre. Lygiavimas šiuo atveju yra suprantamas tekstinės eilutės kontekste, o ne ekrano, puslapio ar pan. Išraiška &#039;&#039;&#039;“:&amp;lt;10”&#039;&#039;&#039;, reiškia, kad bus taikomas lygiavimas iš kairės, o viso kintamojo ilgis bus 10 simbolių. Taip pat, galima nurodyti, kuo bus užpildomi tušti tarpai, pvz., &#039;&#039;&#039;“:.&amp;lt;10”&#039;&#039;&#039;., &#039;&#039;&#039;“.”&#039;&#039;&#039; einantis po dvitaškio ir prieš “mažiau” ženklą, indikuoja, kad tušti tarpai bus užpildyti taškais. Atrodo gana painiai, bet pažiūrėkime, kaip tai atrodo, kai kodą aprodoja pitonas: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama kairėje: {vertė:&amp;lt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama dešinėje: {vertė:&amp;gt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama centre: {vertė:^10}&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas terminale išves tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
 Lygiuojama kairėje: 20         &lt;br /&gt;
 Lygiuojama dešinėje:         20 &lt;br /&gt;
 Lygiuojama centre:     20     &lt;br /&gt;
&lt;br /&gt;
Kaip matome, skaičius 20 yra atvaizduojamas skirtingose vietose, pirmoje eilutėje - kairėje, antroje - dešinėje, trečioje centre. Mes nematome, bet viskas, kas yra po teksto, yra sudėta į 10 simbolių, iš kurių matome tik du – 20 arba “2” ir “0”. Pažiūrėkime, kaip tas pats kodas atrodytų, jeigu tarpus užpildytume taškais: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama kairėje: {vertė:.&amp;lt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama dešinėje: {vertė:.&amp;gt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama centre: {vertė:.^10}&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šis kodas išves terminale tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
 Lygiuojama kairėje: 20........ &lt;br /&gt;
 Lygiuojama dešinėje: ........20 &lt;br /&gt;
 Lygiuojama centre: ....20.... &lt;br /&gt;
&lt;br /&gt;
Kaip matome, į formatavimo sakinį pridėjus &#039;&#039;&#039;“.”&#039;&#039;&#039;, visi tušti tarpai buvo užpidlyti taškais. Dabar labai aiškiai matome, kaip veikia vertės lygiavimas – prie tekstinės eilutės yra pridedama 10 simbolių, o &#039;&#039;&#039;vertė&#039;&#039;&#039; yra judinama tarp tų simbolių - į pradžią, į pabaigą arba per vidurį. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F-tekstinės eilutės yra moderniausias ir paprasčiausias būdas formatuoti tekstą bei kintamuosius prieš juos išvedant į terminalą, tačiau šis būdas veikia tik su pitono 3.6 ir vėlesnėmis versijomis. Nepaisant to, yra rekomenduojama naudoti šį tekstinių eilučių formatavimo būdą, o ne kitus, senesnius būdus. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant str.format() metodą &lt;br /&gt;
&lt;br /&gt;
Šis metodas atsirado pitono 3 versijoje, jis naujoja riestinius skliaustus kaip vietaženklius, kuriuos išvesties metu užpildo kintamųjų reikšmėmis. Gilinantis pastebėsite, kad šis būdas yra panašus į f-tekstinę eilutę - naudojama ta pati sintaksė, tad nebus sudėtinga suprasti veikimą. &lt;br /&gt;
&lt;br /&gt;
Metodas format() yra kviečiamas tiesiai iš tekstinės eilutės, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;Sveikas, pasauli! &amp;quot;.format() &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Naudojant .format() metodą dinaminės tekstinės eilutės dalys yra nurodomos riestiniuose skliaustuose, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;Sveikas, {}!&amp;quot; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Norint vietoje skliaustų matyti reikšmę, ją paduodame kaip kintamąjį .format() metodui: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;Sveikas, {}!&amp;quot;.format(&amp;quot;pasauli&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Svarbu paminėti tai, jog tuo atveju, kai yra kelios dinaminės dalys, t. y. tekstinėje eilutėje yra keli riestiniai skliaustai, pvz., &#039;&#039;&#039;&amp;quot;{}, {}!&amp;quot;&#039;&#039;&#039;, tai .format() metodui reikšmės yra paduodamos viena paskui kitą, iš kairės į dešinę:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;{}, {}&amp;quot;.format(&amp;quot;Sveikas&amp;quot;, &amp;quot;pasauli&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
format() metodui mes galime paduoti ir kintamuosius, vadovaujantis jau prieš tai aptartu eiliškumu: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Mano vardas yra {} ir man yra {} metai.&amp;quot;.format(vardas, amžius)) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
 Mano vardas yra Ieva ir man yra 25 metai. &lt;br /&gt;
&lt;br /&gt;
Format() metodui paduoti parametrai gali būti pernaudojami tekstinėje eilutėje, pvz.: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
“{0} yra {1}. {0} yra {2}.&amp;quot;.format(&amp;quot;Dangus&amp;quot;, &amp;quot;mėlynas&amp;quot;, &amp;quot;beribis&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Išvestas tekstas terminale: &lt;br /&gt;
&lt;br /&gt;
 Dangus yra mėlynas. Dangus yra beribis. &lt;br /&gt;
&lt;br /&gt;
Kaip matome, riestiniuose skliaustuose galime nurodyti parametro poziciją format() metodui perduotų parametrų sąraše. Tokiu būdu yra pernaudojamos reikšmės ir sumažinamas kodo kiekis. &lt;br /&gt;
&lt;br /&gt;
Skaičių bei lygiavimo formatavimas, iš principo veikia identiškai, kaip ir f-tekstinėje-eilutėje, tiesiog formatavimo taisykles paduodame į riestinius skliaustus: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
//Skaičiaus su kableliu formatavimas &lt;br /&gt;
&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Skaičiaus PI vertė yra: {:.2f}&amp;quot;.format(pi)) &lt;br /&gt;
&lt;br /&gt;
//Lygiavimo formatavimas &lt;br /&gt;
&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama kairėje: {:.&amp;lt;10}&amp;quot;.format(vertė))  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama dešinėje: {:.&amp;gt;10}&amp;quot;.format(vertė))  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama centre: {:.^10}&amp;quot;.format(vertė)) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas išves terminale tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
 Skaičiaus PI vertė yra 3.14. &lt;br /&gt;
 Lygiuojama kairėje: 20........ &lt;br /&gt;
 Lygiuojama dešinėje: ........20 &lt;br /&gt;
 Lygiuojama centre: ....20.... &lt;br /&gt;
&lt;br /&gt;
Kaip matome, iš principo &#039;&#039;&#039;str.format()&#039;&#039;&#039; metodas veikia labai panašiai, kaip ir f-tekstinės eilutės, tik užrašymas yra sunkiau skaitomas ir ilgesnis.  &lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant % ženklą &lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant % ženklą yra seniausias būdas pitone formatuoti tekstines eilutes. Šiais laikais jo naudojimas yra nerekomenduotinas, kadangi pitonas 3-oje ir vėlesnėse versijose sudarė galimybę naudoti daug paprasčiau skaitomas ir turinčias daug daugiau galimybių f-tekstines eilutes ir metodą str.format(). Su šiuo būdu supažindiname, nes jo naudojimą vis dar galime sutikti senose programose, kurios naudoja ankstesnę pitono versiją (senesnę nei 3.0). &lt;br /&gt;
&lt;br /&gt;
Šis būdas, kaip ir ankstesni, yra paremtas vietaženkliais, tačiau šiuo atveju, vietaženklis turi indikuoti, kokio tipo vertė bus įdėta į jo vietą, t. y. turi nurodyti duomenų tipą: &lt;br /&gt;
&lt;br /&gt;
# “%s” - s indikuoja, kad bus naudojamas tekstinės eilutės tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
# “%d” - d indikuoja, kad bus naudojamas skaičiaus tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
# “%f” - f indikuoja, kad bus naudojamas dešimtainio skaičiaus tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
Kode šie vietaženkliai panaudojami tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Mano vardas yra %s ir man yra %d metai.&amp;quot; % (&amp;quot;Ieva&amp;quot;, 25)) &lt;br /&gt;
&lt;br /&gt;
//Skaičiaus su kableliu formatavimas &lt;br /&gt;
&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Skaičiaus PI vertė yra: %.2f&amp;quot; % pi) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pats kodas yra žymiai sunkiau skaitomas, kintamųjų padavimas sudėtingesnis ir daug  sunkiau naudoti, jeigu reikia naudoti daugiau nei kelis parametrus. Paminėtina ir tai, kad šis būdas turi daug mažiau galimybių, pvz., neturi galimybės formatuoti lygiavimą ir pan. &lt;br /&gt;
&lt;br /&gt;
Formatavimas naudojant šablonines tekstines eilutes (template strings) &lt;br /&gt;
&lt;br /&gt;
Šabloninių tekstinių eilučių funkcionalumą suteikia string modelio Template klasė. Ši klasė suteikia saugią alternatyvą tekstinių eilučių formatavimui. Šis būdas yra naudingas tais atvejais, kai nėra pasitikima vartotojo įvestimi, kadangi padeda išvengti kodo įskiepio. Norint naudoti šį būdą, reikia susiimportuoti Template klasę iš string modelio: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from string import Template  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Norint naudoti template modelį, mes sukuriame template objektą, kurio konstruktoriuje nurodom tekstinės eilutės šabloną. Dinaminės tekstinės eilutės dalys yra indikuojamos &#039;&#039;&#039;“$”&#039;&#039;&#039; ženkliuku ir kintamojo pavadinimu. Norint dinaminio kintamojo vietoje nurodyti vertę, kviečiame objekto metodą &#039;&#039;&#039;substitute()&#039;&#039;&#039;, kurio parametruose nurodome dinaminio kintamojo pavadinimą ir priskiriam jam vertę: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas.&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(šablonas.substitute(vardas=&amp;quot;Ieva&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
 Mano vardas yra Ieva &lt;br /&gt;
&lt;br /&gt;
Šablono dinaminiems kintamiesiems gali būti priskirti kintamieji, ne tik tiesioginės reikšmės: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas ir man yra $amzius metai&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(šablonas.substitute(vardas=vardas, amzius=amžius))&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
 Mano vardas yra Ieva ir man yra 25 metai. &lt;br /&gt;
&lt;br /&gt;
Paminėtina tai, kad substitute() metodas išmes klaidą, jeigu nepaduosime visų dinaminių parametrų verčių. Tam, kad išvengti šios klaidos, galime naudoti safe_substitute() metodą, kuris ignoruoja trūkstamas vertes ir slopina klaidos pranešimus: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas ir man yra $amzius metai &amp;quot;) &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(šablonas.safe_substitute(vardas=vardas))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
 Mano vardas yra Ieva ir man yra $amzius metai. &lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį, kad šabloninės eilutės kintamieji, negali būti su lietuviškomis raidėmis, pitono kompiliatorius nesupranta dinaminio kintamojo pavadinimo ir jį tiesiog paverčia tekstinės eilutės dalimi. &lt;br /&gt;
&lt;br /&gt;
Šabloninė tekstinė eilutė yra paprastas ir saugus būdas priimti ir išvesti vartotojo įvestį, bet jis nėra toks modernus, kaip f-tekstinės eilutės ar .format()metodas, ir negali atlikti sudėtingesnių formatavimo užduočių, pvz., lygiavimo. &lt;br /&gt;
&lt;br /&gt;
Taigi, kaip matome yra įvairų būdų, kuriuos galime pasitelkti tekstinės eilutės formatavimui. Prisiminkime temos pradžioje minėtą Beną ir jo problemą su darbuotojų ir jų pareigų išspausdinimu. Perskaitę šį skyrių matome, kad Benui nereikėtų šimtą kartų ranka rašyti tekstines eilutes, o pasitelkti tekstinės eilutės formatavimą. Beno darbuotojai sudėti į žodyną(angliškai - dictionary), tad juos išspausdinti terminale galime tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
darbuotojai = [  &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Jonas&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;programuotojas&amp;quot;},  &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Petras&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;buhalteris&amp;quot;},   &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Ieva&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;dizainerė&amp;quot;}  &lt;br /&gt;
&lt;br /&gt;
] &lt;br /&gt;
&lt;br /&gt;
for darbuotojas in darbuotojai:  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;{darbuotojas[&#039;vardas&#039;]} yra {darbuotojas[&#039;pareigos&#039;]}&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši programa terminale išspausdins visus žodyne esančius darbuotojus ir jų pareigas: &lt;br /&gt;
&lt;br /&gt;
 Jonas yra programuotojas &lt;br /&gt;
 Petras yra buhalteris&lt;br /&gt;
 Ieva yra dizainerė&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pasitelkdami f-tekstinę eilutę, Beno problemą mes išsprendėme dviem kodo eilutėmis - iteruojame per žodyną naudodami &#039;&#039;&#039;for&#039;&#039;&#039; ciklą ir išspausdinam žodyne saugomą informaciją apie darbuotojus. Formatuotinos tekstinės eilutės labai palengvina darbą su duomenų išvedimu ar įrašymu į failą, kadangi leidžia dinamiškai pakeisti tam tikras tekstinės eilutės vietas, nurodyti skaičiaus formatą ir atlikti panašius veiksmus tiesiogiai tekstinėje eilutėje. Tokia galimybė sumažina kodo kiekį ir daro kodą lengviau suprantamą, nes nereikia skaityti 20 eilučių kodo, aprašančio dešimtainio skaičiaus skaitmenų po kablelio apribojimą iki dviejų.&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=589</id>
		<title>Knyga/Spausdinimas ir formatavimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=589"/>
		<updated>2025-01-23T09:02:14Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Spausdinimas ir formatavimas ===&lt;br /&gt;
Standartinis tekstinės eilutės išvedimas į terminalą dažnai nėra pakankamas - įsivaizduokime situaciją: &lt;br /&gt;
&lt;br /&gt;
Benas nori, kad programa išspausdintų jam darbuotojų ir jų atliekamų pareigų sąrašą. Tekstas turėtų atrodyti maždaug taip: “Darbuotojas Jonas yra programuotojas”  &lt;br /&gt;
&lt;br /&gt;
Iš pirmo žvilgsnio, užduotis atrodo paprasta – reikia išspausdinti teksto eilutę: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(“Darbuotojas Jonas yra programuotojas”) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu Benas turi du darbuotojus, programos kodas atrodytų maždaug taip: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(“Darbuotojas Jonas yra programuotojas”) &lt;br /&gt;
print(“Darbuotojas Antanas yra buhalteris”) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kaip ir viskas gerai, bet ką daryti tuo atveju, jeigu Benas turi 100 darbuotojų? 100 kodo eilučių spausdinančių kiekvieno darbuotojo vardą ir pareigas, kurias reikia suvesti ranka? Programa nelogiška, nes tokiu atveju Benas gali tiesiog ant lapo ranka susirašyti darbuotojus ir nereik jokio pitono. Tai kaip išspręsti šią problemą? Pitonas turi atsakymą. &lt;br /&gt;
&lt;br /&gt;
Kaip ir dauguma programavimo kalbų, pitonas turi tekstinių eilučių formatavimą. Formatuotina tekstinė eilutė (angliškai - &amp;quot;String literal&amp;quot;), tai dinaminė tekstinė eilutė, kuri priima kintamuosius, o spausdinant tokią eilutę į terminalą, ji išveda kintamųjų reikšmes, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot; &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Mano vardas yra {vardas}&amp;quot;) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę:&lt;br /&gt;
 Mano vardas yra Jonas &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pitone yra keturi būdai, kaip galima formatuoti tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
# F-tekstinė eilutė (f-strings). &lt;br /&gt;
&lt;br /&gt;
# str.format() metodas. &lt;br /&gt;
&lt;br /&gt;
# Formatavimas naudojant % simbolį. &lt;br /&gt;
&lt;br /&gt;
# Formatavimas naudojant šablonines tekstines eilutes (template strings) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F-tekstinė eilutė &lt;br /&gt;
&lt;br /&gt;
F-tekstinės eilutės pitone atsirado kartu su 3.6 versija. Tai yra vienas iš paprasčiausių ir lengviausiai skaitomų būdų formatuoti tekstines eilutes. F-tekstinės eilutės leidžia programuotojui tiesiogiai įtraukti išsireiškimus (angliškai - expressions) bei kintamuosius naudojant riestinius skliaustus (“{ }”). &lt;br /&gt;
&lt;br /&gt;
Pagrindiniai šio būdo privalumai: &lt;br /&gt;
&lt;br /&gt;
* Tekstinėje eilutėje galima rašyti išsireiškimus bei kintamuosius, naudojant vietaženklius (angliškai - placeholder). &lt;br /&gt;
&lt;br /&gt;
* Yra galimybė formatuoti skirtingus tipus - skaičius, datas bei tekstines eilutes, nustatant jų tikslumą ir lygiavimą. &lt;br /&gt;
&lt;br /&gt;
F-tekstinė eilutė žymima raide &#039;&#039;&#039;“f”&#039;&#039;&#039;, kuri yra rašoma prieš tekstinę eilutę indikuojančias kabutes – f&amp;quot;tekstinė eilutė&amp;quot;. Kintamųjų pavadinimai tokioje eilutėje yra įrašomi į riestinius skliaustus, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Mano vardas yra {vardas} ir man yra {amžius} metai.&amp;quot;)  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę:&lt;br /&gt;
 Mano vardas yra Ieva ir man yra 25 metai.&lt;br /&gt;
Kaip matome, pitonas automatiškai į vietaženklių su kintamųjų pavadinimais vietas įrašė kintamųjų reikšmes. Paminėtina ir tai, kad F-tekstinėje eilutėje gali būti naudojami išsireiškimai, juos įrašant į riestinius skliaustus, pvz.: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Kitais metais man sueis {amžius + 1} metai.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę:&lt;br /&gt;
 Kitais metais man sueis 26 metai.&lt;br /&gt;
Šiuo atveju, pitonas paėmė kintamąjį &#039;&#039;&#039;amžius&#039;&#039;&#039; ir prie jo pridėjo vienetą (25 + 1 = 26). Galimybė naudoti tokius paprastus išsireiškimus palengvina programuotojo darbą, kadangi nereikia atlikti šių veiksmų iki išvedant tekstinę eilutę į terminalą ar saugant ją faile. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F-tekstinėje eilutėje galima atlikti skaičių formatavimą. Tai yra ypač naudingas funkcionalumas, kadangi programuotojui nereikia atlikti papildomų veiksmų, kaip, kad saugoti naują kintamąjį su suformatuota reikšme ir pan. F-tekstinėje eilutėje tai užrašoma tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Skaičiaus PI vertė yra: {pi:.2f}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;“:.2f”&#039;&#039;&#039; išsireiškimas indikuoja, kiek skaičių po kablelio rodyti - &#039;&#039;&#039;“:”&#039;&#039;&#039; (dvitaškis) nurodo formatavimo  instrukcijos pradžią, &#039;&#039;&#039;“.2”&#039;&#039;&#039; rodo, kiek skaičių po kablelio bus rodoma, “f” indikuoja, kad tai yra dešimtainis skaičius. Tokia tekstinė eilutė į terminalą išves:&lt;br /&gt;
 Skaičiaus PI vertė yra 3.14” &lt;br /&gt;
Kaip matome, tekstinė elutė pati nukirpo paskutinius tris skaičius po kablelio ir paliko tik du. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pitonas taip pat suteikia galimybę F-tekstinėje eilutėje lygiuoti tekstą. Kaip ir formatuojant skaičius, &#039;&#039;&#039;“:”&#039;&#039;&#039; (dvitaškis) nurodo formatavimo  instrukcijos pradžią, &#039;&#039;&#039;“&amp;lt;”&#039;&#039;&#039; nurodo, jog bus lygiuojama kairėje pusėje, &#039;&#039;&#039;“&amp;gt;”&#039;&#039;&#039; nurodo lygiavimą dešinėje, o &#039;&#039;&#039;“^”&#039;&#039;&#039; - centre. Lygiavimas šiuo atveju yra suprantamas tekstinės eilutės kontekste, o ne ekrano, puslapio ar pan. Išraiška &#039;&#039;&#039;“:&amp;lt;10”&#039;&#039;&#039;, reiškia, kad bus taikomas lygiavimas iš kairės, o viso kintamojo ilgis bus 10 simbolių. Taip pat, galima nurodyti, kuo bus užpildomi tušti tarpai, pvz., &#039;&#039;&#039;“:.&amp;lt;10”&#039;&#039;&#039;., &#039;&#039;&#039;“.”&#039;&#039;&#039; einantis po dvitaškio ir prieš “mažiau” ženklą, indikuoja, kad tušti tarpai bus užpildyti taškais. Atrodo gana painiai, bet pažiūrėkime, kaip tai atrodo, kai kodą aprodoja pitonas: &lt;br /&gt;
&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama kairėje: {vertė:&amp;lt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama dešinėje: {vertė:&amp;gt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama centre: {vertė:^10}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas terminale išves tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
Lygiuojama kairėje: 20         &lt;br /&gt;
&lt;br /&gt;
Lygiuojama dešinėje:         20 &lt;br /&gt;
&lt;br /&gt;
Lygiuojama centre:     20     &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Kaip matome, skaičius 20 yra atvaizduojamas skirtingose vietose, pirmoje eilutėje - kairėje, antroje - dešinėje, trečioje centre. Mes nematome, bet viskas, kas yra po teksto, yra sudėta į 10 simbolių, iš kurių matome tik du – 20 arba “2” ir “0”. Pažiūrėkime, kaip tas pats kodas atrodytų, jeigu tarpus užpildytume taškais: &lt;br /&gt;
&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama kairėje: {vertė:.&amp;lt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama dešinėje: {vertė:.&amp;gt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama centre: {vertė:.^10}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves terminale tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
Lygiuojama kairėje: 20........ &lt;br /&gt;
&lt;br /&gt;
Lygiuojama dešinėje: ........20 &lt;br /&gt;
&lt;br /&gt;
Lygiuojama centre: ....20.... &lt;br /&gt;
&lt;br /&gt;
Kaip matome, į formatavimo sakinį pridėjus &#039;&#039;&#039;“.”&#039;&#039;&#039;, visi tušti tarpai buvo užpidlyti taškais. Dabar labai aiškiai matome, kaip veikia vertės lygiavimas – prie tekstinės eilutės yra pridedama 10 simbolių, o &#039;&#039;&#039;vertė&#039;&#039;&#039; yra judinama tarp tų simbolių - į pradžią, į pabaigą arba per vidurį. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F-tekstinės eilutės yra moderniausias ir paprasčiausias būdas formatuoti tekstą bei kintamuosius prieš juos išvedant į terminalą, tačiau šis būdas veikia tik su pitono 3.6 ir vėlesnėmis versijomis. Nepaisant to, yra rekomenduojama naudoti šį tekstinių eilučių formatavimo būdą, o ne kitus, senesnius būdus. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant str.format() metodą &lt;br /&gt;
&lt;br /&gt;
Šis metodas atsirado pitono 3 versijoje, jis naujoja riestinius skliaustus kaip vietaženklius, kuriuos išvesties metu užpildo kintamųjų reikšmėmis. Gilinantis pastebėsite, kad šis būdas yra panašus į f-tekstinę eilutę - naudojama ta pati sintaksė, tad nebus sudėtinga suprasti veikimą. &lt;br /&gt;
&lt;br /&gt;
Metodas format() yra kviečiamas tiesiai iš tekstinės eilutės, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Sveikas, pasauli! &amp;quot;.format() &lt;br /&gt;
&lt;br /&gt;
Naudojant .format() metodą dinaminės tekstinės eilutės dalys yra nurodomos riestiniuose skliaustuose, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Sveikas, {}!&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Norint vietoje skliaustų matyti reikšmę, ją paduodame kaip kintamąjį .format() metodui: &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Sveikas, {}!&amp;quot;.format(&amp;quot;pasauli&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Svarbu paminėti tai, jog tuo atveju, kai yra kelios dinaminės dalys, t. y. tekstinėje eilutėje yra keli riestiniai skliaustai, pvz., &#039;&#039;&#039;&amp;quot;{}, {}!&amp;quot;&#039;&#039;&#039;, tai .format() metodui reikšmės yra paduodamos viena paskui kitą, iš kairės į dešinę:  &lt;br /&gt;
&lt;br /&gt;
&amp;quot;{}, {}&amp;quot;.format(&amp;quot;Sveikas&amp;quot;, &amp;quot;pasauli&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
format() metodui mes galime paduoti ir kintamuosius, vadovaujantis jau prieš tai aptartu eiliškumu: &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Mano vardas yra {} ir man yra {} metai.&amp;quot;.format(vardas, amžius)) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
Mano vardas yra Ieva ir man yra 25 metai. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format() metodui paduoti parametrai gali būti pernaudojami tekstinėje eilutėje, pvz.: &lt;br /&gt;
&lt;br /&gt;
“{0} yra {1}. {0} yra {2}.&amp;quot;.format(&amp;quot;Dangus&amp;quot;, &amp;quot;mėlynas&amp;quot;, &amp;quot;beribis&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Išvestas tekstas terminale: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dangus yra mėlynas. Dangus yra beribis. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, riestiniuose skliaustuose galime nurodyti parametro poziciją format() metodui perduotų parametrų sąraše. Tokiu būdu yra pernaudojamos reikšmės ir sumažinamas kodo kiekis. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Skaičių bei lygiavimo formatavimas, iš principo veikia identiškai, kaip ir f-tekstinėje-eilutėje, tiesiog formatavimo taisykles paduodame į riestinius skliaustus: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Skaičiaus su kableliu formatavimas &lt;br /&gt;
&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Skaičiaus PI vertė yra: {:.2f}&amp;quot;.format(pi)) &lt;br /&gt;
&lt;br /&gt;
//Lygiavimo formatavimas &lt;br /&gt;
&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama kairėje: {:.&amp;lt;10}&amp;quot;.format(vertė))  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama dešinėje: {:.&amp;gt;10}&amp;quot;.format(vertė))  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama centre: {:.^10}&amp;quot;.format(vertė)) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas išves terminale tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
Skaičiaus PI vertė yra 3.14. &lt;br /&gt;
&lt;br /&gt;
Lygiuojama kairėje: 20........ &lt;br /&gt;
&lt;br /&gt;
Lygiuojama dešinėje: ........20 &lt;br /&gt;
&lt;br /&gt;
Lygiuojama centre: ....20.... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, iš principo &#039;&#039;&#039;str.format()&#039;&#039;&#039; metodas veikia labai panašiai, kaip ir f-tekstinės eilutės, tik užrašymas yra sunkiau skaitomas ir ilgesnis.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant % ženklą &lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant % ženklą yra seniausias būdas pitone formatuoti tekstines eilutes. Šiais laikais jo naudojimas yra nerekomenduotinas, kadangi pitonas 3-oje ir vėlesnėse versijose sudarė galimybę naudoti daug paprasčiau skaitomas ir turinčias daug daugiau galimybių f-tekstines eilutes ir metodą str.format(). Su šiuo būdu supažindiname, nes jo naudojimą vis dar galime sutikti senose programose, kurios naudoja ankstesnę pitono versiją (senesnę nei 3.0). &lt;br /&gt;
&lt;br /&gt;
Šis būdas, kaip ir ankstesni, yra paremtas vietaženkliais, tačiau šiuo atveju, vietaženklis turi indikuoti, kokio tipo vertė bus įdėta į jo vietą, t. y. turi nurodyti duomenų tipą: &lt;br /&gt;
&lt;br /&gt;
# “%s” - s indikuoja, kad bus naudojamas tekstinės eilutės tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
# “%d” - d indikuoja, kad bus naudojamas skaičiaus tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
# “%f” - f indikuoja, kad bus naudojamas dešimtainio skaičiaus tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
Kode šie vietaženkliai panaudojami tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Mano vardas yra %s ir man yra %d metai.&amp;quot; % (&amp;quot;Ieva&amp;quot;, 25)) &lt;br /&gt;
&lt;br /&gt;
//Skaičiaus su kableliu formatavimas &lt;br /&gt;
&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Skaičiaus PI vertė yra: %.2f&amp;quot; % pi) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pats kodas yra žymiai sunkiau skaitomas, kintamųjų padavimas sudėtingesnis ir daug  sunkiau naudoti, jeigu reikia naudoti daugiau nei kelis parametrus. Paminėtina ir tai, kad šis būdas turi daug mažiau galimybių, pvz., neturi galimybės formatuoti lygiavimą ir pan. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Formatavimas naudojant šablonines tekstines eilutes (template strings) &lt;br /&gt;
&lt;br /&gt;
Šabloninių tekstinių eilučių funkcionalumą suteikia string modelio Template klasė. Ši klasė suteikia saugią alternatyvą tekstinių eilučių formatavimui. Šis būdas yra naudingas tais atvejais, kai nėra pasitikima vartotojo įvestimi, kadangi padeda išvengti kodo įskiepio. Norint naudoti šį būdą, reikia susiimportuoti Template klasę iš string modelio: &lt;br /&gt;
&lt;br /&gt;
from string import Template  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Norint naudoti template modelį, mes sukuriame template objektą, kurio konstruktoriuje nurodom tekstinės eilutės šabloną. Dinaminės tekstinės eilutės dalys yra indikuojamos &#039;&#039;&#039;“$”&#039;&#039;&#039; ženkliuku ir kintamojo pavadinimu. Norint dinaminio kintamojo vietoje nurodyti vertę, kviečiame objekto metodą &#039;&#039;&#039;substitute()&#039;&#039;&#039;, kurio parametruose nurodome dinaminio kintamojo pavadinimą ir priskiriam jam vertę: &lt;br /&gt;
&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas.&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(šablonas.substitute(vardas=&amp;quot;Ieva&amp;quot;))  &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
Mano vardas yra Ieva &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šablono dinaminiems kintamiesiems gali būti priskirti kintamieji, ne tik tiesioginės reikšmės: &lt;br /&gt;
&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas ir man yra $amzius metai&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(šablonas.substitute(vardas=vardas, amzius=amžius)) &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
Mano vardas yra Ieva ir man yra 25 metai. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Paminėtina tai, kad substitute() metodas išmes klaidą, jeigu nepaduosime visų dinaminių parametrų verčių. Tam, kad išvengti šios klaidos, galime naudoti safe_substitute() metodą, kuris ignoruoja trūkstamas vertes ir slopina klaidos pranešimus: &lt;br /&gt;
&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas ir man yra $amzius metai &amp;quot;) &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(šablonas.safe_substitute(vardas=vardas)) &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
Mano vardas yra Ieva ir man yra $amzius metai. &lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį, kad šabloninės eilutės kintamieji, negali būti su lietuviškomis raidėmis, pitono kompiliatorius nesupranta dinaminio kintamojo pavadinimo ir jį tiesiog paverčia tekstinės eilutės dalimi. &lt;br /&gt;
&lt;br /&gt;
Šabloninė tekstinė eilutė yra paprastas ir saugus būdas priimti ir išvesti vartotojo įvestį, bet jis nėra toks modernus, kaip f-tekstinės eilutės ar .format()metodas, ir negali atlikti sudėtingesnių formatavimo užduočių, pvz., lygiavimo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Taigi, kaip matome yra įvairų būdų, kuriuos galime pasitelkti tekstinės eilutės formatavimui. Prisiminkime temos pradžioje minėtą Beną ir jo problemą su darbuotojų ir jų pareigų išspausdinimu. Perskaitę šį skyrių matome, kad Benui nereikėtų šimtą kartų ranka rašyti tekstines eilutes, o pasitelkti tekstinės eilutės formatavimą. Beno darbuotojai sudėti į žodyną(angliškai - dictionary), tad juos išspausdinti terminale galime tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
darbuotojai = [  &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Jonas&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;programuotojas&amp;quot;},  &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Petras&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;buhalteris&amp;quot;},   &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Ieva&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;dizainerė&amp;quot;}  &lt;br /&gt;
&lt;br /&gt;
] &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
for darbuotojas in darbuotojai:  &lt;br /&gt;
&lt;br /&gt;
   print(f&amp;quot;{darbuotojas[&#039;vardas&#039;]} yra {darbuotojas[&#039;pareigos&#039;]}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ši programa terminale išspausdins visus žodyne esančius darbuotojus ir jų pareigas: &lt;br /&gt;
&lt;br /&gt;
Jonas yra programuotojas &lt;br /&gt;
&lt;br /&gt;
Petras yra buhalteris &lt;br /&gt;
&lt;br /&gt;
Ieva yra dizainerė &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pasitelkdami f-tekstinę eilutę, Beno problemą mes išsprendėme dviem kodo eilutėmis - iteruojame per žodyną naudodami &#039;&#039;&#039;for&#039;&#039;&#039; ciklą ir išspausdinam žodyne saugomą informaciją apie darbuotojus. Formatuotinos tekstinės eilutės labai palengvina darbą su duomenų išvedimu ar įrašymu į failą, kadangi leidžia dinamiškai pakeisti tam tikras tekstinės eilutės vietas, nurodyti skaičiaus formatą ir atlikti panašius veiksmus tiesiogiai tekstinėje eilutėje. Tokia galimybė sumažina kodo kiekį ir daro kodą lengviau suprantamą, nes nereikia skaityti 20 eilučių kodo, aprašančio dešimtainio skaičiaus skaitmenų po kablelio apribojimą iki dviejų.&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=588</id>
		<title>Knyga/Spausdinimas ir formatavimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=588"/>
		<updated>2025-01-23T08:50:30Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Spausdinimas ir formatavimas ===&lt;br /&gt;
Standartinis tekstinės eilutės išvedimas į terminalą dažnai nėra pakankamas - įsivaizduokime situaciją: &lt;br /&gt;
&lt;br /&gt;
Benas nori, kad programa išspausdintų jam darbuotojų ir jų atliekamų pareigų sąrašą. Tekstas turėtų atrodyti maždaug taip: “Darbuotojas Jonas yra programuotojas”  &lt;br /&gt;
&lt;br /&gt;
Iš pirmo žvilgsnio, užduotis atrodo paprasta – reikia išspausdinti teksto eilutę: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print(“Darbuotojas Jonas yra programuotojas”) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jeigu Benas turi du darbuotojus, programos kodas atrodytų maždaug taip: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print(“Darbuotojas Jonas yra programuotojas”) &lt;br /&gt;
&lt;br /&gt;
print(“Darbuotojas Antanas yra buhalteris”) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip ir viskas gerai, bet ką daryti tuo atveju, jeigu Benas turi 100 darbuotojų? 100 kodo eilučių spausdinančių kiekvieno darbuotojo vardą ir pareigas, kurias reikia suvesti ranka? Programa nelogiška, nes tokiu atveju Benas gali tiesiog ant lapo ranka susirašyti darbuotojus ir nereik jokio pitono. Tai kaip išspręsti šią problemą? Pitonas turi atsakymą. &lt;br /&gt;
&lt;br /&gt;
Kaip ir dauguma programavimo kalbų, pitonas turi tekstinių eilučių formatavimą. Formatuotina tekstinė eilutė (angliškai - &#039;&#039;String literal&#039;&#039;), tai dinaminė tekstinė eilutė, kuri priima kintamuosius, spausdinant tokią eilutę į terminalą, ji išveda kintamųjų reikšmes, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot; &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Mano vardas yra {vardas}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę &#039;&#039;&#039;“Mano vardas yra Jonas”&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pitone yra keturi būdai, kaip galima formatuoti tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
# F-tekstinė eilutė (f-strings). &lt;br /&gt;
&lt;br /&gt;
# str.format() metodas. &lt;br /&gt;
&lt;br /&gt;
# Formatavimas naudojant % simbolį. &lt;br /&gt;
&lt;br /&gt;
# Formatavimas naudojant šablonines tekstines eilutes (template strings) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F-tekstinė eilutė &lt;br /&gt;
&lt;br /&gt;
F-tekstinės eilutės pitone atsirado kartu su 3.6 versija. Tai yra vienas iš paprasčiausių ir lengviausiai skaitomų būdų formatuoti tekstines eilutes. F-tekstinės eilutės leidžia programuotojui tiesiogiai įtraukti išsireiškimus (angliškai - expressions) bei kintamuosius naudojant riestinius skliaustus (“{ }”). &lt;br /&gt;
&lt;br /&gt;
Pagrindiniai šio būdo privalumai: &lt;br /&gt;
&lt;br /&gt;
* Tekstinėje eilutėje galima rašyti išsireiškimus bei kintamuosius, naudojant vietaženklius (angliškai - placeholder). &lt;br /&gt;
&lt;br /&gt;
* Yra galimybė formatuoti skirtingus tipus - skaičius, datas bei tekstines eilutes, nustatant jų tikslumą ir lygiavimą. &lt;br /&gt;
&lt;br /&gt;
F-tekstinė eilutė žymima raide &#039;&#039;&#039;“f”&#039;&#039;&#039;, kuri yra rašoma prieš tekstinę eilutę indikuojančias kabutes – f&amp;quot;tekstinė eilutė&amp;quot;. Kintamųjų pavadinimai tokioje eilutėje yra įrašomi į riestinius skliaustus, pvz.: &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Mano vardas yra {vardas} ir man yra {amžius} metai.&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę &#039;&#039;&#039;“Mano vardas yra Ieva ir man yra 25 metai.”&#039;&#039;&#039;. Kaip matome, pitonas automatiškai į vietaženklių su kintamųjų pavadinimais vietas įrašė kintamųjų reikšmes. &lt;br /&gt;
&lt;br /&gt;
F-tekstinėje eilutėje gali būti naudojami išsireiškimai, juos įrašant į riestinius skliaustus, pvz.: &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Kitais metais man sueis {amžius + 1} metai.&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę &#039;&#039;&#039;“Kitais metais man sueis 26 metai.”&#039;&#039;&#039;, t. y. pitonas paėmė kintamąjį &#039;&#039;&#039;amžius&#039;&#039;&#039; ir prie jo pridėjo vienetą (25 + 1 = 26). Galimybė naudoti tokius paprastus išsireiškimus palengvina programuotojo darbą, kadangi nereikia atlikti šių veiksmų iki atliekant tekstinės eilutės išvedimą. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F-tekstinėje eilutėje galima atlikti skaičių formatavimą. Tai yra ypač naudingas funkcionalumas, kadangi programuotojui nereikia atlikti papildomų veiksmų, kaip, kad saugoti naują kintamąjį su suformatuota reikšme ir pan. F-tekstinėje eilutėje tai užrašoma tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Skaičiaus PI vertė yra: {pi:.2f}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;“:.2f”&#039;&#039;&#039; išsireiškimas indikuoja, kiek skaičių po kablelio rodyti - &#039;&#039;&#039;“:”&#039;&#039;&#039; (dvitaškis) nurodo formatavimo  instrukcijos pradžią, &#039;&#039;&#039;“.2”&#039;&#039;&#039; rodo, kiek skaičių po kablelio bus rodoma, “f” indikuoja, kad tai yra dešimtainis skaičius. Tokia tekstinė eilutė į terminalą išves &#039;&#039;&#039;“Skaičiaus PI vertė yra 3.14”&#039;&#039;&#039;. Kaip matome, tekstinė elutė pati nukirpo paskutinius tris skaičius po kablelio ir paliko tik du. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pitonas taip pat suteikia galimybę F-tekstinėje eilutėje lygiuoti tekstą. Kaip ir formatuojant skaičius, &#039;&#039;&#039;“:”&#039;&#039;&#039; (dvitaškis) nurodo formatavimo  instrukcijos pradžią, &#039;&#039;&#039;“&amp;lt;”&#039;&#039;&#039; nurodo, jog bus lygiuojama kairėje pusėje, &#039;&#039;&#039;“&amp;gt;”&#039;&#039;&#039; nurodo lygiavimą dešinėje, o &#039;&#039;&#039;“^”&#039;&#039;&#039; - centre. Lygiavimas šiuo atveju yra suprantamas tekstinės eilutės kontekste, o ne ekrano, puslapio ar pan. Išraiška &#039;&#039;&#039;“:&amp;lt;10”&#039;&#039;&#039;, reiškia, kad bus taikomas lygiavimas iš kairės, o viso kintamojo ilgis bus 10 simbolių. Taip pat, galima nurodyti, kuo bus užpildomi tušti tarpai, pvz., &#039;&#039;&#039;“:.&amp;lt;10”&#039;&#039;&#039;., &#039;&#039;&#039;“.”&#039;&#039;&#039; einantis po dvitaškio ir prieš “mažiau” ženklą, indikuoja, kad tušti tarpai bus užpildyti taškais. Atrodo gana painiai, bet pažiūrėkime, kaip tai atrodo, kai kodą aprodoja pitonas: &lt;br /&gt;
&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama kairėje: {vertė:&amp;lt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama dešinėje: {vertė:&amp;gt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama centre: {vertė:^10}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas terminale išves tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
Lygiuojama kairėje: 20         &lt;br /&gt;
&lt;br /&gt;
Lygiuojama dešinėje:         20 &lt;br /&gt;
&lt;br /&gt;
Lygiuojama centre:     20     &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Kaip matome, skaičius 20 yra atvaizduojamas skirtingose vietose, pirmoje eilutėje - kairėje, antroje - dešinėje, trečioje centre. Mes nematome, bet viskas, kas yra po teksto, yra sudėta į 10 simbolių, iš kurių matome tik du – 20 arba “2” ir “0”. Pažiūrėkime, kaip tas pats kodas atrodytų, jeigu tarpus užpildytume taškais: &lt;br /&gt;
&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama kairėje: {vertė:.&amp;lt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama dešinėje: {vertė:.&amp;gt;10}&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Lygiuojama centre: {vertė:.^10}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves terminale tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
Lygiuojama kairėje: 20........ &lt;br /&gt;
&lt;br /&gt;
Lygiuojama dešinėje: ........20 &lt;br /&gt;
&lt;br /&gt;
Lygiuojama centre: ....20.... &lt;br /&gt;
&lt;br /&gt;
Kaip matome, į formatavimo sakinį pridėjus &#039;&#039;&#039;“.”&#039;&#039;&#039;, visi tušti tarpai buvo užpidlyti taškais. Dabar labai aiškiai matome, kaip veikia vertės lygiavimas – prie tekstinės eilutės yra pridedama 10 simbolių, o &#039;&#039;&#039;vertė&#039;&#039;&#039; yra judinama tarp tų simbolių - į pradžią, į pabaigą arba per vidurį. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F-tekstinės eilutės yra moderniausias ir paprasčiausias būdas formatuoti tekstą bei kintamuosius prieš juos išvedant į terminalą, tačiau šis būdas veikia tik su pitono 3.6 ir vėlesnėmis versijomis. Nepaisant to, yra rekomenduojama naudoti šį tekstinių eilučių formatavimo būdą, o ne kitus, senesnius būdus. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant str.format() metodą &lt;br /&gt;
&lt;br /&gt;
Šis metodas atsirado pitono 3 versijoje, jis naujoja riestinius skliaustus kaip vietaženklius, kuriuos išvesties metu užpildo kintamųjų reikšmėmis. Gilinantis pastebėsite, kad šis būdas yra panašus į f-tekstinę eilutę - naudojama ta pati sintaksė, tad nebus sudėtinga suprasti veikimą. &lt;br /&gt;
&lt;br /&gt;
Metodas format() yra kviečiamas tiesiai iš tekstinės eilutės, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Sveikas, pasauli! &amp;quot;.format() &lt;br /&gt;
&lt;br /&gt;
Naudojant .format() metodą dinaminės tekstinės eilutės dalys yra nurodomos riestiniuose skliaustuose, pvz.: &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Sveikas, {}!&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Norint vietoje skliaustų matyti reikšmę, ją paduodame kaip kintamąjį .format() metodui: &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Sveikas, {}!&amp;quot;.format(&amp;quot;pasauli&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Svarbu paminėti tai, jog tuo atveju, kai yra kelios dinaminės dalys, t. y. tekstinėje eilutėje yra keli riestiniai skliaustai, pvz., &#039;&#039;&#039;&amp;quot;{}, {}!&amp;quot;&#039;&#039;&#039;, tai .format() metodui reikšmės yra paduodamos viena paskui kitą, iš kairės į dešinę:  &lt;br /&gt;
&lt;br /&gt;
&amp;quot;{}, {}&amp;quot;.format(&amp;quot;Sveikas&amp;quot;, &amp;quot;pasauli&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
format() metodui mes galime paduoti ir kintamuosius, vadovaujantis jau prieš tai aptartu eiliškumu: &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Mano vardas yra {} ir man yra {} metai.&amp;quot;.format(vardas, amžius)) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas į terminalą išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
Mano vardas yra Ieva ir man yra 25 metai. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Format() metodui paduoti parametrai gali būti pernaudojami tekstinėje eilutėje, pvz.: &lt;br /&gt;
&lt;br /&gt;
“{0} yra {1}. {0} yra {2}.&amp;quot;.format(&amp;quot;Dangus&amp;quot;, &amp;quot;mėlynas&amp;quot;, &amp;quot;beribis&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Išvestas tekstas terminale: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dangus yra mėlynas. Dangus yra beribis. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, riestiniuose skliaustuose galime nurodyti parametro poziciją format() metodui perduotų parametrų sąraše. Tokiu būdu yra pernaudojamos reikšmės ir sumažinamas kodo kiekis. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Skaičių bei lygiavimo formatavimas, iš principo veikia identiškai, kaip ir f-tekstinėje-eilutėje, tiesiog formatavimo taisykles paduodame į riestinius skliaustus: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Skaičiaus su kableliu formatavimas &lt;br /&gt;
&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Skaičiaus PI vertė yra: {:.2f}&amp;quot;.format(pi)) &lt;br /&gt;
&lt;br /&gt;
//Lygiavimo formatavimas &lt;br /&gt;
&lt;br /&gt;
vertė = 20 &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama kairėje: {:.&amp;lt;10}&amp;quot;.format(vertė))  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama dešinėje: {:.&amp;gt;10}&amp;quot;.format(vertė))  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Lygiuojama centre: {:.^10}&amp;quot;.format(vertė)) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas išves terminale tokias tekstines eilutes: &lt;br /&gt;
&lt;br /&gt;
Skaičiaus PI vertė yra 3.14. &lt;br /&gt;
&lt;br /&gt;
Lygiuojama kairėje: 20........ &lt;br /&gt;
&lt;br /&gt;
Lygiuojama dešinėje: ........20 &lt;br /&gt;
&lt;br /&gt;
Lygiuojama centre: ....20.... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, iš principo &#039;&#039;&#039;str.format()&#039;&#039;&#039; metodas veikia labai panašiai, kaip ir f-tekstinės eilutės, tik užrašymas yra sunkiau skaitomas ir ilgesnis.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant % ženklą &lt;br /&gt;
&lt;br /&gt;
Tekstinės eilutės formatavimas naudojant % ženklą yra seniausias būdas pitone formatuoti tekstines eilutes. Šiais laikais jo naudojimas yra nerekomenduotinas, kadangi pitonas 3-oje ir vėlesnėse versijose sudarė galimybę naudoti daug paprasčiau skaitomas ir turinčias daug daugiau galimybių f-tekstines eilutes ir metodą str.format(). Su šiuo būdu supažindiname, nes jo naudojimą vis dar galime sutikti senose programose, kurios naudoja ankstesnę pitono versiją (senesnę nei 3.0). &lt;br /&gt;
&lt;br /&gt;
Šis būdas, kaip ir ankstesni, yra paremtas vietaženkliais, tačiau šiuo atveju, vietaženklis turi indikuoti, kokio tipo vertė bus įdėta į jo vietą, t. y. turi nurodyti duomenų tipą: &lt;br /&gt;
&lt;br /&gt;
# “%s” - s indikuoja, kad bus naudojamas tekstinės eilutės tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
# “%d” - d indikuoja, kad bus naudojamas skaičiaus tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
# “%f” - f indikuoja, kad bus naudojamas dešimtainio skaičiaus tipo kintamasis &lt;br /&gt;
&lt;br /&gt;
Kode šie vietaženkliai panaudojami tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Mano vardas yra %s ir man yra %d metai.&amp;quot; % (&amp;quot;Ieva&amp;quot;, 25)) &lt;br /&gt;
&lt;br /&gt;
//Skaičiaus su kableliu formatavimas &lt;br /&gt;
&lt;br /&gt;
pi = 3.14159  &lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Skaičiaus PI vertė yra: %.2f&amp;quot; % pi) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pats kodas yra žymiai sunkiau skaitomas, kintamųjų padavimas sudėtingesnis ir daug  sunkiau naudoti, jeigu reikia naudoti daugiau nei kelis parametrus. Paminėtina ir tai, kad šis būdas turi daug mažiau galimybių, pvz., neturi galimybės formatuoti lygiavimą ir pan. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Formatavimas naudojant šablonines tekstines eilutes (template strings) &lt;br /&gt;
&lt;br /&gt;
Šabloninių tekstinių eilučių funkcionalumą suteikia string modelio Template klasė. Ši klasė suteikia saugią alternatyvą tekstinių eilučių formatavimui. Šis būdas yra naudingas tais atvejais, kai nėra pasitikima vartotojo įvestimi, kadangi padeda išvengti kodo įskiepio. Norint naudoti šį būdą, reikia susiimportuoti Template klasę iš string modelio: &lt;br /&gt;
&lt;br /&gt;
from string import Template  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Norint naudoti template modelį, mes sukuriame template objektą, kurio konstruktoriuje nurodom tekstinės eilutės šabloną. Dinaminės tekstinės eilutės dalys yra indikuojamos &#039;&#039;&#039;“$”&#039;&#039;&#039; ženkliuku ir kintamojo pavadinimu. Norint dinaminio kintamojo vietoje nurodyti vertę, kviečiame objekto metodą &#039;&#039;&#039;substitute()&#039;&#039;&#039;, kurio parametruose nurodome dinaminio kintamojo pavadinimą ir priskiriam jam vertę: &lt;br /&gt;
&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas.&amp;quot;)  &lt;br /&gt;
&lt;br /&gt;
print(šablonas.substitute(vardas=&amp;quot;Ieva&amp;quot;))  &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
Mano vardas yra Ieva &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šablono dinaminiems kintamiesiems gali būti priskirti kintamieji, ne tik tiesioginės reikšmės: &lt;br /&gt;
&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas ir man yra $amzius metai&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(šablonas.substitute(vardas=vardas, amzius=amžius)) &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
Mano vardas yra Ieva ir man yra 25 metai. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Paminėtina tai, kad substitute() metodas išmes klaidą, jeigu nepaduosime visų dinaminių parametrų verčių. Tam, kad išvengti šios klaidos, galime naudoti safe_substitute() metodą, kuris ignoruoja trūkstamas vertes ir slopina klaidos pranešimus: &lt;br /&gt;
&lt;br /&gt;
from string import Template &lt;br /&gt;
&lt;br /&gt;
šablonas = Template(&amp;quot;Mano vardas yra $vardas ir man yra $amzius metai &amp;quot;) &lt;br /&gt;
&lt;br /&gt;
vardas = &amp;quot;Ieva&amp;quot; &lt;br /&gt;
&lt;br /&gt;
amžius = 25 &lt;br /&gt;
&lt;br /&gt;
print(šablonas.safe_substitute(vardas=vardas)) &lt;br /&gt;
&lt;br /&gt;
Šis kodas išves tekstinę eilutę: &lt;br /&gt;
&lt;br /&gt;
Mano vardas yra Ieva ir man yra $amzius metai. &lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį, kad šabloninės eilutės kintamieji, negali būti su lietuviškomis raidėmis, pitono kompiliatorius nesupranta dinaminio kintamojo pavadinimo ir jį tiesiog paverčia tekstinės eilutės dalimi. &lt;br /&gt;
&lt;br /&gt;
Šabloninė tekstinė eilutė yra paprastas ir saugus būdas priimti ir išvesti vartotojo įvestį, bet jis nėra toks modernus, kaip f-tekstinės eilutės ar .format()metodas, ir negali atlikti sudėtingesnių formatavimo užduočių, pvz., lygiavimo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Taigi, kaip matome yra įvairų būdų, kuriuos galime pasitelkti tekstinės eilutės formatavimui. Prisiminkime temos pradžioje minėtą Beną ir jo problemą su darbuotojų ir jų pareigų išspausdinimu. Perskaitę šį skyrių matome, kad Benui nereikėtų šimtą kartų ranka rašyti tekstines eilutes, o pasitelkti tekstinės eilutės formatavimą. Beno darbuotojai sudėti į žodyną(angliškai - dictionary), tad juos išspausdinti terminale galime tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
darbuotojai = [  &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Jonas&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;programuotojas&amp;quot;},  &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Petras&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;buhalteris&amp;quot;},   &lt;br /&gt;
&lt;br /&gt;
   {&amp;quot;vardas&amp;quot;: &amp;quot;Ieva&amp;quot;, &amp;quot;pareigos&amp;quot;: &amp;quot;dizainerė&amp;quot;}  &lt;br /&gt;
&lt;br /&gt;
] &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
for darbuotojas in darbuotojai:  &lt;br /&gt;
&lt;br /&gt;
   print(f&amp;quot;{darbuotojas[&#039;vardas&#039;]} yra {darbuotojas[&#039;pareigos&#039;]}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ši programa terminale išspausdins visus žodyne esančius darbuotojus ir jų pareigas: &lt;br /&gt;
&lt;br /&gt;
Jonas yra programuotojas &lt;br /&gt;
&lt;br /&gt;
Petras yra buhalteris &lt;br /&gt;
&lt;br /&gt;
Ieva yra dizainerė &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pasitelkdami f-tekstinę eilutę, Beno problemą mes išsprendėme dviem kodo eilutėmis - iteruojame per žodyną naudodami &#039;&#039;&#039;for&#039;&#039;&#039; ciklą ir išspausdinam žodyne saugomą informaciją apie darbuotojus. Formatuotinos tekstinės eilutės labai palengvina darbą su duomenų išvedimu ar įrašymu į failą, kadangi leidžia dinamiškai pakeisti tam tikras tekstinės eilutės vietas, nurodyti skaičiaus formatą ir atlikti panašius veiksmus tiesiogiai tekstinėje eilutėje. Tokia galimybė sumažina kodo kiekį ir daro kodą lengviau suprantamą, nes nereikia skaityti 20 eilučių kodo, aprašančio dešimtainio skaičiaus skaitmenų po kablelio apribojimą iki dviejų.&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=587</id>
		<title>Knyga/Spausdinimas ir formatavimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Spausdinimas_ir_formatavimas&amp;diff=587"/>
		<updated>2025-01-23T08:48:36Z</updated>

		<summary type="html">&lt;p&gt;Audrius: Naujas puslapis: === Spausdinimas ir formatavimas ===&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Spausdinimas ir formatavimas ===&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=574</id>
		<title>Knyga</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=574"/>
		<updated>2025-01-16T08:56:54Z</updated>

		<summary type="html">&lt;p&gt;Audrius: /* Integruotosios funkcijos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Vadovėlis}}&lt;br /&gt;
[[Category:Knyga]]&lt;br /&gt;
&lt;br /&gt;
Tai - standartinės Python programavimo kalbos vadovėlis, išverstas iš [https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3 Non programmer&#039;s Tutorial for Python 3] ir adaptuotas Lietuvos mokykloms.&lt;br /&gt;
&lt;br /&gt;
Šis vadovėlis yra atvirojo kodo, [https://www.gnu.org/licenses/gpl-3.0.html GPL v3] licencija.&lt;br /&gt;
&lt;br /&gt;
==Turinys==&lt;br /&gt;
&lt;br /&gt;
=== Python vadovėlis ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Autoriai|Autoriai]] ====&lt;br /&gt;
: Originalaus (angliško) vadovėlio autoriai ir vertėjai į lietuvių kalbą.&lt;br /&gt;
&lt;br /&gt;
==== [[/Įžanga|Įžanga]] ====&lt;br /&gt;
: Įžanginiai žodžiai&lt;br /&gt;
&lt;br /&gt;
==== [[/Įvadas|Įvadas]] ====&lt;br /&gt;
: Python&#039;o diegimas ir naudojimas&lt;br /&gt;
&lt;br /&gt;
=== Pagrindai ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Labas, Pasauli|Labas, Pasauli]] ====&lt;br /&gt;
: Spausdinimas ir aritmetika. Garsioji pirmoji programa &amp;amp;ndash; ekrano išvestis &amp;amp;ndash; skaičiai ir skaičiavimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Kas čia eina?|Kas čia eina?]] ====&lt;br /&gt;
: Kintamieji ir įvestis. Interaktyvi įvestis &amp;amp;ndash; tekstinė eilutė&lt;br /&gt;
&lt;br /&gt;
==== [[/Pasirinkimai|Pasirinkimai]] ====&lt;br /&gt;
: &amp;lt;tt&amp;gt;if, else&amp;lt;/tt&amp;gt; sakiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Loginiai reiškiniai|Loginiai reiškiniai]] ====&lt;br /&gt;
: Kompiuterinė logika &amp;amp;ndash; &amp;lt;tt&amp;gt;True&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;False&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;and&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;or&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;not&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Ciklai For|Ciklai For]] ====&lt;br /&gt;
: for ir range. Dar vienos rūšies ciklai&lt;br /&gt;
&lt;br /&gt;
==== [[/Suskaičiuoti iki 10|Suskaičiuoti iki 10]] ====&lt;br /&gt;
: Ciklai &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Įdėtiniai ciklai ir sąlygos|Įdėtiniai ciklai ir sąlygos]] ====&lt;br /&gt;
: Ciklas cikle, ifas ife&lt;br /&gt;
&lt;br /&gt;
==== [[/Funkcijų apibrėžimas|Funkcijų apibrėžimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Programų struktūrizavimas naudojant funkcijas&lt;br /&gt;
&lt;br /&gt;
==== [[/Sąrašai|Sąrašai]] ====&lt;br /&gt;
&lt;br /&gt;
: Kintamieji, kuriuose yra daugiau nei viena reikšmė&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Integruotosios funkcijos|Integruotosios funkcijos]] ====&lt;br /&gt;
: Pitono kalboje integruotos funkcijos - sum(), min(), max().&lt;br /&gt;
&lt;br /&gt;
=== Išplėstinė madžiaga ===&lt;br /&gt;
&lt;br /&gt;
;[[/Failų tvarkymas|Failų tvarkymas]]&lt;br /&gt;
: Skaitymas iš failų ir rašymas į failus&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: spausdinimas ir formatavimas&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: Algoritmai&lt;br /&gt;
&lt;br /&gt;
==== [[/Paieška ir Rikiavimas|Paieška ir Rikiavimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Paieška sąraše ir įvairūs rikiavimo būdai&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie sąrašus|Daugiau apie sąrašus]] ====&lt;br /&gt;
&lt;br /&gt;
: Sąrašų elementų ar dalių naudojimas&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie tekstines eilutes|Daugiau apie tekstines eilutes]] ====&lt;br /&gt;
&lt;br /&gt;
: Pažangesnės teksto manipuliacijos&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie funkcijas|Daugiau apie funkcijas]] ====&lt;br /&gt;
&lt;br /&gt;
: Parametrai, reikšmės, programos skaldymas&lt;br /&gt;
&lt;br /&gt;
==== [[/Žodynai|Žodynai]] ====&lt;br /&gt;
: Kintamieji, kuriuose yra raktų/reikšmių poros&lt;br /&gt;
&lt;br /&gt;
==== [[/Derinimas|Derinimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Išsiaiškinti, kas negerai&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Klasės|Klasės]] ====&lt;br /&gt;
: Klasės, objektai&lt;br /&gt;
&lt;br /&gt;
=== Programuotojas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Rekursinės funkcijos|Rekursinės funkcijos]] ====&lt;br /&gt;
:(Beveik) stulbinantis pavyzdys, kaip programuotojai gali mąstyt&lt;br /&gt;
&lt;br /&gt;
==== [[/Modulių naudojimas|Modulių naudojimas]] ====&lt;br /&gt;
:Standartinio funkcionalumo plėtiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Siekiant tobulumo|Siekiant tobulumo]] ====&lt;br /&gt;
:Kaip tvarkyti klaidas&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
;[[/Rekursija|Rekursija]]&lt;br /&gt;
: Rekursinės funkcijos&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==== [[/Įvadas į objektinį programavimą Python 3|Įvadas į objektinį programavimą Python 3]] ====&lt;br /&gt;
:OOP pagrindai (Objektinis programavimas, angl. &#039;&#039;Object-Oriented Programming&#039;&#039;)&lt;br /&gt;
:Perkelti apie klases į kitą temą&lt;br /&gt;
&lt;br /&gt;
==== [[/Importuotos bibliotekos ir vėžlys|Importuotos bibliotekos ir vėžlys]] ====&lt;br /&gt;
:Pagrindinės funkcijos iš įvairių bibliotekų.&lt;br /&gt;
&lt;br /&gt;
==== [[/Pažangios_funkcijos|Pažangios funkcijos]] ====&lt;br /&gt;
:Lambda, sorted, filter, map... Kas tai?&lt;br /&gt;
&lt;br /&gt;
=== Verta žinoti ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Duomenų tyryba ir informacija|Duomenų tyryba ir informacija]] ====&lt;br /&gt;
:Informacija apie dirbtinį intelektą, kriptografiją ir duomenis.&lt;br /&gt;
&lt;br /&gt;
=== Epilogas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Pabaiga|Pabaiga]] ====&lt;br /&gt;
: Ką toliau daryti&lt;br /&gt;
&lt;br /&gt;
==== [[/DUK|D.U.K.]] ====&lt;br /&gt;
: Dažnai užduodami klausimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Terminai|Terminai]] ====&lt;br /&gt;
: Terminų žodynas&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=573</id>
		<title>Knyga</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=573"/>
		<updated>2025-01-16T08:54:26Z</updated>

		<summary type="html">&lt;p&gt;Audrius: /* Nauja tema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Vadovėlis}}&lt;br /&gt;
[[Category:Knyga]]&lt;br /&gt;
&lt;br /&gt;
Tai - standartinės Python programavimo kalbos vadovėlis, išverstas iš [https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3 Non programmer&#039;s Tutorial for Python 3] ir adaptuotas Lietuvos mokykloms.&lt;br /&gt;
&lt;br /&gt;
Šis vadovėlis yra atvirojo kodo, [https://www.gnu.org/licenses/gpl-3.0.html GPL v3] licencija.&lt;br /&gt;
&lt;br /&gt;
==Turinys==&lt;br /&gt;
&lt;br /&gt;
=== Python vadovėlis ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Autoriai|Autoriai]] ====&lt;br /&gt;
: Originalaus (angliško) vadovėlio autoriai ir vertėjai į lietuvių kalbą.&lt;br /&gt;
&lt;br /&gt;
==== [[/Įžanga|Įžanga]] ====&lt;br /&gt;
: Įžanginiai žodžiai&lt;br /&gt;
&lt;br /&gt;
==== [[/Įvadas|Įvadas]] ====&lt;br /&gt;
: Python&#039;o diegimas ir naudojimas&lt;br /&gt;
&lt;br /&gt;
=== Pagrindai ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Labas, Pasauli|Labas, Pasauli]] ====&lt;br /&gt;
: Spausdinimas ir aritmetika. Garsioji pirmoji programa &amp;amp;ndash; ekrano išvestis &amp;amp;ndash; skaičiai ir skaičiavimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Kas čia eina?|Kas čia eina?]] ====&lt;br /&gt;
: Kintamieji ir įvestis. Interaktyvi įvestis &amp;amp;ndash; tekstinė eilutė&lt;br /&gt;
&lt;br /&gt;
==== [[/Pasirinkimai|Pasirinkimai]] ====&lt;br /&gt;
: &amp;lt;tt&amp;gt;if, else&amp;lt;/tt&amp;gt; sakiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Loginiai reiškiniai|Loginiai reiškiniai]] ====&lt;br /&gt;
: Kompiuterinė logika &amp;amp;ndash; &amp;lt;tt&amp;gt;True&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;False&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;and&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;or&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;not&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Ciklai For|Ciklai For]] ====&lt;br /&gt;
: for ir range. Dar vienos rūšies ciklai&lt;br /&gt;
&lt;br /&gt;
==== [[/Suskaičiuoti iki 10|Suskaičiuoti iki 10]] ====&lt;br /&gt;
: Ciklai &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Įdėtiniai ciklai ir sąlygos|Įdėtiniai ciklai ir sąlygos]] ====&lt;br /&gt;
: Ciklas cikle, ifas ife&lt;br /&gt;
&lt;br /&gt;
==== [[/Funkcijų apibrėžimas|Funkcijų apibrėžimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Programų struktūrizavimas naudojant funkcijas&lt;br /&gt;
&lt;br /&gt;
==== [[/Sąrašai|Sąrašai]] ====&lt;br /&gt;
&lt;br /&gt;
: Kintamieji, kuriuose yra daugiau nei viena reikšmė&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Integruotosios funkcijos|Integruotosios funkcijos]] ====&lt;br /&gt;
: Pitono kalboje integruotos funkcijos, palengvinančios kasdienes operacijas&lt;br /&gt;
&lt;br /&gt;
=== Išplėstinė madžiaga ===&lt;br /&gt;
&lt;br /&gt;
;[[/Failų tvarkymas|Failų tvarkymas]]&lt;br /&gt;
: Skaitymas iš failų ir rašymas į failus&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: spausdinimas ir formatavimas&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: Algoritmai&lt;br /&gt;
&lt;br /&gt;
==== [[/Paieška ir Rikiavimas|Paieška ir Rikiavimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Paieška sąraše ir įvairūs rikiavimo būdai&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie sąrašus|Daugiau apie sąrašus]] ====&lt;br /&gt;
&lt;br /&gt;
: Sąrašų elementų ar dalių naudojimas&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie tekstines eilutes|Daugiau apie tekstines eilutes]] ====&lt;br /&gt;
&lt;br /&gt;
: Pažangesnės teksto manipuliacijos&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie funkcijas|Daugiau apie funkcijas]] ====&lt;br /&gt;
&lt;br /&gt;
: Parametrai, reikšmės, programos skaldymas&lt;br /&gt;
&lt;br /&gt;
==== [[/Žodynai|Žodynai]] ====&lt;br /&gt;
: Kintamieji, kuriuose yra raktų/reikšmių poros&lt;br /&gt;
&lt;br /&gt;
==== [[/Derinimas|Derinimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Išsiaiškinti, kas negerai&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Klasės|Klasės]] ====&lt;br /&gt;
: Klasės, objektai&lt;br /&gt;
&lt;br /&gt;
=== Programuotojas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Rekursinės funkcijos|Rekursinės funkcijos]] ====&lt;br /&gt;
:(Beveik) stulbinantis pavyzdys, kaip programuotojai gali mąstyt&lt;br /&gt;
&lt;br /&gt;
==== [[/Modulių naudojimas|Modulių naudojimas]] ====&lt;br /&gt;
:Standartinio funkcionalumo plėtiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Siekiant tobulumo|Siekiant tobulumo]] ====&lt;br /&gt;
:Kaip tvarkyti klaidas&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
;[[/Rekursija|Rekursija]]&lt;br /&gt;
: Rekursinės funkcijos&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==== [[/Įvadas į objektinį programavimą Python 3|Įvadas į objektinį programavimą Python 3]] ====&lt;br /&gt;
:OOP pagrindai (Objektinis programavimas, angl. &#039;&#039;Object-Oriented Programming&#039;&#039;)&lt;br /&gt;
:Perkelti apie klases į kitą temą&lt;br /&gt;
&lt;br /&gt;
==== [[/Importuotos bibliotekos ir vėžlys|Importuotos bibliotekos ir vėžlys]] ====&lt;br /&gt;
:Pagrindinės funkcijos iš įvairių bibliotekų.&lt;br /&gt;
&lt;br /&gt;
==== [[/Pažangios_funkcijos|Pažangios funkcijos]] ====&lt;br /&gt;
:Lambda, sorted, filter, map... Kas tai?&lt;br /&gt;
&lt;br /&gt;
=== Verta žinoti ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Duomenų tyryba ir informacija|Duomenų tyryba ir informacija]] ====&lt;br /&gt;
:Informacija apie dirbtinį intelektą, kriptografiją ir duomenis.&lt;br /&gt;
&lt;br /&gt;
=== Epilogas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Pabaiga|Pabaiga]] ====&lt;br /&gt;
: Ką toliau daryti&lt;br /&gt;
&lt;br /&gt;
==== [[/DUK|D.U.K.]] ====&lt;br /&gt;
: Dažnai užduodami klausimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Terminai|Terminai]] ====&lt;br /&gt;
: Terminų žodynas&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=572</id>
		<title>Knyga/Klasės</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=572"/>
		<updated>2025-01-16T08:25:31Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Klasės ===&lt;br /&gt;
Pitonas yra objektinė programavimo kalba, tad, iš principo, viskas, kas naudojama pitone yra objektas, su visais jam priklausančiais kitamaisiais bei metodais. &#039;&#039;&#039;Klasė&#039;&#039;&#039; yra tarsi brėžinys/maketas (angliškai - &#039;&#039;blueprint&#039;&#039;), pagal kurį yra kuriami objektai. Klasėse yra apibrėžiama objekto struktūra (kintamieji) ir jo funkcionalumas (angliškai - behaviour). Klasės inkapsuliuoja duomenis ir funkcionalumus, skatina kodo pernaudojamumą ir moduliškumą. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inkapsuliacija&#039;&#039;&#039; – tai vienas iš pagrindinių objektinio programavimo principų ir viena svarbiausių klasės užduočių. Programavime inkapsuliacija suprantama, kaip tiesioginės prieigos prie tam tikrų duomenų ar metodų apribojimas. Paprastai pasakius, tai reiškia, kad tam tikra informacija ar funkcionalumas nėra prieinamas vartotojui, naudojančiam objektą, pavyzdžiui, apribojama vartotojo teisė matyti/keisti objekto ID kintamąjį, sukūrimo laiką, ir pan. Inkapsuliacijos naudojimas yra itin svarbus, kai yra siekiama apsaugoti tam tikrus jautrius duomenis nuo pakeitimų.  &lt;br /&gt;
&lt;br /&gt;
Atkreipikime dėmesį į tai, kad yra naudojamas naujas terminas – &#039;&#039;&#039;metodas&#039;&#039;&#039;. Metodu vadiname funkciją, kai ji priklauso kokiai nors klasei. Tai yra nuo seno įsišaknijęs terminas, leidžiantis atskirti, kam priklauso funkcija – ar ji yra taikoma  pati savaime, ar priklauso klasei/objektui.  &lt;br /&gt;
&lt;br /&gt;
==== Klasės struktūra ====&lt;br /&gt;
Kiekviena klasė pitone prasideda nuo raktažodžio &#039;&#039;class&#039;&#039;. Kode klasės deklaravimas atrodo taip: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Susipažinome su klasės deklaravimu, bet kas sudaro pačią klasę? Klasė susideda iš jai priklausančių kintamųjų ir metodų. Iš esmės kiekviena klasė turės savo kintamuosius ir metodus, kadangi tuščia klasė (išskyrus tam tikrus specifinius atvejus) iš esmės neturi jokios prasmės ir neatlieka savo pagrindinės funkcijos – skatinti kodo pernaudojamumą bei moduliškumą. Tikra klasė turėtų atrodyti maždaug taip: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = None&lt;br /&gt;
&lt;br /&gt;
     def pakeisti_vardą(self, naujas_vardas):&lt;br /&gt;
           Self.vardas= naujas_vardas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kaip matome, yra deklaruota klasė Žmogus, ji turi du kintamuosius &#039;&#039;&#039;vardas&#039;&#039;&#039; ir &#039;&#039;&#039;amžius&#039;&#039;&#039; bei metodą &#039;&#039;&#039;pakeisti_vardą()&#039;&#039;&#039;, kuris kaip parametrą (&#039;&#039;naujas_vardas&#039;&#039;) priima tekstinę eilutę su vardu ir juo pakeičia klasės kintamąjį &#039;&#039;&#039;vardas&#039;&#039;&#039;. Viskas kas yra aprašyta po klasės deklaracija, priklauso klasei, nesvarbu, ar tai būtų kintamieji, ar metodai.   &lt;br /&gt;
&lt;br /&gt;
==== Objekto sukūrimas ====&lt;br /&gt;
Kiekviena klasė turi specialų metodą, pavadinimu konstruktorius (angliškai - constructor), kurio paskirtis – kurti objektus, atitinkančios tos klasės struktūrą, priskirti jo kintamiesiems vertes. Jis visada iškviečiamas kaip metodas su klasės pavadinimu - &#039;&#039;klasėsPavadinimas()&#039;&#039;. Konstruktorius yra dviejų rūšių - numatytasis ir deklaruotas. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Numatytasis konstruktorius&#039;&#039;&#039; – tai konstruktorius, kurį kiekvienai klasei suteikia pats pitonas, jeigu programuotojas nedeklaruoja kitokio konstruktoriaus. Pagrindinė šio konstruktoriaus paskirtis – sukurti objektą, tačiau jis neatlieka jokių kitų veiksmų - nepriskiria jokių kintamųjų verčių, jų neapdoroja ir pan. Tai reiškia, kad tuo atveju, jeigu klasės kintamieji neturi priskirtų verčių, tai ir sukurto objekto kintamieji tų verčių neturės. Pavyzdžiui turime klasę: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = None&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kaip matome, kintamieji neturi jokios reikšmės, tą indikuoja raktažodis None. Norint šios klasės pagrindu sukurti objektą, mes turime iškviesti numatytąjį konstruktorių: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Tokiu būdu sukuriamas Žmogus tipo objektas ir priskiriamas kintamajam Jonas. Objektas Jonas turi visus klasės kintamuosius, t. y. Jonas turi &#039;&#039;vardas&#039;&#039; ir &#039;&#039;amžius&#039;&#039;, bei jų abiejų reikšmės turėtų sutapti su klasėje nurodytomis reikšmėmis. Tą patikrinti galime tokiu būdu: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = 24&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”)&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šis kodas į terminalą išves dvi eilutes:  &lt;br /&gt;
&lt;br /&gt;
“Vardas: None” &lt;br /&gt;
&lt;br /&gt;
“Amžius: 24” &lt;br /&gt;
&lt;br /&gt;
Taigi, matome, kad objektas &#039;&#039;Jonas&#039;&#039; turi tuos pačius kintamuosius ir reikšmes, kokios yra priskirtos kintamiesiems klasėje.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deklaruotasis konstruktorius –&#039;&#039;&#039; tai yra konstruktorius, kuris yra aprašomas programuotojo. Priešingai negu numatytasis konstruktorius, šis konstruktorius gali atlikti papildomus veiksmus kuriant objektą, pavyzdžiui, užpildo objekto kintamuosius duomenimis, atlieka papildomus veiksmus (išspausdina kintamųjų reikšmes, iškviečia reikalingus metodus, sukuria papildomus objektus ir pan.). Tokio tipo konstruktorius kode yra deklaruojamas pavadinimu &#039;&#039;__init__()&#039;&#039;, o per jo parametrus nurodome, kokias reikšmes šis konstruktorius priima ir jas priskiria kuriamo objekto kintamiesiems: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = 24&lt;br /&gt;
     def __init__(self, vardas, amžius):&lt;br /&gt;
           self.vardas = vardas&lt;br /&gt;
           self.amžius = amžius&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”)&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kaip matome, konstruktorius reikalauja dviejų parametrų - &#039;&#039;&#039;vardas&#039;&#039;&#039; ir &#039;&#039;&#039;amžius&#039;&#039;&#039;. Jis taip pat turi specialų &#039;&#039;&#039;self&#039;&#039;&#039; parametrą, bet jo paduoti konstruktoriui nereikia, jis leidžia konstruktoriui pasiekti objekto kintamuosius ir metodus prieš priskiriant objektą kintamajam. Kurdami objektą &#039;&#039;&#039;&#039;&#039;Jonas&#039;&#039;&#039;&#039;&#039;, konstruktoriui mes paduodame tekstinę eilutę su vardu “Jonas” bei skaičių “14”. Kodo vykdymo pabaigoje bus išspausdintos objekto &#039;&#039;&#039;&#039;&#039;Jonas&#039;&#039;&#039;&#039;&#039; kintamųjų &#039;&#039;&#039;vardas&#039;&#039;&#039; ir &#039;&#039;&#039;amžius&#039;&#039;&#039; vertės - “Vardas: Jonas” ir “Amžius: 14”. Taigi, deklaruotasis konstruktorius, priešingai negu numatytasis, sukūrė objektą su programuotojo numatytomis kintamųjų reikšmėmis. Deklaruotasis konstruktorius gali turėti faktiškai neribotą kiekį parametrų, kuriuos gali priimti ir priskirti objekto kintamiesiems, tačiau vadovaujantis gerosiomis programavimo praktikomis, konstruktorius neturėtų priimti daugiau kaip penkis parametrus. &lt;br /&gt;
&lt;br /&gt;
Paminėtina ir tai, kad konstruktoriuje galima nurodyti numatytąsias reikšmes kintamiesiems, kurios bus priskirtos, jeigu programuotojas nepaduoda jokių parametrų, kviesdamas deklaruotąjį konstruktorių: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = 24&lt;br /&gt;
     def __init__(self, vardas=&amp;quot;Bevardis&amp;quot;, amžius=0):&lt;br /&gt;
           self.vardas = vardas&lt;br /&gt;
           self.amžius = amžius&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”)&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kode aprašytas konstruktorius reikalauja dviejų parametrų - vardas ir amžius, bet abu parametrai turi priskirtą numatytąją reikšmę - &amp;quot;&#039;&#039;Bevardis&#039;&#039;&amp;quot; ir &#039;&#039;0&#039;&#039;. Tą indikuoja lygybės ženklas ir pageidaujama tekstinė eilutė (parametro vardas atveju) ir skaičius (parametro amžius atveju). Kodo vykdymo pabaigoje bus išspausdintos objekto Jonas kintamųjų Vardas ir Amžius vertės - “Vardas: Bevardis” ir “Amžius: 0”. Kadangi deklaruotasis konstruktrius negavo jokių parametrų, jis kintamiesiems priskyrė konstruktoriuje nurodytas numatytąsias vertes. &lt;br /&gt;
&lt;br /&gt;
==== Klasės metodų naudojimas ====&lt;br /&gt;
Kaip jau minėta anksčiau, klasės gali turėti savo metodus. Metodai taip pat yra pasiekiami objekto, ir gali būti naudojami: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = 24&lt;br /&gt;
     &lt;br /&gt;
     def pakeisti_vardą(self, naujas_vardas):&lt;br /&gt;
          self.vardas = naujas_vardas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas iki pakeitimo:  {Jonas.Vardas}”)&lt;br /&gt;
&lt;br /&gt;
Jonas.pakeisti_vardą(“Jonas”)&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas po pakeitimo:  {Jonas.Vardas}”)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas taip pat išves dvi eilutes, vardo reikšmę prieš pakeisti_vardą () metodo kvietimą, ir po jo: &lt;br /&gt;
&lt;br /&gt;
“Vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Vardas po pakeitimo: Jonas” &lt;br /&gt;
&lt;br /&gt;
Svarbu paminėti tai, kad vardas yra pakeičiamas tik objekto “Jonas” kontekste, t. y., jeigu turėsime objektą “Petras”, objekto Jonas iškviesta funkcija pakeisti_vardą(“Jonas”), ji nepakeis kintamojo Vardas objekte Petras. Pažiūrėkime, kaip tai atrodo kode: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = None&lt;br /&gt;
     &lt;br /&gt;
     def pakeisti_vardą(self, naujas_vardas):&lt;br /&gt;
          self.vardas = naujas_vardas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
Petras  = Žmogus()&lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Jonas vardas iki pakeitimo:  {Jonas.vardas}”)&lt;br /&gt;
Print(f“Objekto Petras vardas iki pakeitimo:  {Petras.vardas}”)&lt;br /&gt;
&lt;br /&gt;
Jonas.pakeisti_vardą(“Jonas”)&lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Jonas vardas po pakeitimo:  {Jonas.vardas}”)&lt;br /&gt;
Print(f“Objekto Petras vardas po pakeitimo:  {Petras.vardas}”)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šis kodas išves keturias eilutes, abiejų objektų kintamojo Vardas reikšmę prieš pakeisti_vardą() metodo kvietimą, ir po jo: &lt;br /&gt;
&lt;br /&gt;
“Objekto Jonas vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Objekto Petras vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Objekto Jonas vardas po pakeitimo: Jonas” &lt;br /&gt;
&lt;br /&gt;
“Objekto Petras vardas po pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
Kaip matome, objektui &#039;&#039;Petras&#039;&#039; priklausantis kintamasis &#039;&#039;&#039;vardas&#039;&#039;&#039; nebuvo pakeistas, nors mes ir pakeitėme kintamojo vardas reikšmę objekte &#039;&#039;Jonas&#039;&#039;. Taip pasireiškia viena iš pagrindinių objekto savybių - kiekvienas objektas turi savo kintamuosius ir jų reikšmės yra atskirtos nuo kitų, tos pačios klasės pagrindu sukurtų objektų. Yra tam tikrų šios taisyklės išimčių, bet jas paklabėsime kitose temose.  &lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=571</id>
		<title>Knyga/Klasės</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=571"/>
		<updated>2025-01-16T07:54:31Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Klasės ===&lt;br /&gt;
Pitonas yra objektinė programavimo kalba, tad, iš principo, viskas, kas naudojama pitone yra objektas, su visais jam priklausančiais kitamaisiais bei metodais. &#039;&#039;&#039;Klasė&#039;&#039;&#039; yra tarsi brėžinys/maketas (angliškai - &#039;&#039;blueprint&#039;&#039;), pagal kurį yra kuriami objektai. Klasėse yra apibrėžiama objekto struktūra (kintamieji) ir jo funkcionalumas (angliškai - behaviour). Klasės inkapsuliuoja duomenis ir funkcionalumus, skatina kodo pernaudojamumą ir moduliškumą. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inkapsuliacija&#039;&#039;&#039; – tai vienas iš pagrindinių objektinio programavimo principų ir viena svarbiausių klasės užduočių. Programavime inkapsuliacija suprantama, kaip tiesioginės prieigos prie tam tikrų duomenų ar metodų apribojimas. Paprastai pasakius, tai reiškia, kad tam tikra informacija ar funkcionalumas nėra prieinamas vartotojui, naudojančiam objektą, pavyzdžiui, apribojama vartotojo teisė matyti/keisti objekto ID kintamąjį, sukūrimo laiką, ir pan. Inkapsuliacijos naudojimas yra itin svarbus, kai yra siekiama apsaugoti tam tikrus jautrius duomenis nuo pakeitimų.  &lt;br /&gt;
&lt;br /&gt;
Atkreipikime dėmesį į tai, kad yra naudojamas naujas terminas – &#039;&#039;&#039;metodas&#039;&#039;&#039;. Metodu vadiname funkciją, kai ji priklauso kokiai nors klasei. Tai yra nuo seno įsišaknijęs terminas, leidžiantis atskirti, kam priklauso funkcija – ar ji yra taikoma  pati savaime, ar priklauso klasei/objektui.  &lt;br /&gt;
&lt;br /&gt;
==== Klasės struktūra ====&lt;br /&gt;
Kiekviena klasė pitone prasideda nuo raktažodžio &#039;&#039;class&#039;&#039;. Kode klasės deklaravimas atrodo taip: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Susipažinome su klasės deklaravimu, bet kas sudaro pačią klasę? Klasė susideda iš jai priklausančių kintamųjų ir metodų. Iš esmės kiekviena klasė turės savo kintamuosius ir metodus, kadangi tuščia klasė (išskyrus tam tikrus specifinius atvejus) iš esmės neturi jokios prasmės ir neatlieka savo pagrindinės funkcijos – skatinti kodo pernaudojamumą bei moduliškumą. Tikra klasė turėtų atrodyti maždaug taip: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = None&lt;br /&gt;
&lt;br /&gt;
     def pakeisti_vardą(self, naujas_vardas):&lt;br /&gt;
           Self.vardas= naujas_vardas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kaip matome, yra deklaruota klasė Žmogus, ji turi du kintamuosius &#039;&#039;&#039;vardas&#039;&#039;&#039; ir &#039;&#039;&#039;amžius&#039;&#039;&#039; bei metodą &#039;&#039;&#039;pakeisti_vardą()&#039;&#039;&#039;, kuris kaip parametrą (&#039;&#039;naujas_vardas&#039;&#039;) priima tekstinę eilutę su vardu ir juo pakeičia klasės kintamąjį &#039;&#039;&#039;vardas&#039;&#039;&#039;. Viskas kas yra aprašyta po klasės deklaracija, priklauso klasei, nesvarbu, ar tai būtų kintamieji, ar metodai.   &lt;br /&gt;
&lt;br /&gt;
==== Objekto sukūrimas ====&lt;br /&gt;
Kiekviena klasė turi specialų metodą, pavadinimu konstruktorius (angliškai - constructor), kurio paskirtis – kurti objektus, atitinkančios tos klasės struktūrą, priskirti jo kintamiesiems vertes. Jis visada iškviečiamas kaip metodas su klasės pavadinimu - &#039;&#039;klasėsPavadinimas()&#039;&#039;. Konstruktorius yra dviejų rūšių - numatytasis ir deklaruotas. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Numatytasis konstruktorius&#039;&#039;&#039; – tai konstruktorius, kurį kiekvienai klasei suteikia pats pitonas, jeigu programuotojas nedeklaruoja kitokio konstruktoriaus. Pagrindinė šio konstruktoriaus paskirtis – sukurti objektą, tačiau jis neatlieka jokių kitų veiksmų - nepriskiria jokių kintamųjų verčių, jų neapdoroja ir pan. Tai reiškia, kad tuo atveju, jeigu klasės kintamieji neturi priskirtų verčių, tai ir sukurto objekto kintamieji tų verčių neturės. Pavyzdžiui turime klasę: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = None&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kaip matome, kintamieji neturi jokios reikšmės, tą indikuoja raktažodis None. Norint šios klasės pagrindu sukurti objektą, mes turime iškviesti numatytąjį konstruktorių: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Tokiu būdu sukuriamas Žmogus tipo objektas ir priskiriamas kintamajam Jonas. Objektas Jonas turi visus klasės kintamuosius, t. y. Jonas turi &#039;&#039;vardas&#039;&#039; ir &#039;&#039;amžius&#039;&#039;, bei jų abiejų reikšmės turėtų sutapti su klasėje nurodytomis reikšmėmis. Tą patikrinti galime tokiu būdu: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = 24&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”)&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šis kodas į terminalą išves dvi eilutes:  &lt;br /&gt;
&lt;br /&gt;
“Vardas: None” &lt;br /&gt;
&lt;br /&gt;
“Amžius: 24” &lt;br /&gt;
&lt;br /&gt;
Taigi, matome, kad objektas &#039;&#039;Jonas&#039;&#039; turi tuos pačius kintamuosius ir reikšmes, kokios yra priskirtos kintamiesiems klasėje.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deklaruotasis konstruktorius –&#039;&#039;&#039; tai yra konstruktorius, kuris yra aprašomas programuotojo. Priešingai negu numatytasis konstruktorius, šis konstruktorius gali atlikti papildomus veiksmus kuriant objektą, pavyzdžiui, užpildo objekto kintamuosius duomenimis, atlieka papildomus veiksmus (išspausdina kintamųjų reikšmes, iškviečia reikalingus metodus, sukuria papildomus objektus ir pan.). Tokio tipo konstruktorius kode yra deklaruojamas pavadinimu &#039;&#039;__init__()&#039;&#039;, o per jo parametrus nurodome, kokias reikšmes šis konstruktorius priima ir jas priskiria kuriamo objekto kintamiesiems: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = 24&lt;br /&gt;
     def __init__(self, vardas, amžius):&lt;br /&gt;
           self.vardas = vardas&lt;br /&gt;
           self.amžius = amžius&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”)&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kaip matome, konstruktorius reikalauja dviejų parametrų - &#039;&#039;&#039;vardas&#039;&#039;&#039; ir &#039;&#039;&#039;amžius&#039;&#039;&#039;. Jis taip pat turi specialų &#039;&#039;&#039;self&#039;&#039;&#039; parametrą, bet jo paduoti konstruktoriui nereikia, jis leidžia konstruktoriui pasiekti objekto kintamuosius ir metodus prieš priskiriant objektą kintamajam. Kurdami objektą &#039;&#039;&#039;&#039;&#039;Jonas&#039;&#039;&#039;&#039;&#039;, konstruktoriui mes paduodame tekstinę eilutę su vardu “Jonas” bei skaičių “14”. Kodo vykdymo pabaigoje bus išspausdintos objekto &#039;&#039;&#039;&#039;&#039;Jonas&#039;&#039;&#039;&#039;&#039; kintamųjų &#039;&#039;&#039;vardas&#039;&#039;&#039; ir &#039;&#039;&#039;amžius&#039;&#039;&#039; vertės - “Vardas: Jonas” ir “Amžius: 14”. Taigi, deklaruotasis konstruktorius, priešingai negu numatytasis, sukūrė objektą su programuotojo numatytomis kintamųjų reikšmėmis. Deklaruotasis konstruktorius gali turėti faktiškai neribotą kiekį parametrų, kuriuos gali priimti ir priskirti objekto kintamiesiems, tačiau vadovaujantis gerosiomis programavimo praktikomis, konstruktorius neturėtų priimti daugiau kaip penkis parametrus. &lt;br /&gt;
&lt;br /&gt;
Paminėtina ir tai, kad konstruktoriuje galima nurodyti numatytąsias reikšmes kintamiesiems, kurios bus priskirtos, jeigu programuotojas nepaduoda jokių parametrų, kviesdamas deklaruotąjį konstruktorių: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = 24&lt;br /&gt;
     def __init__(self, vardas=&amp;quot;Bevardis&amp;quot;, amžius=0):&lt;br /&gt;
           self.vardas = vardas&lt;br /&gt;
           self.amžius = amžius&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”)&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kode aprašytas konstruktorius reikalauja dviejų parametrų - vardas ir amžius, bet abu parametrai turi priskirtą numatytąją reikšmę - &amp;quot;&#039;&#039;Bevardis&#039;&#039;&amp;quot; ir &#039;&#039;0&#039;&#039;. Tą indikuoja lygybės ženklas ir pageidaujama tekstinė eilutė (parametro vardas atveju) ir skaičius (parametro amžius atveju). Kodo vykdymo pabaigoje bus išspausdintos objekto Jonas kintamųjų Vardas ir Amžius vertės - “Vardas: Bevardis” ir “Amžius: 0”. Kadangi deklaruotasis konstruktrius negavo jokių parametrų, jis kintamiesiems priskyrė konstruktoriuje nurodytas numatytąsias vertes. &lt;br /&gt;
&lt;br /&gt;
==== Klasės metodų naudojimas ====&lt;br /&gt;
Kaip jau minėta anksčiau, klasės gali turėti savo metodus. Metodai taip pat yra pasiekiami objekto, ir gali būti naudojami: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = 24&lt;br /&gt;
     &lt;br /&gt;
     def pakeisti_vardą(self, naujas_vardas):&lt;br /&gt;
          self.vardas = naujas_vardas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus()&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas iki pakeitimo:  {Jonas.Vardas}”)&lt;br /&gt;
&lt;br /&gt;
Jonas.pakeisti_vardą(“Jonas”)&lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas po pakeitimo:  {Jonas.Vardas}”)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas taip pat išves dvi eilutes, vardo reikšmę prieš pakeisti_vardą () metodo kvietimą, ir po jo: &lt;br /&gt;
&lt;br /&gt;
“Vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Vardas po pakeitimo: Jonas” &lt;br /&gt;
&lt;br /&gt;
Svarbu paminėti tai, kad vardas yra pakeičiamas tik objekto “Jonas” kontekste, t. y., jeigu turėsime objektą “Petras”, objekto Jonas iškviesta funkcija pakeisti_vardą(“Jonas”), ji nepakeis kintamojo Vardas objekte Petras. Pažiūrėkime, kaip tai atrodo kode: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Def pakeisti_vardą(self, naujas_vardas): &lt;br /&gt;
&lt;br /&gt;
Self.vardas= naujas_vardas &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Petras  = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Jonas vardas iki pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Petras vardas iki pakeitimo:  {Petras.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Jonas.pakeisti_vardą(“Jonas”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Jonas vardas po pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Petras vardas po pakeitimo:  {Petras.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas taip pat išves keturias eilutes, abiejų objektų kintamojo Vardas reikšmę prieš pakeisti_vardą() metodo kvietimą, ir po jo: &lt;br /&gt;
&lt;br /&gt;
“Objekto Jonas vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Objekto Petras vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Objekto Jonas vardas po pakeitimo: Jonas” &lt;br /&gt;
&lt;br /&gt;
“Objekto Petras vardas po pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
Kaip matome, Petras objektui priklausantis kintamasis Vardas nebuvo pakeistas, nors mes ir pakeitėme kintamojo Vardas reikšmę objekte Jonas. Taip pasireiškia viena iš pagrindinių objekto savybių - kiekvienas objektas turi savo kintamuosius ir jų reikšmės yra atskirtos nuo kitų, tos pačios klasės pagrindu sukurtų objektų. Yra tam tikrų šios taisyklės išimčių, bet apie juos šiuo metu nekalbėsime.  &lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=570</id>
		<title>Knyga/Klasės</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=570"/>
		<updated>2025-01-16T06:26:32Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Klasės ===&lt;br /&gt;
Pitonas yra objektinė programavimo kalba, tad, iš principo, viskas, kas naudojama pitone yra objektas, su visais jam priklausančiais kitamaisiais bei metodais. &#039;&#039;&#039;Klasė&#039;&#039;&#039; yra tarsi brėžinys/maketas (angliškai - &#039;&#039;blueprint&#039;&#039;), pagal kurį yra kuriami objektai. Klasėse yra apibrėžiama objekto struktūra (kintamieji) ir jo funkcionalumas (angliškai - behaviour). Klasės inkapsuliuoja duomenis ir funkcionalumus, skatina kodo pernaudojamumą ir moduliškumą. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inkapsuliacija&#039;&#039;&#039; – tai vienas iš pagrindinių objektinio programavimo principų ir viena svarbiausių klasės užduočių. Programavime inkapsuliacija suprantama, kaip tiesioginės prieigos prie tam tikrų duomenų ar metodų apribojimas. Paprastai pasakius, tai reiškia, kad tam tikra informacija ar funkcionalumas nėra prieinamas vartotojui, naudojančiam objektą, pavyzdžiui, apribojama vartotojo teisė matyti/keisti objekto ID kintamąjį, sukūrimo laiką, ir pan. Inkapsuliacijos naudojimas yra itin svarbus, kai yra siekiama apsaugoti tam tikrus jautrius duomenis nuo pakeitimų.  &lt;br /&gt;
&lt;br /&gt;
Atkreipikime dėmesį į tai, kad yra naudojamas naujas terminas – &#039;&#039;&#039;metodas&#039;&#039;&#039;. Metodu vadiname funkciją, kai ji priklauso kokiai nors klasei. Tai yra nuo seno įsišaknijęs terminas, leidžiantis atskirti, kam priklauso funkcija – ar ji yra taikoma  pati savaime, ar priklauso klasei/objektui.  &lt;br /&gt;
&lt;br /&gt;
==== Klasės struktūra ====&lt;br /&gt;
Kiekviena klasė pitone prasideda nuo raktažodžio &#039;&#039;class&#039;&#039;. Kode klasės deklaravimas atrodo taip: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class MyClass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Susipažinome su klasės deklaravimu, bet kas sudaro pačią klasę? Klasė susideda iš jai priklausančių kintamųjų ir metodų. Iš esmės kiekviena klasė turės savo kintamuosius ir metodus, kadangi tuščia klasė (išskyrus tam tikrus specifinius atvejus) iš esmės neturi jokios prasmės ir neatlieka savo pagrindinės funkcijos – skatinti kodo pernaudojamumą bei moduliškumą. Tikra klasė turėtų atrodyti maždaug taip: &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class Žmogus:&lt;br /&gt;
&lt;br /&gt;
     vardas = None&lt;br /&gt;
     amžius = None&lt;br /&gt;
&lt;br /&gt;
     def pakeisti_vardą(self, naujas_vardas):&lt;br /&gt;
           Self.vardas= naujas_vardas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kaip matome, yra deklaruota klasė Žmogus, ji turi du kintamuosius &#039;&#039;&#039;vardas&#039;&#039;&#039; ir &#039;&#039;&#039;amžius&#039;&#039;&#039; bei metodą &#039;&#039;&#039;pakeisti_vardą()&#039;&#039;&#039;, kuris kaip parametrą (&#039;&#039;naujas_vardas&#039;&#039;) priima tekstinę eilutę su vardu ir juo pakeičia klasės kintamąjį &#039;&#039;&#039;vardas&#039;&#039;&#039;. Viskas kas yra aprašyta po klasės deklaracija, priklauso klasei, nesvarbu, ar tai būtų kintamieji, ar metodai.   &lt;br /&gt;
&lt;br /&gt;
==== Objektas ====&lt;br /&gt;
Kiekviena klasė turi specialų metodą, pavadinimu konstruktorius (angliškai - constructor), kurio paskirtis – kurti objektus, atitinkančios tos klasės struktūrą, priskirti jo kintamiesiems vertes. Jo pavadinimas visada sutampa su klasės pavadinimu - &#039;&#039;klasėsPavadinimas()&#039;&#039;. Konstruktorius yra dviejų rūšių - numatytasis ir deklaruotas. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Numatytasis konstruktorius&#039;&#039;&#039; – tai konstruktorius, kurį kiekvienai klasei suteikia pats pitonas, jeigu programuotojas nedeklaruoja kitokio konstruktoriaus. Pagrindinė šio konstruktoriaus paskirtis – sukurti objektą, tačiau jis neatlieka jokių kitų veiksmų - nepriskiria jokių kintamųjų verčių, jų neapdoroja ir pan. Tai reiškia, kad tuo atveju, jeigu klasės kintamieji neturi priskirtų verčių, tai ir sukurto objekto kintamieji tų verčių neturės. Pavyzdžiui turime klasę: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Kaip matome, kintamieji neturi jokios reikšmės, tą indikuoja raktažodis None. Norint šios klasės pagrindu sukurti objektą, mes turime iškviesti numatytąjį konstruktorių: &lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Tokiu būdu sukuriamas Žmogus tipo objektas ir priskiriamas kintamajam Jonas. Objektas Jonas turi visus klasės kintamuosius, t. y. Jonas turi Vardas ir Amžius, ir jų abiejų reikšmės turėtų sutapti su klasėje nurodytomis reikšmėmis. Tą patikrinti galime tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = 24 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas į konsolę išves dvi eilutes:  &lt;br /&gt;
&lt;br /&gt;
“Vardas: None” &lt;br /&gt;
&lt;br /&gt;
“Amžius: 24” &lt;br /&gt;
&lt;br /&gt;
Taigi, matome, kad objektas turi tuos pačius kintamuosius ir tas pačias reikšmes, kokios yra priskirtos kintamiesiems klasėje.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deklaruotasis konstruktorius –&#039;&#039;&#039; tai yra konstruktorius, kuris yra aprašomas programuotojo. Priešingai negu numatytasis konstruktorius, šis konstruktorius gali atlikti papildomus veiksmus kuriant objektą, pavyzdžiui, užpildo objekto kintamuosius duomenimis, atlieka papildomus veiksmus (išspausdina kintamųjų reikšmes, iškviečia reikalingus metodus, sukuria papildomus objektus ir pan.). Tokio tipo konstruktorius kode yra deklaruojamas pavadinimu __init__(), o per jo parametrus nurodome, kokias reikšmes šis konstruktorius priima ir jas priskira kuriamam objektui: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Def __init__(self, vardas, amžius) &lt;br /&gt;
&lt;br /&gt;
self.Vardas = vardas &lt;br /&gt;
&lt;br /&gt;
self.Amžius = amžius &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus(“jonas”, 14) &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, konstruktorius reikalauja dviejų parametrų - vardas ir amžius. Kurdami objektą Jonas, konstruktoriui mes paduodame tekstinę eilutę su vardu “Jonas” bei skaičių “14”. Kodo vykdymo pabaigoje bus išspausdintos objekto Jonas kintamųjų Vardas ir Amžius vertės - “Vardas: Jonas” ir “Amžius: 14”. Taigi, deklaruotasis konstruktorius, priešingai negu numatytasis, sukūrė objektą su programuotojo numatytomis kintamųjų reikšmėmis. Deklaruotasis konstruktorius gali turėti faktiškai neribotą kiekį parametrų, kuriuos gali priimti ir priskirti objekto kintamiesiems, tačiau vadovaujantis gerosiomis programavimo praktikomis, konstruktorius neturėtų priimti daugiau kaip penkis parametrus. &lt;br /&gt;
&lt;br /&gt;
Paminėtina ir tai, kad konstruktoriuje galima nurodyti numatytąsias reikšmes kintamiesiems, jeigu programuotojas nepaduoda jokių parametrų, kviesdamas deklaruotąjį konstruktorių: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Def __init__(self, vardas=”Bevardis”, amžius=0) &lt;br /&gt;
&lt;br /&gt;
self.Vardas = vardas &lt;br /&gt;
&lt;br /&gt;
self.Amžius = amžius &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Kode aprašytas konstruktorius reikalauja dviejų parametrų - vardas ir amžius, bet abu parametrai turi priskirtą numatytąją reikšmę. Tą indikuoja lygybės ženklas ir tekstinė eilutė (parametro vardas atveju) ir skaičius (parametro amžius atveju). Kodo vykdymo pabaigoje bus išspausdintos objekto Jonas kintamųjų Vardas ir Amžius vertės - “Vardas: Bevardis” ir “Amžius: 0”. Kadangi deklaruotasis konstruktrius negavo jokių parametrų, jis kintamiesiems priskyrė konstruktoriuje nurodytas numatytąsias vertes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip jau minėta anksčiau, klasės gali turėti savo metodus. Metodai taip pat yra pasiekiami objekto, ir gali būti naudojami: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Def pakeisti_vardą(self, naujas_vardas): &lt;br /&gt;
&lt;br /&gt;
Self.vardas= naujas_vardas &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas iki pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Jonas.pakeisti_vardą(“Jonas”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas po pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Šis kodas taip pat išves dvi eilutes, vardo reikšmę prieš pakeisti_vardą () metodo kvietimą, ir po jo: &lt;br /&gt;
&lt;br /&gt;
“Vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Vardas po pakeitimo: Jonas” &lt;br /&gt;
&lt;br /&gt;
Svarbu paminėti tai, kad vardas yra pakeičiamas tik objekto “Jonas” kontekste, t. y., jeigu turėsime objektą “Petras”, objekto Jonas iškviesta funkcija pakeisti_vardą(“Jonas”), ji nepakeis kintamojo Vardas objekte Petras. Pažiūrėkime, kaip tai atrodo kode: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Def pakeisti_vardą(self, naujas_vardas): &lt;br /&gt;
&lt;br /&gt;
Self.vardas= naujas_vardas &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Petras  = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Jonas vardas iki pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Petras vardas iki pakeitimo:  {Petras.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Jonas.pakeisti_vardą(“Jonas”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Jonas vardas po pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Petras vardas po pakeitimo:  {Petras.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas taip pat išves keturias eilutes, abiejų objektų kintamojo Vardas reikšmę prieš pakeisti_vardą() metodo kvietimą, ir po jo: &lt;br /&gt;
&lt;br /&gt;
“Objekto Jonas vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Objekto Petras vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Objekto Jonas vardas po pakeitimo: Jonas” &lt;br /&gt;
&lt;br /&gt;
“Objekto Petras vardas po pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
Kaip matome, Petras objektui priklausantis kintamasis Vardas nebuvo pakeistas, nors mes ir pakeitėme kintamojo Vardas reikšmę objekte Jonas. Taip pasireiškia viena iš pagrindinių objekto savybių - kiekvienas objektas turi savo kintamuosius ir jų reikšmės yra atskirtos nuo kitų, tos pačios klasės pagrindu sukurtų objektų. Yra tam tikrų šios taisyklės išimčių, bet apie juos šiuo metu nekalbėsime.  &lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=569</id>
		<title>Knyga/Klasės</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=569"/>
		<updated>2025-01-16T06:18:56Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Klasės ===&lt;br /&gt;
Klasės &lt;br /&gt;
&lt;br /&gt;
Pitonas yra objektinė programavimo kalba, tad faktiškai viskas, kas naudojama pitone yra objektas, su visais jam priklausančiais kitamaisiais bei metodais. &#039;&#039;&#039;Klasė&#039;&#039;&#039; yra tarsi brėžinys/maketas (angliškai - &#039;&#039;blueprint&#039;&#039;), pagal kurį yra kuriami objektai. Klasėse yra apibrėžiama objekto struktūra (kintamieji) ir jo funkcionalumas (angliškai - behaviour). Klasės inkapsuliuoja duomenis ir funkcionalumus, skatina kodo pernaudojamumą ir moduliškumą. &lt;br /&gt;
&lt;br /&gt;
Inkapsuliacija – tai vienas iš pagrindinių objektinio programavimo principų ir viena svarbiausių klasės užduočių. Programavime inkapsuliacija suprantama, kaip tiesioginės prieigos prie tam tikrų duomenų ar metodų apribojimas. Paprastai pasakius, tai reiškia, kad tam tikra informacija ar funkcionalumas nėra prieinamas vartotojui, naudojančiam objektą, pavyzdžiui, apribojama vartotojo teisė matyti/keisti objekto ID kintamąjį, sukūrimo laiką, ir pan. Inkapsuliacijos naudojimas yra itin svarbus, kai yra siekiama apsaugoti tam tikrus jautrius duomenis nuo pakeitimų.  &lt;br /&gt;
&lt;br /&gt;
Atkreipikime dėmesį į tai, kad yra naudojamas naujas terminas – &#039;&#039;&#039;metodas&#039;&#039;&#039;. Metodu vadiname funkciją, kai ji priklauso kokiai nors klasei. Tai yra nuo seno įsišaknijęs terminas, leidžiantis atskirti, kam priklauso funkcija – ar ji yra taikoma  pati savaime, ar priklauso klasei/objektui.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Klasės struktūra &lt;br /&gt;
&lt;br /&gt;
Kiekviena klasė pitone prasideda nuo raktažodžio &#039;&#039;class&#039;&#039;. Kode klasės deklaravimas atrodo taip: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;class MyClass&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Susipažinome su klasės deklaravimu, bet kas sudaro pačią klasę? Klasė susideda iš jai priklausančių kintamųjų ir metodų. Iš esmės kiekviena klasė turės savo kintamuosius ir metodus, kadangi tuščia klasė (išskyrus tam tikrus specifinius atvejus) iš esmės neturi jokios prasmės ir neatlieka savo pagrindinės funkcijos – skatinti kodo pernaudojamumą bei moduliškumą. Tikra klasė turėtų atrodyti maždaug taip: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amzius = None &lt;br /&gt;
&lt;br /&gt;
Def pakeisti_vardą(self, naujas_vardas): &lt;br /&gt;
&lt;br /&gt;
Self.vardas= naujas_vardas &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, yra deklaruota klasė Žmogus, ji turi du kintamuosius vardas ir amžius bei metodą pakeisti_vardą(), kuris kaip parametrą (&#039;&#039;naujas_vardas&#039;&#039;) priima naują tekstinę eilutę su vardu ir juo pakeičia klasės kintamąjį &#039;&#039;vardas&#039;&#039;. Viskas kas yra aprašyta po klasės deklaracija, priklauso klasei, ar tai būtų kintamieji, ar  metodai.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Objektas &lt;br /&gt;
&lt;br /&gt;
Kiekviena klasė turi specialų metodą, pavadinimu konstruktorius (angliškai - constructor), kurio paskirtis – kurti objektus, atitinkančios tos klasės struktūrą, priskirti jo kintamiesiems vertes. Jo pavadinimas visada sutampa su klasės pavadinimu - &#039;&#039;klasėsPavadinimas()&#039;&#039;. Konstruktorius yra dviejų rūšių - numatytasis ir deklaruotas. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Numatytasis konstruktorius&#039;&#039;&#039; – tai konstruktorius, kurį kiekvienai klasei suteikia pats pitonas, jeigu programuotojas nedeklaruoja kitokio konstruktoriaus. Pagrindinė šio konstruktoriaus paskirtis – sukurti objektą, tačiau jis neatlieka jokių kitų veiksmų - nepriskiria jokių kintamųjų verčių, jų neapdoroja ir pan. Tai reiškia, kad tuo atveju, jeigu klasės kintamieji neturi priskirtų verčių, tai ir sukurto objekto kintamieji tų verčių neturės. Pavyzdžiui turime klasę: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Kaip matome, kintamieji neturi jokios reikšmės, tą indikuoja raktažodis None. Norint šios klasės pagrindu sukurti objektą, mes turime iškviesti numatytąjį konstruktorių: &lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Tokiu būdu sukuriamas Žmogus tipo objektas ir priskiriamas kintamajam Jonas. Objektas Jonas turi visus klasės kintamuosius, t. y. Jonas turi Vardas ir Amžius, ir jų abiejų reikšmės turėtų sutapti su klasėje nurodytomis reikšmėmis. Tą patikrinti galime tokiu būdu: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = 24 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas į konsolę išves dvi eilutes:  &lt;br /&gt;
&lt;br /&gt;
“Vardas: None” &lt;br /&gt;
&lt;br /&gt;
“Amžius: 24” &lt;br /&gt;
&lt;br /&gt;
Taigi, matome, kad objektas turi tuos pačius kintamuosius ir tas pačias reikšmes, kokios yra priskirtos kintamiesiems klasėje.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deklaruotasis konstruktorius –&#039;&#039;&#039; tai yra konstruktorius, kuris yra aprašomas programuotojo. Priešingai negu numatytasis konstruktorius, šis konstruktorius gali atlikti papildomus veiksmus kuriant objektą, pavyzdžiui, užpildo objekto kintamuosius duomenimis, atlieka papildomus veiksmus (išspausdina kintamųjų reikšmes, iškviečia reikalingus metodus, sukuria papildomus objektus ir pan.). Tokio tipo konstruktorius kode yra deklaruojamas pavadinimu __init__(), o per jo parametrus nurodome, kokias reikšmes šis konstruktorius priima ir jas priskira kuriamam objektui: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Def __init__(self, vardas, amžius) &lt;br /&gt;
&lt;br /&gt;
self.Vardas = vardas &lt;br /&gt;
&lt;br /&gt;
self.Amžius = amžius &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus(“jonas”, 14) &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip matome, konstruktorius reikalauja dviejų parametrų - vardas ir amžius. Kurdami objektą Jonas, konstruktoriui mes paduodame tekstinę eilutę su vardu “Jonas” bei skaičių “14”. Kodo vykdymo pabaigoje bus išspausdintos objekto Jonas kintamųjų Vardas ir Amžius vertės - “Vardas: Jonas” ir “Amžius: 14”. Taigi, deklaruotasis konstruktorius, priešingai negu numatytasis, sukūrė objektą su programuotojo numatytomis kintamųjų reikšmėmis. Deklaruotasis konstruktorius gali turėti faktiškai neribotą kiekį parametrų, kuriuos gali priimti ir priskirti objekto kintamiesiems, tačiau vadovaujantis gerosiomis programavimo praktikomis, konstruktorius neturėtų priimti daugiau kaip penkis parametrus. &lt;br /&gt;
&lt;br /&gt;
Paminėtina ir tai, kad konstruktoriuje galima nurodyti numatytąsias reikšmes kintamiesiems, jeigu programuotojas nepaduoda jokių parametrų, kviesdamas deklaruotąjį konstruktorių: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Def __init__(self, vardas=”Bevardis”, amžius=0) &lt;br /&gt;
&lt;br /&gt;
self.Vardas = vardas &lt;br /&gt;
&lt;br /&gt;
self.Amžius = amžius &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f&amp;quot;Amžius: {Jonas.Amžius}&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Kode aprašytas konstruktorius reikalauja dviejų parametrų - vardas ir amžius, bet abu parametrai turi priskirtą numatytąją reikšmę. Tą indikuoja lygybės ženklas ir tekstinė eilutė (parametro vardas atveju) ir skaičius (parametro amžius atveju). Kodo vykdymo pabaigoje bus išspausdintos objekto Jonas kintamųjų Vardas ir Amžius vertės - “Vardas: Bevardis” ir “Amžius: 0”. Kadangi deklaruotasis konstruktrius negavo jokių parametrų, jis kintamiesiems priskyrė konstruktoriuje nurodytas numatytąsias vertes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kaip jau minėta anksčiau, klasės gali turėti savo metodus. Metodai taip pat yra pasiekiami objekto, ir gali būti naudojami: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Def pakeisti_vardą(self, naujas_vardas): &lt;br /&gt;
&lt;br /&gt;
Self.vardas= naujas_vardas &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas iki pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Jonas.pakeisti_vardą(“Jonas”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Vardas po pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Šis kodas taip pat išves dvi eilutes, vardo reikšmę prieš pakeisti_vardą () metodo kvietimą, ir po jo: &lt;br /&gt;
&lt;br /&gt;
“Vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Vardas po pakeitimo: Jonas” &lt;br /&gt;
&lt;br /&gt;
Svarbu paminėti tai, kad vardas yra pakeičiamas tik objekto “Jonas” kontekste, t. y., jeigu turėsime objektą “Petras”, objekto Jonas iškviesta funkcija pakeisti_vardą(“Jonas”), ji nepakeis kintamojo Vardas objekte Petras. Pažiūrėkime, kaip tai atrodo kode: &lt;br /&gt;
&lt;br /&gt;
Class Žmogus: &lt;br /&gt;
&lt;br /&gt;
Vardas = None &lt;br /&gt;
&lt;br /&gt;
Amžius = None &lt;br /&gt;
&lt;br /&gt;
Def pakeisti_vardą(self, naujas_vardas): &lt;br /&gt;
&lt;br /&gt;
Self.vardas= naujas_vardas &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jonas = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Petras  = Žmogus() &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Jonas vardas iki pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Petras vardas iki pakeitimo:  {Petras.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Jonas.pakeisti_vardą(“Jonas”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Jonas vardas po pakeitimo:  {Jonas.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
Print(f“Objekto Petras vardas po pakeitimo:  {Petras.Vardas}”) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šis kodas taip pat išves keturias eilutes, abiejų objektų kintamojo Vardas reikšmę prieš pakeisti_vardą() metodo kvietimą, ir po jo: &lt;br /&gt;
&lt;br /&gt;
“Objekto Jonas vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Objekto Petras vardas iki pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
“Objekto Jonas vardas po pakeitimo: Jonas” &lt;br /&gt;
&lt;br /&gt;
“Objekto Petras vardas po pakeitimo: None” &lt;br /&gt;
&lt;br /&gt;
Kaip matome, Petras objektui priklausantis kintamasis Vardas nebuvo pakeistas, nors mes ir pakeitėme kintamojo Vardas reikšmę objekte Jonas. Taip pasireiškia viena iš pagrindinių objekto savybių - kiekvienas objektas turi savo kintamuosius ir jų reikšmės yra atskirtos nuo kitų, tos pačios klasės pagrindu sukurtų objektų. Yra tam tikrų šios taisyklės išimčių, bet apie juos šiuo metu nekalbėsime.  &lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=558</id>
		<title>Knyga/Klasės</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Klas%C4%97s&amp;diff=558"/>
		<updated>2025-01-08T10:58:14Z</updated>

		<summary type="html">&lt;p&gt;Audrius: Naujas puslapis: === Klasės ===&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Klasės ===&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=557</id>
		<title>Knyga</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=557"/>
		<updated>2025-01-07T12:50:17Z</updated>

		<summary type="html">&lt;p&gt;Audrius: /* Integruotosios funkcijos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Vadovėlis}}&lt;br /&gt;
[[Category:Knyga]]&lt;br /&gt;
&lt;br /&gt;
Tai - standartinės Python programavimo kalbos vadovėlis, išverstas iš [https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3 Non programmer&#039;s Tutorial for Python 3] ir adaptuotas Lietuvos mokykloms.&lt;br /&gt;
&lt;br /&gt;
Šis vadovėlis yra atvirojo kodo, [https://www.gnu.org/licenses/gpl-3.0.html GPL v3] licencija.&lt;br /&gt;
&lt;br /&gt;
==Turinys==&lt;br /&gt;
&lt;br /&gt;
=== Python vadovėlis ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Autoriai|Autoriai]] ====&lt;br /&gt;
: Originalaus (angliško) vadovėlio autoriai ir vertėjai į lietuvių kalbą.&lt;br /&gt;
&lt;br /&gt;
==== [[/Įžanga|Įžanga]] ====&lt;br /&gt;
: Įžanginiai žodžiai&lt;br /&gt;
&lt;br /&gt;
==== [[/Įvadas|Įvadas]] ====&lt;br /&gt;
: Python&#039;o diegimas ir naudojimas&lt;br /&gt;
&lt;br /&gt;
=== Pagrindai ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Labas, Pasauli|Labas, Pasauli]] ====&lt;br /&gt;
: Spausdinimas ir aritmetika. Garsioji pirmoji programa &amp;amp;ndash; ekrano išvestis &amp;amp;ndash; skaičiai ir skaičiavimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Kas čia eina?|Kas čia eina?]] ====&lt;br /&gt;
: Kintamieji ir įvestis. Interaktyvi įvestis &amp;amp;ndash; tekstinė eilutė&lt;br /&gt;
&lt;br /&gt;
==== [[/Pasirinkimai|Pasirinkimai]] ====&lt;br /&gt;
: &amp;lt;tt&amp;gt;if, else&amp;lt;/tt&amp;gt; sakiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Loginiai reiškiniai|Loginiai reiškiniai]] ====&lt;br /&gt;
: Kompiuterinė logika &amp;amp;ndash; &amp;lt;tt&amp;gt;True&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;False&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;and&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;or&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;not&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Ciklai For|Ciklai For]] ====&lt;br /&gt;
: for ir range. Dar vienos rūšies ciklai&lt;br /&gt;
&lt;br /&gt;
==== [[/Suskaičiuoti iki 10|Suskaičiuoti iki 10]] ====&lt;br /&gt;
: Ciklai &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Įdėtiniai ciklai ir sąlygos|Įdėtiniai ciklai ir sąlygos]] ====&lt;br /&gt;
: Ciklas cikle, ifas ife&lt;br /&gt;
&lt;br /&gt;
==== [[/Funkcijų apibrėžimas|Funkcijų apibrėžimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Programų struktūrizavimas naudojant funkcijas&lt;br /&gt;
&lt;br /&gt;
==== [[/Sąrašai|Sąrašai]] ====&lt;br /&gt;
&lt;br /&gt;
: Kintamieji, kuriuose yra daugiau nei viena reikšmė&lt;br /&gt;
&lt;br /&gt;
==== [[Knyga/Integruotosios funkcijos|Integruotosios funkcijos]] ====&lt;br /&gt;
: Pitono kalboje integruotos funkcijos, palengvinančios kasdienes operacijas&lt;br /&gt;
&lt;br /&gt;
=== Išplėstinė madžiaga ===&lt;br /&gt;
&lt;br /&gt;
;[[/Failų tvarkymas|Failų tvarkymas]]&lt;br /&gt;
: Skaitymas iš failų ir rašymas į failus&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: spausdinimas ir formatavimas&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: Algoritmai&lt;br /&gt;
&lt;br /&gt;
==== [[/Paieška ir Rikiavimas|Paieška ir Rikiavimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Paieška sąraše ir įvairūs rikiavimo būdai&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie sąrašus|Daugiau apie sąrašus]] ====&lt;br /&gt;
&lt;br /&gt;
: Sąrašų elementų ar dalių naudojimas&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie tekstines eilutes|Daugiau apie tekstines eilutes]] ====&lt;br /&gt;
&lt;br /&gt;
: Pažangesnės teksto manipuliacijos&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie funkcijas|Daugiau apie funkcijas]] ====&lt;br /&gt;
&lt;br /&gt;
: Parametrai, reikšmės, programos skaldymas&lt;br /&gt;
&lt;br /&gt;
==== [[/Žodynai|Žodynai]] ====&lt;br /&gt;
: Kintamieji, kuriuose yra raktų/reikšmių poros&lt;br /&gt;
&lt;br /&gt;
==== [[/Derinimas|Derinimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Išsiaiškinti, kas negerai&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: klasės&lt;br /&gt;
&lt;br /&gt;
=== Programuotojas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Rekursinės funkcijos|Rekursinės funkcijos]] ====&lt;br /&gt;
:(Beveik) stulbinantis pavyzdys, kaip programuotojai gali mąstyt&lt;br /&gt;
&lt;br /&gt;
==== [[/Modulių naudojimas|Modulių naudojimas]] ====&lt;br /&gt;
:Standartinio funkcionalumo plėtiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Siekiant tobulumo|Siekiant tobulumo]] ====&lt;br /&gt;
:Kaip tvarkyti klaidas&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
;[[/Rekursija|Rekursija]]&lt;br /&gt;
: Rekursinės funkcijos&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==== [[/Įvadas į objektinį programavimą Python 3|Įvadas į objektinį programavimą Python 3]] ====&lt;br /&gt;
:OOP pagrindai (Objektinis programavimas, angl. &#039;&#039;Object-Oriented Programming&#039;&#039;)&lt;br /&gt;
:Perkelti apie klases į kitą temą&lt;br /&gt;
&lt;br /&gt;
==== [[/Importuotos bibliotekos ir vėžlys|Importuotos bibliotekos ir vėžlys]] ====&lt;br /&gt;
:Pagrindinės funkcijos iš įvairių bibliotekų.&lt;br /&gt;
&lt;br /&gt;
==== [[/Pažangios_funkcijos|Pažangios funkcijos]] ====&lt;br /&gt;
:Lambda, sorted, filter, map... Kas tai?&lt;br /&gt;
&lt;br /&gt;
=== Verta žinoti ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Duomenų tyryba ir informacija|Duomenų tyryba ir informacija]] ====&lt;br /&gt;
:Informacija apie dirbtinį intelektą, kriptografiją ir duomenis.&lt;br /&gt;
&lt;br /&gt;
=== Epilogas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Pabaiga|Pabaiga]] ====&lt;br /&gt;
: Ką toliau daryti&lt;br /&gt;
&lt;br /&gt;
==== [[/DUK|D.U.K.]] ====&lt;br /&gt;
: Dažnai užduodami klausimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Terminai|Terminai]] ====&lt;br /&gt;
: Terminų žodynas&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=556</id>
		<title>Knyga</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga&amp;diff=556"/>
		<updated>2025-01-07T12:49:32Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Vadovėlis}}&lt;br /&gt;
[[Category:Knyga]]&lt;br /&gt;
&lt;br /&gt;
Tai - standartinės Python programavimo kalbos vadovėlis, išverstas iš [https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3 Non programmer&#039;s Tutorial for Python 3] ir adaptuotas Lietuvos mokykloms.&lt;br /&gt;
&lt;br /&gt;
Šis vadovėlis yra atvirojo kodo, [https://www.gnu.org/licenses/gpl-3.0.html GPL v3] licencija.&lt;br /&gt;
&lt;br /&gt;
==Turinys==&lt;br /&gt;
&lt;br /&gt;
=== Python vadovėlis ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Autoriai|Autoriai]] ====&lt;br /&gt;
: Originalaus (angliško) vadovėlio autoriai ir vertėjai į lietuvių kalbą.&lt;br /&gt;
&lt;br /&gt;
==== [[/Įžanga|Įžanga]] ====&lt;br /&gt;
: Įžanginiai žodžiai&lt;br /&gt;
&lt;br /&gt;
==== [[/Įvadas|Įvadas]] ====&lt;br /&gt;
: Python&#039;o diegimas ir naudojimas&lt;br /&gt;
&lt;br /&gt;
=== Pagrindai ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Labas, Pasauli|Labas, Pasauli]] ====&lt;br /&gt;
: Spausdinimas ir aritmetika. Garsioji pirmoji programa &amp;amp;ndash; ekrano išvestis &amp;amp;ndash; skaičiai ir skaičiavimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Kas čia eina?|Kas čia eina?]] ====&lt;br /&gt;
: Kintamieji ir įvestis. Interaktyvi įvestis &amp;amp;ndash; tekstinė eilutė&lt;br /&gt;
&lt;br /&gt;
==== [[/Pasirinkimai|Pasirinkimai]] ====&lt;br /&gt;
: &amp;lt;tt&amp;gt;if, else&amp;lt;/tt&amp;gt; sakiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Loginiai reiškiniai|Loginiai reiškiniai]] ====&lt;br /&gt;
: Kompiuterinė logika &amp;amp;ndash; &amp;lt;tt&amp;gt;True&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;False&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;and&amp;lt;/tt&amp;gt; ir &amp;lt;tt&amp;gt;or&amp;lt;/tt&amp;gt; &amp;amp;ndash; &amp;lt;tt&amp;gt;not&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Ciklai For|Ciklai For]] ====&lt;br /&gt;
: for ir range. Dar vienos rūšies ciklai&lt;br /&gt;
&lt;br /&gt;
==== [[/Suskaičiuoti iki 10|Suskaičiuoti iki 10]] ====&lt;br /&gt;
: Ciklai &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[/Įdėtiniai ciklai ir sąlygos|Įdėtiniai ciklai ir sąlygos]] ====&lt;br /&gt;
: Ciklas cikle, ifas ife&lt;br /&gt;
&lt;br /&gt;
==== [[/Funkcijų apibrėžimas|Funkcijų apibrėžimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Programų struktūrizavimas naudojant funkcijas&lt;br /&gt;
&lt;br /&gt;
==== [[/Sąrašai|Sąrašai]] ====&lt;br /&gt;
&lt;br /&gt;
: Kintamieji, kuriuose yra daugiau nei viena reikšmė&lt;br /&gt;
&lt;br /&gt;
==== [[Integruotosios funkcijos]] ====&lt;br /&gt;
: Pitono kalboje integruotos funkcijos, palengvinančios kasdienes operacijas&lt;br /&gt;
&lt;br /&gt;
=== Išplėstinė madžiaga ===&lt;br /&gt;
&lt;br /&gt;
;[[/Failų tvarkymas|Failų tvarkymas]]&lt;br /&gt;
: Skaitymas iš failų ir rašymas į failus&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: spausdinimas ir formatavimas&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: Algoritmai&lt;br /&gt;
&lt;br /&gt;
==== [[/Paieška ir Rikiavimas|Paieška ir Rikiavimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Paieška sąraše ir įvairūs rikiavimo būdai&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie sąrašus|Daugiau apie sąrašus]] ====&lt;br /&gt;
&lt;br /&gt;
: Sąrašų elementų ar dalių naudojimas&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie tekstines eilutes|Daugiau apie tekstines eilutes]] ====&lt;br /&gt;
&lt;br /&gt;
: Pažangesnės teksto manipuliacijos&lt;br /&gt;
&lt;br /&gt;
==== [[/Daugiau apie funkcijas|Daugiau apie funkcijas]] ====&lt;br /&gt;
&lt;br /&gt;
: Parametrai, reikšmės, programos skaldymas&lt;br /&gt;
&lt;br /&gt;
==== [[/Žodynai|Žodynai]] ====&lt;br /&gt;
: Kintamieji, kuriuose yra raktų/reikšmių poros&lt;br /&gt;
&lt;br /&gt;
==== [[/Derinimas|Derinimas]] ====&lt;br /&gt;
&lt;br /&gt;
: Išsiaiškinti, kas negerai&lt;br /&gt;
&lt;br /&gt;
==== Nauja tema ====&lt;br /&gt;
: klasės&lt;br /&gt;
&lt;br /&gt;
=== Programuotojas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Rekursinės funkcijos|Rekursinės funkcijos]] ====&lt;br /&gt;
:(Beveik) stulbinantis pavyzdys, kaip programuotojai gali mąstyt&lt;br /&gt;
&lt;br /&gt;
==== [[/Modulių naudojimas|Modulių naudojimas]] ====&lt;br /&gt;
:Standartinio funkcionalumo plėtiniai&lt;br /&gt;
&lt;br /&gt;
==== [[/Siekiant tobulumo|Siekiant tobulumo]] ====&lt;br /&gt;
:Kaip tvarkyti klaidas&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
;[[/Rekursija|Rekursija]]&lt;br /&gt;
: Rekursinės funkcijos&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==== [[/Įvadas į objektinį programavimą Python 3|Įvadas į objektinį programavimą Python 3]] ====&lt;br /&gt;
:OOP pagrindai (Objektinis programavimas, angl. &#039;&#039;Object-Oriented Programming&#039;&#039;)&lt;br /&gt;
:Perkelti apie klases į kitą temą&lt;br /&gt;
&lt;br /&gt;
==== [[/Importuotos bibliotekos ir vėžlys|Importuotos bibliotekos ir vėžlys]] ====&lt;br /&gt;
:Pagrindinės funkcijos iš įvairių bibliotekų.&lt;br /&gt;
&lt;br /&gt;
==== [[/Pažangios_funkcijos|Pažangios funkcijos]] ====&lt;br /&gt;
:Lambda, sorted, filter, map... Kas tai?&lt;br /&gt;
&lt;br /&gt;
=== Verta žinoti ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Duomenų tyryba ir informacija|Duomenų tyryba ir informacija]] ====&lt;br /&gt;
:Informacija apie dirbtinį intelektą, kriptografiją ir duomenis.&lt;br /&gt;
&lt;br /&gt;
=== Epilogas ===&lt;br /&gt;
&lt;br /&gt;
==== [[/Pabaiga|Pabaiga]] ====&lt;br /&gt;
: Ką toliau daryti&lt;br /&gt;
&lt;br /&gt;
==== [[/DUK|D.U.K.]] ====&lt;br /&gt;
: Dažnai užduodami klausimai&lt;br /&gt;
&lt;br /&gt;
==== [[/Terminai|Terminai]] ====&lt;br /&gt;
: Terminų žodynas&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Integruotosios_funkcijos&amp;diff=555</id>
		<title>Knyga/Integruotosios funkcijos</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Integruotosios_funkcijos&amp;diff=555"/>
		<updated>2025-01-07T12:47:31Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Integruotosios funkcijos ===&lt;br /&gt;
Integruotosios funkcijos, plačiau žinomos kaip &#039;&#039;built-in functions&#039;&#039;, yra pitono interpretatoriuje apibrėžtos funkcijos. Tai yra globaliai prieinamos funkcijos, kurias galima naudoti bet kurioje kodo vietoje, priklausomai nuo tavo poreikių. Šios funkcijos atlieka konkrečius, dažnai naudojamus veiksmus, pvz., tam tikrus aritmetinius veiksmus:&lt;br /&gt;
&lt;br /&gt;
# Skaičių sumos suradimą - &#039;&#039;&#039;sum()&#039;&#039;&#039;, &lt;br /&gt;
# Mažiausios arba didžiausios reikšmės suradimą - &#039;&#039;&#039;min()/max().&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šiuo metu pitonas turi 71 integruotąją funkciją, visą jų sąrašą galima rasti [https://docs.python.org/3/library/functions.html#min čia]. Integruotųjų funkcijų sąrašas plečiasi tobulėjant kalbai. Leidžiant naujas kalbos versijas yra įtraukiamos naujos funkcijos, ir tokiu būdu palengvinamas programuotojo darbas. Funkcijų yra labai daug ir visų jų nenagrinėsime, tačiau aptarkime jau paminėtas integruotąsias funkcijas.&lt;br /&gt;
&lt;br /&gt;
=== Skaičių sekos sumos suradimui skirta integruotoji funkcija - sum() ===&lt;br /&gt;
Programuotojui neretai tenka surasti skaičių sekos/pateiktų kintamųjų sumą, tad pitonas pateikia itin paprastą integruotąją funkciją &#039;&#039;&#039;sum()&#039;&#039;&#039;. Ši funkcija atlieka vieną darbą - suskaičiuoja jai paduotų kintamųjų sumą. Funkcija priima du kintamuosius:&lt;br /&gt;
&lt;br /&gt;
# Iteruojamo tipo kintamuosius (sąrašai, kolekcijos) kurie savyje saugo skaičius (number tipo kintamuosius).&lt;br /&gt;
# Pradinį skaičių, t. y. skaičių, prie kurio reikia pridėti sąraše esančių skaičių sumą. Šio skaičiaus reikšmė visada yra 0 (default = 0), jeigu funkcijai nėra paduotas konkretus skaičius, tad jis nėra privalomas parametras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10]&lt;br /&gt;
&lt;br /&gt;
print(sum(skaičių_sąrašas))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas į konsolę išves skaičių, esančių &#039;&#039;skaičių_sąrašas&#039;&#039; kintamajame, sumą - 21.&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10]&lt;br /&gt;
pradinis_skaičius = 9&lt;br /&gt;
&lt;br /&gt;
print(sum(skaičių_sąrašas, pradinis_skaičius))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas į konsolę išves skaičių, esančių &#039;&#039;skaičių_sąrašas&#039;&#039; kintamajame, bei &#039;&#039;pradinis_skaičius&#039;&#039; sumą - 30.&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pirmuoju atveju, pradinis_skaičius nebuvo paduotas sum() funkcijai, bet dėl to nekilo problemų, nes nepadavus šio kintamojo, funkcija jį traktuoja kaip 0 ir galutiniame rezultate gauna 0 + 21 = 21.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sum()&#039;&#039;&#039; funkcija veikia tiek su sveikaisiais skaičiais (teigiami, neigiami skaičiai ir nulis), tiek su skaičiais su kableliu:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10.5]&lt;br /&gt;
&lt;br /&gt;
print(sum(skaičių_sąrašas))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas į konsolę išves skaičių, esančių &#039;&#039;skaičių_sąrašas&#039;&#039; kintamajame, sumą - 21,5. Atkreipk dėmesį, kad dešimtainis skaičius yra su tašku &amp;quot;.&amp;quot;, o ne kaip mums įprasta su kableliu &amp;quot;,&amp;quot;.  Panaudojus kablelį, sąrašas jį supras kaip dar vieną sąrašo elementą, o ne kaip dešimtainį skaičių.&lt;br /&gt;
&lt;br /&gt;
=== Mažiausios/didžiausios reikšmės suradimas - min()/max() funkcijos ===&lt;br /&gt;
min()/max() funkcijos iš esmės yra vienodos, priima vienodus funkcijos parametrus, skiriasi tik jų grąžinama reikšmė - arba mažiausia, arba didžiausia iš pateiktų kintamųjų. Funkcijos priima skirtingų tipų parametrus:&lt;br /&gt;
&lt;br /&gt;
# Iteruojamo tipo kintamuosius - sąrašai, kolekcijos,&lt;br /&gt;
# Skaičiaus tipo kintamuosius,&lt;br /&gt;
# Tekstinės eilutės tipo kintamuosius.&lt;br /&gt;
&lt;br /&gt;
Taip pat, funkcijos priima papildomus parametrus, skirtus modifikuoti algoritmą, pagal kurį yra grąžinamos min ir max reikšmės, bet jie nėra būtini. Kaip jau pastebėjote, šios funkcijos priima ir skaičiaus, ir tekstinės eilutės tipo kintamuosius ir išveda jų min/max reikšmes. &lt;br /&gt;
&lt;br /&gt;
==== Skaičių min/max verčių suradimas ====&lt;br /&gt;
Norint surasti skaičiaus min/max vertę min()/max() funkcijoms reikia paduoti kelis kintamuosius su skaičiais arba paduoti sąrašą, kuriame saugomi skaičiai. Skaičiai nėra svarbūs - gali būti ir sveikieji, ir realieji skaičiai.&lt;br /&gt;
&lt;br /&gt;
Pavyzdys su sąrašu:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10]&lt;br /&gt;
&lt;br /&gt;
print(min(skaičių_sąrašas))&lt;br /&gt;
print(max(skaičių_sąrašas))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Abi šios funkcijos patikrins sąraše esančius skaičius, juos palygins tarpusavyje ir funkcija min() grąžins mažiausią skaičių - 5, o max() funkcija grąžins didžiausią - 10.&lt;br /&gt;
&lt;br /&gt;
min() ir max() funkcijos priima ne tik sąrašus, bet ir pavienius kintamuosius:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius_vienas = 5&lt;br /&gt;
skaičius_du = 7.7&lt;br /&gt;
skaičius_trys  = -2&lt;br /&gt;
&lt;br /&gt;
print(min(skaičius_vienas, skaičius_du, skaičius_trys))&lt;br /&gt;
print(max(skaičius_vienas, skaičius_du, skaičius_trys))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kaip matome, abi šios funkcijos gali priimti kelis kintamuosius ir lyginti juos tarpusavyje. Kad būtų įdomiau, šį kartą nadojame realiuosius skaičius - neigiamus skaičius bei skaičius su kableliu. Šis kodas, patikrinęs duotus skaičius, min() ir max() funkcijose grąžins atitinkamai mažiausią skaičių - -2 ir didžiausią skaičių - 7.7.&lt;br /&gt;
&lt;br /&gt;
==== Tekstinės eilutės min/max verčių suradimas ====&lt;br /&gt;
Su skaičių lyginimu, klausimų kaip ir nekyla, bet kaip yra lyginami tekstinės eilutės tipo kintamieji? Teksto eilutės tipo kintamieji lyginami leksikografiškai pagal jų Unikodo (Unikodas (angl. &#039;&#039;Unicode&#039;&#039;) – standartas, apibrėžiantis beveik visų kalbų abėcėlių bei papildomų rašto ženklų kodavimą kompiuteriuose) koduotę, t. y. teksto eilutės paverčiamos jų Unikodo išraiška ir lyginamos tarpusavyje. &lt;br /&gt;
&lt;br /&gt;
Teksto eilutės yra lyginamos po vieną simbolį - lyginant &amp;quot;obuolys&amp;quot; ir &amp;quot;bananas&amp;quot; pirmiausia lygina &amp;quot;o&amp;quot; ir &amp;quot;b&amp;quot;, tada &amp;quot;b&amp;quot; ir &amp;quot;a&amp;quot; ir t. t. Pirmas unikodo išraiškos nesutapimas nusprendžia, kuri tekstinė eilutė bus &amp;quot;mažesnė&amp;quot; ar &amp;quot;didesnė&amp;quot;. Pavyzdžiui, palyginkime žodžius &amp;quot;adata&amp;quot; ir &amp;quot;adyti&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Išsiskaidykime abu žodžius po vieną raidę ir suraskime jų unikodo atitikmenis:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;a&#039;&#039;&#039; - 97,    &#039;&#039;&#039;a&#039;&#039;&#039; - 97&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;d&#039;&#039;&#039; - 100,  &#039;&#039;&#039;d&#039;&#039;&#039; - 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;a&#039;&#039;&#039; - 97,    &#039;&#039;&#039;y&#039;&#039;&#039; - 121&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t&#039;&#039;&#039; - 116,   &#039;&#039;&#039;t&#039;&#039;&#039; - 116&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;a&#039;&#039;&#039; - 97,    &#039;&#039;&#039;i&#039;&#039;&#039; - 105&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pirmos dvi raidės (&amp;quot;a&amp;quot; ir &amp;quot;d&amp;quot;) sutampa abiejuose žodžiuose, analogiškai ir jų unikodo išraiška sutampa. Trečioji raidė jau nebesutampa - &amp;quot;a&amp;quot; ir &amp;quot;y&amp;quot;. Raidės &amp;quot;a&amp;quot; unikodo išraiška yra 97,  &amp;quot;y&amp;quot; unkodo išraiška - 121. Šis nesutapimas ir nurodo, kad &#039;&#039;adata&#039;&#039;, leksikografiniu požiūriu yra &amp;quot;mažesnis&amp;quot; žodis negu &#039;&#039;adyti&#039;&#039; - 97 &amp;lt; 121. Verta paminėti ir tai, kad raidžių &amp;quot;A&amp;quot; ir &amp;quot;a&amp;quot; unikodo išraiška skiriasi - lyginat žodžius &amp;quot;Adata&amp;quot; ir &amp;quot;adata&amp;quot;, žodis &amp;quot;Adata&amp;quot; būtų &amp;quot;mažesnis&amp;quot; negu &amp;quot;adata&amp;quot;, kadangi raidės &amp;quot;A&amp;quot; unikodas yra 65, o raidės &amp;quot;a&amp;quot; - 97.&lt;br /&gt;
&lt;br /&gt;
Analogiškai kaip ir skaičių atveju kintamieji gali būti paduodami kaip tekstinių eilučių sąrašas, arba kaip atskiri kintamieji.&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vaisiai = [&amp;quot;obuolys&amp;quot;, &amp;quot;bananas&amp;quot;, &amp;quot;ananasas&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
print(min(vaisiai))&lt;br /&gt;
print(max(vaisiai))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šiuo atveju sąrašo elementai yra lyginami tarpusavyje ir kodas gražintų mažiausią tekstinę eilutę - &amp;quot;ananasas&amp;quot;(kadangi nesutampa pirmoji visų trijų žodžių raidė, ir raidė &amp;quot;a&amp;quot;, turi mažiausią unikodo reikšmę), o didžiausią - &amp;quot;obuolys&amp;quot; (analogiškai raidė &amp;quot;o&amp;quot; turi didžiausią unikodo reikšmę iš trijų).&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vaisius_1 = &amp;quot;obuolys&amp;quot;&lt;br /&gt;
vaisius_2 = &amp;quot;bananas&amp;quot;&lt;br /&gt;
vaisius_3 = &amp;quot;ananasas&amp;quot;&lt;br /&gt;
&lt;br /&gt;
print(min(vaisius_1, vaisius_2, vaisius_3))&lt;br /&gt;
print(max(vaisius_1, vaisius_2, vaisius_3))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas grąžins analogiškas reikšmes kaip ir aukščiau pateiktas kodas su sąrašu, tiesiog vietoje sąrašo, min() ir max() funkcijoms yra paduodami atskiri kintamieji su tekstinėmis eilutėmis.&lt;br /&gt;
&lt;br /&gt;
==== Papildomi parametrai ====&lt;br /&gt;
Kadangi aptarėme min() ir max() funkcijas su tekstine eilute, galime gana nesunkiai pasižiūrėti, kaip galime modifikuoti min() ir max() funkcijų algoritmą, pagal kurį yra išvedams mažiausia ar didžiausia vertė. Norėdami modifikuoti algoritmą, turime paduoti funkcijai kintamąjį &amp;quot;key&amp;quot;, pagal šį kintamąjį, funkcija nusprendžia pagal kokį algoritmą vertinti pateiktus kintamuosius. Jeigu mes į min() ar max() funkciją paduosime kintamąjį &amp;quot;key = len&amp;quot;, mes nurodome funkcijoms, kad pateiktos tekstinės eilutės būtų vertinamos ne pagal jų unikodo išraišką, o pagal jų ilgį:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
puodo_formos = [&amp;quot;puodas&amp;quot;, &amp;quot;puodelis&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
print(min(puodo_formos, key=len))&lt;br /&gt;
print(max(puodo_formos, key=len))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šiuo atveju kodas nebežiūrės į raidžių unikodo reikšmes, tiesiog skaičiuos, kiek žodžiai turi raidžių - mažiausiai turintis raidžių žodis bus &amp;quot;puodas&amp;quot;, daugiausiai - &amp;quot;puodelis&amp;quot;. Tačiau yra išimtis, pvz.:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
puodo_formos = [&amp;quot;puodas&amp;quot;, &amp;quot;puodelis&amp;quot;, &amp;quot;puodukas&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
print(min(puodo_formos, key=len))&lt;br /&gt;
print(max(puodo_formos, key=len))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Min() atveju kodas grąžins tą patį &amp;quot;puodas&amp;quot;, bet kaip bus max() atveju? Tiek &amp;quot;puodelis&amp;quot;, tiek &amp;quot;puodukas&amp;quot; turi vienodą raidžių skaičių - 8, tad šiuo atveju kodas grąžina tą teksto eilutę, kuri sąraše yra anksčiausiai. Šiam veikimui neturi įtakos tai, ar paduodamas sąrašas su teksto eilutėmis, ar teksto eilutės paduodamos kaip atskiri kintamieji - tuo atveju, jeigu dvi teksto eilutės yra vienodo ilgio, grąžinama ta, kuri buvo pirmesnė sekoje.&lt;br /&gt;
&lt;br /&gt;
=== Vidurkio skaičiavimo funkcija - statistics.mean() ===&lt;br /&gt;
Pitonas, priešingai negu kai kurios kitos programavimo kalbos, neturi integruotosios funkcijos skaičių sekos vidurkio apskaičiavimui. Tad šios užduoties įgyvendinimui mums reikės pasitelkti statistics modulį. Statistics modulis naudojamas įvairiems veiksmams su skaičių sekomis - vidurkio, medianos skaičiavimams ir t. t. Prie savo kodo išorinius modelius galima prisidėti juos naudojant importo sakinį:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import statistics&lt;br /&gt;
&lt;br /&gt;
//tolesnis programos kodas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Importavus statistics modulį, galime pradėti naudoti mean() funkciją. Statistics.mean() funkcija priima sąrašus, kolekcijas ir kitus iteruojamo tipo kintamuosius (tam tikrus objektus ir pan.), tad, priešingai negu min()/max() funkcijoms, negalima paduoti atskirų kintamųjų - turi būti paduotas būtent sąrašas, ar jo alternatyva.&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import statistics&lt;br /&gt;
&lt;br /&gt;
skaičiai = [10, 20, 30, 40, 50]&lt;br /&gt;
print(statistics.mean(skaičiai))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas išves aritmetinį, sąraše esančių skaičių vidurkį - 30 ((10 + 20 + 30 + 40 + 50) / 5 = 30). statistics.mean() funkcija eina per visus sąrašo elementus, juos susumuoja ir padalina iš sąrašo elementų skaičiaus. Ši funkcija veikia su realiaisiais skaičiais, t. y. neigiami, teigiami, dešimtainiai skaičiai yra priimami. &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import statistics&lt;br /&gt;
&lt;br /&gt;
realieji_skaičiai = [-5, 5, 5.5]&lt;br /&gt;
print(statistics.mean(realieji_skaičiai))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas taip pat išves aritmetinį vidurkį - 1.8(3) - kuris paskaičiuojamas: -5 + 5 + 5.5 = 5.5, 5.5 / 3 = 1.8(3).&lt;br /&gt;
&lt;br /&gt;
Daugiau informacijos apie statistics modulį ir kitas jam priklausančias fukncijas galima rasti [https://docs.python.org/3/library/statistics.html#module-statistics čia].&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Integruotosios_funkcijos&amp;diff=554</id>
		<title>Knyga/Integruotosios funkcijos</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Integruotosios_funkcijos&amp;diff=554"/>
		<updated>2025-01-06T13:59:10Z</updated>

		<summary type="html">&lt;p&gt;Audrius: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Integruotosios funkcijos ===&lt;br /&gt;
Integruotosios funkcijos, plačiau žinomos kaip &#039;&#039;built-in functions&#039;&#039;, yra pitono interpretatoriuje apibrėžtos funkcijos. Tai yra globaliai prieinamos funkcijos, kurias gali naudoti bet kurioje kodo vietoje, priklausomai nuo tavo poreikių. Šios funkcijos atlieka konkrečius, dažnai naudojamus veiksmus, pvz., tam tikrus aritmetinius veiksmus:&lt;br /&gt;
&lt;br /&gt;
# Skaičių sumos suradimą - &#039;&#039;&#039;sum()&#039;&#039;&#039;, &lt;br /&gt;
# Mažiausios arba didžiausios reikšmės suradimą - &#039;&#039;&#039;min()/max()&#039;&#039;&#039;, &lt;br /&gt;
# Vidurkio apskaičiavimą - &#039;&#039;&#039;avg()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šiuo metu pitonas turi 71 integruotąją funkciją, visą jų sąrašą galima rasti [https://docs.python.org/3/library/functions.html#min čia]. Integruotųjų funkcijų sąrašas plečiasi su kiekviena nauja kalbos versija, įtraukiant naujas funkcijas, ir tokiu būdu palengvina programuotojo darbą. Funkcijų yra labai daug ir visų jų nenagrinėsime, tačiau aptarkime jau paminėtas  integruotąsias funkcijas.&lt;br /&gt;
&lt;br /&gt;
=== Skaičių sekos sumos suradimui skirta integruotoji funkcija - sum() ===&lt;br /&gt;
Programuotojui neretai tenka surasti skaičių sekos/pateiktų kintamųjų sumą, tad pitonas pateikia itin paprastą integruotąją funkciją sum(). Ši funkcija atlieka vieną darbą - suskaičiuoja jai paduotų kintamųjų sumą. Funkcija priima du kintamuosius:&lt;br /&gt;
&lt;br /&gt;
# Iteruojamo tipo kintamuosius (sąrašai, kolekcijos) kurie savyje saugo skaičius (number tipo kintamuosius).&lt;br /&gt;
# Pradinį skaičių, t. y. skaičių, prie kurio reikia pridėti sąraše esančių skaičių sumą. Šio skaičiaus reikšmė visada yra 0 (default = 0), jeigu funkcijai nėra paduotas konkretus skaičius, tad jis nėra privalomas kintamasis.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10]&lt;br /&gt;
&lt;br /&gt;
print(sum(skaičių_sąrašas))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas į konsolę išves skaičių, esančių &#039;&#039;skaičių_sąrašas&#039;&#039; kintamajame, sumą - 21.&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10]&lt;br /&gt;
pradinis_skaičius = 9&lt;br /&gt;
&lt;br /&gt;
print(sum(skaičių_sąrašas, pradinis_skaičius))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas į konsolę išves skaičių, esančių &#039;&#039;skaičių_sąrašas&#039;&#039; kintamajame, bei &#039;&#039;pradinis_skaičius&#039;&#039; sumą - 30.&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pirmuoju atveju, pradinis_skaičius nebuvo paduotas sum() funkcijai, bet dėl to nekilo problemų, nes nepadavus šio kintamojo, funkcija jį traktuoja kaip 0 ir galutiniame rezultate gauna 0 + 21 = 21.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sum()&#039;&#039;&#039; funkcija veikia tiek su sveikaisiais skaičiais (teigiami, neigiami skaičiai ir nulis), tiek su skaičiais su kableliu:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10.5]&lt;br /&gt;
&lt;br /&gt;
print(sum(skaičių_sąrašas))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas į konsolę išves skaičių, esančių &#039;&#039;skaičių_sąrašas&#039;&#039; kintamajame, sumą - 21,5. Atkreipk dėmesį, kad dešimtainis skaičius yra su tašku &amp;quot;.&amp;quot;, o ne kaip mums įprasta su kableliu &amp;quot;,&amp;quot;.  Panaudojus kablelį, sąrašas jį supras kaip dar vieną sąrašo elementą, o ne kaip dešimtainį skaičių.&lt;br /&gt;
&lt;br /&gt;
=== Mažiausios/didžiausios reikšmės suradimas - min()/max() funkcijos ===&lt;br /&gt;
min()/max() funkcijos iš esmės yra vienodos, priima vienodus funkcijos parametrus, skiriasi tik jų grąžinama reikšmė - arba mažiausia, arba didžiausia iš pateiktų kintamųjų. Funkcijos priima skirtigų tipų parametrus:&lt;br /&gt;
&lt;br /&gt;
# Iteruojamo tipo kintamuosius - sąrašai, kolekcijos,&lt;br /&gt;
# Skaičiaus tipo kintamuosius,&lt;br /&gt;
# Tekstinės eilutės tipo kintamuosius.&lt;br /&gt;
&lt;br /&gt;
Taip pat, funkcijos priima papildomus parametrus, skirtus modifikuoti algoritmą, pagal kurį yra grąžinamos min ir max reikšmės, bet jie nėra būtini. Kaip jau pastebėjote, šios funkcijos priima ir skaičiaus ir tekstinės eilutės tipo kintamuosius ir išveda jų min/max reikšmes. &lt;br /&gt;
&lt;br /&gt;
==== Skaičių min/max verčių suradimas ====&lt;br /&gt;
Norint surasti skaičiaus min/max vertę min()/max() funkcijoms reikia paduoti kelis kintamuosius su skaičiais arba paduoti sąrašą, kuriame saugomi skaičiai. Skaičiai nėra svarbūs - gali būti ir sveikieji, ir realieji skaičiai.&lt;br /&gt;
&lt;br /&gt;
Pavyzdys su sąrašu:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10]&lt;br /&gt;
&lt;br /&gt;
print(min(skaičių_sąrašas))&lt;br /&gt;
print(max(skaičių_sąrašas))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Abi šios funkcijos patikrins sąraše esančius skaičius, juos palygins tarpusavyje ir funkcija min() grąžins mažiausią skaičių - 5, o max() funkcija grąžins didžiausią - 10.&lt;br /&gt;
&lt;br /&gt;
min() ir max() funkcijos priima ne tik sąrašus, bet ir pavienius kintamuosius:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius_vienas = 5&lt;br /&gt;
skaičius_du = 7.7&lt;br /&gt;
skaičius_trys  = -2&lt;br /&gt;
&lt;br /&gt;
print(min(skaičius_vienas, skaičius_du, skaičius_trys))&lt;br /&gt;
print(max(skaičius_vienas, skaičius_du, skaičius_trys))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Kaip matome, abi šios funkcijos gali priimti kelis kintamuosius ir lyginti juos tarpusavyje. Kad būtų įdomiau, šį kartą nadojame realiuosius skaičius - neigiamus skaičius bei skaičius su kableliu. Šis kodas, patikrinęs duotus skaičius, min() ir max() funkcijose grąžins atitinkamai mažiausią skaičių - -2 ir didžiausią skaičių - 7.7.&lt;br /&gt;
&lt;br /&gt;
==== Tekstinės eilutės min/max verčių suradimas ====&lt;br /&gt;
Su skaičių lyginimu, klausimų kaip ir nekyla, bet kaip yra lyginami tekstinės eilutės tipo kintamieji? Teksto eilutės tipo kintamieji lyginami leksikografiškai pagal jų Unikodo (Unikodas (angl. &#039;&#039;Unicode&#039;&#039;) – standartas, apibrėžiantis beveik visų kalbų abėcėlių bei papildomų rašto ženklų kodavimą kompiuteriuose) koduotę, t. y. teksto eilutės paverčiamos jų Unikodo išraiška ir lyginamos tarpusavyje. &lt;br /&gt;
&lt;br /&gt;
Teksto eilutės yra lyginamos po vieną simbolį - lyginant &amp;quot;obuolys&amp;quot; ir &amp;quot;bananas&amp;quot; pirmiausia lygina &amp;quot;o&amp;quot; ir &amp;quot;b&amp;quot;, tada &amp;quot;b&amp;quot; ir &amp;quot;a&amp;quot; ir t. t. Pirmas unikodo išraiškos nesutapimas nusprendžia, kuri tekstinė eilutė bus &amp;quot;mažesnė&amp;quot; ar &amp;quot;didesnė&amp;quot;. Pavyzdžiui, palyginkime žodžius &amp;quot;adata&amp;quot; ir &amp;quot;adyti&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Išsiskaidykime abu žodžius po vieną raidę ir suraskime jų unikodo atitikmenis:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;a&#039;&#039;&#039; - 97,    &#039;&#039;&#039;a&#039;&#039;&#039; - 97&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;d&#039;&#039;&#039; - 100,  &#039;&#039;&#039;d&#039;&#039;&#039; - 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;a&#039;&#039;&#039; - 97,    &#039;&#039;&#039;y&#039;&#039;&#039; - 121&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;t&#039;&#039;&#039; - 116,   &#039;&#039;&#039;t&#039;&#039;&#039; - 116&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;a&#039;&#039;&#039; - 97,    &#039;&#039;&#039;i&#039;&#039;&#039; - 105&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pirmos dvi raidės (&amp;quot;a&amp;quot; ir &amp;quot;d&amp;quot;) sutampa abiejuose žodžiuose, analogiškai ir jų unikodo išraiška sutampa. Trečioji raidė jau nebesutampa - &amp;quot;a&amp;quot; ir &amp;quot;y&amp;quot;. Raidės &amp;quot;a&amp;quot; unikodo išraiška yra 97,  &amp;quot;y&amp;quot; unkodo išraiška - 121. Šis nesutapimas ir nurodo, kad &#039;&#039;adata&#039;&#039;, leksikografiniu požiūriu yra &amp;quot;mažesnis&amp;quot; žodis negu &#039;&#039;adyti&#039;&#039; - 97 &amp;lt; 121. Verta paminėti ir tai, kad raidžių &amp;quot;A&amp;quot; ir &amp;quot;a&amp;quot; unikodo išraiška skiriasi - lyginat žodžius &amp;quot;Adata&amp;quot; ir &amp;quot;adata&amp;quot;, žodis &amp;quot;Adata&amp;quot; būtų &amp;quot;mažesnis&amp;quot; negu &amp;quot;adata&amp;quot;, kadangi raidės &amp;quot;A&amp;quot; unikodas yra 65, o raidės &amp;quot;a&amp;quot; - 97.&lt;br /&gt;
&lt;br /&gt;
Analogiškai kaip ir skaičių atveju kintamieji gali būti paduodami kaip tekstinių eilučių sąrašas, arba kaip atskiri kintamieji.&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vaisiai = [&amp;quot;obuolys&amp;quot;, &amp;quot;bananas&amp;quot;, &amp;quot;ananasas&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
print(min(vaisiai))&lt;br /&gt;
print(max(vaisiai))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šiuo atveju sąrašo elementai yra lyginami tarpusavyje ir kodas gražintų mažiausią tekstinę eilutę - &amp;quot;ananasas&amp;quot;(kadangi nesutampa pirmoji visų trijų žodžių raidė, ir raidė &amp;quot;a&amp;quot;, turi mažiausią unikodo reikšmę), o didžiausią - &amp;quot;obuolys&amp;quot; (analogiškai raidė &amp;quot;o&amp;quot; turi didžiausią unikodo reikšmę iš trijų).&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vaisius_1 = &amp;quot;obuolys&amp;quot;&lt;br /&gt;
vaisius_2 = &amp;quot;bananas&amp;quot;&lt;br /&gt;
vaisius_3 = &amp;quot;ananasas&amp;quot;&lt;br /&gt;
&lt;br /&gt;
print(min(vaisius_1, vaisius_2, vaisius_3))&lt;br /&gt;
print(max(vaisius_1, vaisius_2, vaisius_3))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas grąžins analogiškas reikšmes kaip ir aukščiau pateiktas kodas su sąrašu, tiesiog vietoje sąrašo, min() ir max() funkcijoms yra paduodami atskiri kintamieji su tekstinėmis eilutėmis.&lt;br /&gt;
&lt;br /&gt;
==== Papildomi parametrai ====&lt;br /&gt;
Kadangi aptarėme min() ir max() funkcijas su tekstine eilute, galime gana nesunkiai pasižiūrėti, kaip galime modifikuoti min() ir max() funkcijų algoritmą, pagal kurį yra išvedams mažiausia ar didžiausia vertė. Norėdami modifikuoti algoritmą, turime paduoti funkcijai kintamąjį &amp;quot;key&amp;quot;, pagal šį kintamąjį, funkcija nusprendžia pagal kokį algoritmą vertinti pateiktus kintamuosius. Jeigu mes į min() ar max() funkciją paduosime kintamąjį &amp;quot;key = len&amp;quot;, mes nurodome funkcijoms, kad pateiktos tekstinės eilutės būtų vertinamos ne pagal jų unikodo išraišką, o pagal jų ilgį:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
puodo_formos = [&amp;quot;puodas&amp;quot;, &amp;quot;puodelis&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
print(min(puodo_formos, key=len))&lt;br /&gt;
print(max(puodo_formos, key=len))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šiuo atveju kodas nebežiūrės į raidžių unikodo reikšmes, tiesiog skaičiuos, kiek žodžiai turi raidžių - mažiausiai turintis raidžių žodis bus &amp;quot;puodas&amp;quot;, daugiausiai - &amp;quot;puodelis&amp;quot;. Tačiau yra išimtis, pvz.:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
puodo_formos = [&amp;quot;puodas&amp;quot;, &amp;quot;puodelis&amp;quot;, &amp;quot;puodukas&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
print(min(puodo_formos, key=len))&lt;br /&gt;
print(max(puodo_formos, key=len))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Min() atveju kodas grąžins tą patį &amp;quot;puodas&amp;quot;, bet kaip bus max() atveju? Tiek &amp;quot;puodelis&amp;quot;, tiek &amp;quot;puodukas&amp;quot; turi vienodą raidžių skaičių - 8, tad šiuo atveju kodas grąžina tą teksto eilutę, kuri sąraše yra anksčiausiai. Šiam veikimui neturi įtakos tai, ar paduodamas sąrašas su teksto eilutėmis, ar teksto eilutės paduodamos kaip atskiri kintamieji - tuo atveju, jeigu dvi teksto eilutės yra vienodo ilgio, grąžinama ta, kuri buvo pirmesnė sekoje.&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Knyga/Integruotosios_funkcijos&amp;diff=553</id>
		<title>Knyga/Integruotosios funkcijos</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Knyga/Integruotosios_funkcijos&amp;diff=553"/>
		<updated>2025-01-06T11:07:39Z</updated>

		<summary type="html">&lt;p&gt;Audrius: Naujas puslapis: === Integruotosios funkcijos === Integruotosios funkcijos, plačiau žinomos kaip &amp;#039;&amp;#039;built-in functions&amp;#039;&amp;#039;, yra pitono interpretatoriuje apibrėžtos funkcijos. Tai yra globaliai prieinamos funkcijos, kurias gali naudoti bet kurioje kodo vietoje, priklausomai nuo tavo poreikių. Šios funkcijos atlieka konkrečius, dažnai naudojamus veiksmus, pvz., tam tikrus aritmetinius veiksmus:  # Skaičių sumos suradimą - &amp;#039;&amp;#039;&amp;#039;sum()&amp;#039;&amp;#039;&amp;#039;,  # Mažiausios arba didžiausios reikšmės suradi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Integruotosios funkcijos ===&lt;br /&gt;
Integruotosios funkcijos, plačiau žinomos kaip &#039;&#039;built-in functions&#039;&#039;, yra pitono interpretatoriuje apibrėžtos funkcijos. Tai yra globaliai prieinamos funkcijos, kurias gali naudoti bet kurioje kodo vietoje, priklausomai nuo tavo poreikių. Šios funkcijos atlieka konkrečius, dažnai naudojamus veiksmus, pvz., tam tikrus aritmetinius veiksmus:&lt;br /&gt;
&lt;br /&gt;
# Skaičių sumos suradimą - &#039;&#039;&#039;sum()&#039;&#039;&#039;, &lt;br /&gt;
# Mažiausios arba didžiausios reikšmės suradimą - &#039;&#039;&#039;min()/max()&#039;&#039;&#039;, &lt;br /&gt;
# Vidurkio apskaičiavimą - &#039;&#039;&#039;avg()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Šiuo metu pitonas turi 71 integruotąją funkciją, visą jų sąrašą galima rasti [https://docs.python.org/3/library/functions.html#min čia]. Integruotųjų funkcijų sąrašas plečiasi su kiekviena nauja kalbos versija, įtraukiant naujas funkcijas, ir tokiu būdu palengvina programuotojo darbą. Funkcijų yra labai daug ir visų jų nenagrinėsime, tačiau aptarkime jau paminėtas  integruotąsias funkcijas.&lt;br /&gt;
&lt;br /&gt;
=== Skaičių sekos sumos suradimui skirta integruotoji funkcija - sum() ===&lt;br /&gt;
Programuotojui neretai tenka surasti skaičių sekos/pateiktų kintamųjų sumą, tad pitonas pateikia itin paprastą integruotąją funkciją sum(). Ši funkcija atlieka vieną darbą - suskaičiuoja jai paduotų kintamųjų sumą. Funkcija priima du kintamuosius:&lt;br /&gt;
&lt;br /&gt;
# Iteruojamo tipo kintamuosius (sąrašai, kolekcijos) kurie savyje saugo skaičius (number tipo kintamuosius).&lt;br /&gt;
# Pradinį skaičių, t. y. skaičių, prie kurio reikia pridėti sąraše esančių skaičių sumą. Šio skaičiaus reikšmė visada yra 0 (default = 0), jeigu funkcijai nėra paduotas konkretus skaičius, tad jis nėra privalomas kintamasis.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10]&lt;br /&gt;
&lt;br /&gt;
print(sum(skaičių_sąrašas))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas į konsolę išves skaičių, esančių &#039;&#039;skaičių_sąrašas&#039;&#039; kintamajame, sumą - 21.&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10]&lt;br /&gt;
pradinis_skaičius = 9&lt;br /&gt;
&lt;br /&gt;
print(sum(skaičių_sąrašas, pradinis_skaičius))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas į konsolę išves skaičių, esančių &#039;&#039;skaičių_sąrašas&#039;&#039; kintamajame, bei &#039;&#039;pradinis_skaičius&#039;&#039; sumą - 30.&lt;br /&gt;
&lt;br /&gt;
Kaip matome, pirmuoju atveju, pradinis_skaičius nebuvo paduotas sum() funkcijai, bet dėl to nekilo problemų, nes nepadavus šio kintamojo, funkcija jį traktuoja kaip 0 ir galutiniame rezultate gauna 0 + 21 = 21.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sum()&#039;&#039;&#039; funkcija veikia tiek su sveikaisiais skaičiais (teigiami, neigiami skaičiai ir nulis), tiek su skaičiais su kableliu:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičių_sąrašas = [5, 6, 10.5]&lt;br /&gt;
&lt;br /&gt;
print(sum(skaičių_sąrašas))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Šis kodas į konsolę išves skaičių, esančių &#039;&#039;skaičių_sąrašas&#039;&#039; kintamajame, sumą - 21,5. Atkreipk dėmesį, kad dešimtainis skaičius yra su tašku &amp;quot;.&amp;quot;, o ne kaip mums įprasta su kableliu &amp;quot;,&amp;quot;.  Panaudojus kablelį, sąrašas jį supras kaip dar vieną sąrašo elementą, o ne kaip dešimtainį skaičių.&lt;br /&gt;
&lt;br /&gt;
=== Mažiausios/didžiausios reikšmės suradimas - min()/max() funkcijos ===&lt;br /&gt;
min()/max() funkcijos iš esmės yra vienodos, priima vienodus funkcijos parametrus, skiriasi tik jų grąžinama reikšmė - arba mažiausia, arba didžiausia iš pateiktų kintamųjų.&lt;/div&gt;</summary>
		<author><name>Audrius</name></author>
	</entry>
</feed>