<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="lt">
	<id>https://wiki.angis.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ZivileB</id>
	<title>wiki.angis.net - Naudotojo indėlis [lt]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.angis.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ZivileB"/>
	<link rel="alternate" type="text/html" href="https://wiki.angis.net/w/Specialus:Ind%C4%97lis/ZivileB"/>
	<updated>2026-05-03T09:13:04Z</updated>
	<subtitle>Naudotojo indėlis</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3931</id>
		<title>Python Vadovėlis/Rekursija</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3931"/>
		<updated>2022-04-12T15:24:09Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Siekiant tobulumo |next=Įvadas į objektinį programavimą Python 3}}&lt;br /&gt;
&lt;br /&gt;
== Rekursija ==&lt;br /&gt;
&lt;br /&gt;
Programavime rekursine funkcija vadinama funkcija, kuri iškviečia pati save.&lt;br /&gt;
&lt;br /&gt;
=== Įvadas į rekursiją ===&lt;br /&gt;
&lt;br /&gt;
Iki šiol Python'o programoje matėme funkcijas, kurios iškviečia kitas funkcijas. Tačiau funkcija gali iškviesti ir pati save. Pažvelkime į paprastą pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
&lt;br /&gt;
sk = 0&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
def skaitliukas(sk):&lt;br /&gt;
    print(sk)&lt;br /&gt;
    sk+= 1&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei šią programą paleistum VS Code kodo redaktoriuje, ji veiktų amžinai. Vienintelis būdas sustabdyti ciklą būtų nutraukti vykdymą paspaudžiant Ctrl + C klaviatūroje. Tai yra begalinės rekursijos pavyzdys.&lt;br /&gt;
&lt;br /&gt;
Galima ginčytis, kad rekursija yra tik dar vienas būdas atlikti tą patį dalyką kaip ir naudojant ciklą. Kai kuriais atvejais tai yra visiškai teisinga. Tačiau yra ir kitų rekursijos naudojimo būdų, kurie yra labai tinkami, o  &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklai gali būti ne pats geriausias variantas.&lt;br /&gt;
&lt;br /&gt;
Rekursija gali būti valdoma, kaip ir ciklai. Pažvelk į rekursinio ciklo pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
def main():&lt;br /&gt;
    ciklosk= int(input(&amp;quot;Kiek kartų norėtum paleisti ciklą?\n&amp;quot;))&lt;br /&gt;
    skaitliukas = 1&lt;br /&gt;
    recurr(ciklosk,skaitliukas)&lt;br /&gt;
&lt;br /&gt;
def recurr(ciklosk,skaitliukas):&lt;br /&gt;
    if ciklosk&amp;gt; 0:&lt;br /&gt;
        print(&amp;quot;Tai yra ciklo iteracija&amp;quot;,skaitliukas)&lt;br /&gt;
        recurr(ciklosk- 1,skaitliukas + 1)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Ciklas yra pabaigtas.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programoje naudojami argumentai/parametrai rekursijų skaičiui valdyti. Tiesiog naudok tai, ką jau žinai apie funkcijas, ir sek programos eigą. Tai paprasta išsiaiškinti. Jei kyla problemų, grįžk į [[Vadovėlis/Pažangių funkcijų pavyzdys|Pažangių funkcijų pavyzdys]].&lt;br /&gt;
&lt;br /&gt;
== Praktiniai rekursijos pritaikymai ==&lt;br /&gt;
&lt;br /&gt;
Dažnai rekursija yra studijuojama pažengusiu informatikos lygiu. Rekursija dažniausiai naudojama sprendžiant sudėtingas problemas, kurias galima suskirstyti į mažesnes, identiškas problemas. Norint išspręsti problemą, rekursija nebūtina. Problemos, kurias galima išspręsti naudojant rekursiją, greičiausiai gali būti išspręstos ir su ciklais. Be to, ciklas gali būti efektyvesnis nei rekursinė funkcija. Rekursinėms funkcijoms reikia daugiau atminties ir išteklių nei ciklams, todėl daugeliu atvejų jos yra mažiau efektyvios. Šis naudojimo reikalavimas kartais vadinamas &amp;lt;i&amp;gt;overhead&amp;lt;/i&amp;gt;.&lt;br /&gt;
Galbūt galvoji: „Na, kam nerimauti su rekursija. Aš tiesiog naudosiu ciklą. Aš jau žinau, kaip sudaryti ciklą, ir tai yra daug daugiau darbo.“ Ši mintis suprantama, bet ne visai ideali. Sprendžiant sudėtingas problemas, rekursinę funkciją kartais lengviau, greičiau ir paprasčiau sukurti bei programuoti.&lt;br /&gt;
&lt;br /&gt;
Pagalvokite apie šias dvi „taisykles“:&lt;br /&gt;
* Jei galiu išspręsti problemą su ciklu, be rekursijos, funkcija tiesiog grąžina reikšmę.&lt;br /&gt;
* Jei negaliu išspręsti problemos su cilku, be rekursijos, funkcija sumažina problemą iki mažesnės analogiškos problemos ir iškviečia pati save.&lt;br /&gt;
&lt;br /&gt;
Pabandyk pritaikyti rekursinę funkciją faktorialui apskaičiuoti. Jei nesi susipažinęs su faktoriais, skaityk: [https://lt.wikipedia.org/wiki/Faktorialas Faktorialas]&lt;br /&gt;
 &lt;br /&gt;
Skaičiaus n faktorialas &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;, yra žymimas kaip &amp;lt;i&amp;gt;n!&amp;lt;/i&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Štai keletas pagrindinių faktorialo taisyklių:&lt;br /&gt;
&lt;br /&gt;
Jei n = 0 tai n! = 1&lt;br /&gt;
&lt;br /&gt;
Jei n &amp;gt; 0 tai n! = 1 x 2 x 3 x ... x n&lt;br /&gt;
&lt;br /&gt;
Pavyzdžiui, pažiūrėk į skaičiaus 9 faktorialą.&lt;br /&gt;
&lt;br /&gt;
9! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į programą, kuri rekursijos metodu apskaičiuoja bet kurio vartotojo įvesto skaičiaus faktorialą.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    sk = int(input(&amp;quot;Įvesk neneigiamą sveikąjį skaičių.\n&amp;quot;))&lt;br /&gt;
    fakt = faktorialas(sk)&lt;br /&gt;
    print(&amp;quot;Skaičiaus &amp;quot;, sk, &amp;quot; faktorialas yra &amp;quot;, fakt)&lt;br /&gt;
&lt;br /&gt;
def faktorialas(sk):&lt;br /&gt;
    if sk == 0:&lt;br /&gt;
        return  1&lt;br /&gt;
    else:&lt;br /&gt;
        return sk * faktorialas(sk - 1)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rekursija taip pat naudinga išplėstinėje temoje, vadinamoje generatoriais. Norint sugeneruoti serijas 1, 2, 1, 3, 1, 2, 1, 4, 1, 2... reikės šio kodo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def beprotiškas(min_):&lt;br /&gt;
    yield min_&lt;br /&gt;
    g=beprotiškas(min_+1)&lt;br /&gt;
    while True:&lt;br /&gt;
        yield next(g)&lt;br /&gt;
        yield min_&lt;br /&gt;
&lt;br /&gt;
i = beprotiškas(1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
norint gauti kitą elementą, iškiviestum next(i)&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Siekiant tobulumo |next=Įvadas į objektinį programavimą Python 3}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C5%BDodynai&amp;diff=3930</id>
		<title>Python Vadovėlis/Žodynai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C5%BDodynai&amp;diff=3930"/>
		<updated>2022-04-11T17:40:22Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Loginiai reiškiniai |next=Modulių naudojimas}}&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra apie žodynus. Žodynai turi raktus ir reikšmes. Raktai naudojami reikšmėms rasti. Štai žodyno pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print('1. Spausdink telefonų numerius')&lt;br /&gt;
    print('2. Pridėk telefono numerį')&lt;br /&gt;
    print('3. Pašalink telefono numerį')&lt;br /&gt;
    print('4. Ieškok telefono numerio')&lt;br /&gt;
    print('5. Išeik')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
numeriai = {}&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
spausdink_meniu ()&lt;br /&gt;
while meniu_pasirinkimas != 5:&lt;br /&gt;
    meniu_pasirinkimas = int(input(&amp;quot;Įvesk skaičių (1-5): &amp;quot;))&lt;br /&gt;
    if meniu_pasirinkimas == 1:&lt;br /&gt;
        print(&amp;quot;Telefono numeriai: &amp;quot;)&lt;br /&gt;
        for x in numeriai.keys():&lt;br /&gt;
            print(&amp;quot;Vardas: &amp;quot;, x, &amp;quot;\tTelefono numeris:&amp;quot;, numeriai[x])&lt;br /&gt;
        print()&lt;br /&gt;
    elif meniu_pasirinkimas == 2:&lt;br /&gt;
        print(&amp;quot;Pridėk vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        numeris = input(&amp;quot;Telefono numeris: &amp;quot;)&lt;br /&gt;
        numeriai[vardas] = numeris &lt;br /&gt;
    elif meniu_pasirinkimas == 3:&lt;br /&gt;
        print(&amp;quot;Pašalink vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        if vardas in numeriai:&lt;br /&gt;
            del numeriai[vardas]&lt;br /&gt;
        else:&lt;br /&gt;
            print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas == 4:&lt;br /&gt;
        print(&amp;quot;Ieškok telefono numerio&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        if vardas in numeriai:&lt;br /&gt;
            print(&amp;quot;Telefono numeris yra &amp;quot;, numeriai[vardas])&lt;br /&gt;
        else:&lt;br /&gt;
            print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas  != 5:&lt;br /&gt;
        print_menu()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O čia - mano išvestis:&lt;br /&gt;
&lt;br /&gt;
 1. Spausdink telefonų numerius&lt;br /&gt;
 2. Pridėk telefono numerį&lt;br /&gt;
 3. Pašalink telefono numerį&lt;br /&gt;
 4. Ieškok telefono numerio&lt;br /&gt;
 5. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-5): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Benas'''&lt;br /&gt;
 Telefono numeris: '''869935951'''&lt;br /&gt;
 Įvesk skaičių (1-5): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Liepa'''&lt;br /&gt;
 Telefono numeris: '''869935952'''&lt;br /&gt;
 Įvesk skaičių (1-5): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Markas'''&lt;br /&gt;
 Telefono numeris: '''869935957'''&lt;br /&gt;
 Įvesk skaičių (1-5): '''1'''&lt;br /&gt;
 Telefono numeriai:&lt;br /&gt;
 Vardas: Benas         Telefono numeris: 869935951&lt;br /&gt;
 Vardas: Liepa         Telefono numeris: 869935952&lt;br /&gt;
 Vardas: Markas        Telefono numeris: 869935957&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-5): '''4'''&lt;br /&gt;
 Ieškok telefono numerio&lt;br /&gt;
 Vardas: '''Benas'''&lt;br /&gt;
 Telefono numeris yra 869935951&lt;br /&gt;
 Įvesk skaičių (1-5): '''3'''&lt;br /&gt;
 Pašalink telefono numerį&lt;br /&gt;
 Vardas: '''Markas'''&lt;br /&gt;
 Įvesk skaičių (1-5): '''1'''&lt;br /&gt;
 Telefono numeriai:&lt;br /&gt;
 Vardas: Liepa      Telefono numeris: 869935952&lt;br /&gt;
 Vardas: Benas      Telefono numeris: 869935951&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-5): '''5'''&lt;br /&gt;
&lt;br /&gt;
Ši programa yra panaši į programą su vardų sąrašu, pateiktu prieš tai buvusiame skyriuje apie sąrašus.  Štai kaip veikia programa.  Pirmiausiai yra aprašoma funkcija &amp;lt;code&amp;gt;spausdink_meniu&amp;lt;/code&amp;gt;.  &amp;lt;code&amp;gt;spausdink_meniu&amp;lt;/code&amp;gt; tiesiog spausdina meniu, kuris vėliau du kartus naudojamas programoje.  Po to, pateikiama keistai atrodanti eilutė &amp;lt;code&amp;gt;numeriai = {}&amp;lt;/code&amp;gt;.  Ši eilutė Python'ui pasako, kad &amp;lt;code&amp;gt;numeriai&amp;lt;/code&amp;gt; yra žodynas.  Kitos kelios eilutės tiesiog padaro taip, kad meniu veiktų.  Vykdydant ciklą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in numeriai.keys():&lt;br /&gt;
    print(&amp;quot;Vardas: &amp;quot;, x, &amp;quot;\tTelefono numeris:&amp;quot;, numeriai[x])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
einama per žodyną ir spausdinami žodyne esantys elementai.  Funkcija &amp;lt;code&amp;gt; numeriai.keys()&amp;lt;/code&amp;gt; grąžina žodyno elementų raktų sąrašą, kuris yra vėliau naudojamas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; cikle.  Sąrašas grąžinamas &amp;lt;code&amp;gt;keys()&amp;lt;/code&amp;gt; metodo pagalba neturi jokio eiliškumo, todėl, jei tu nori, kad jis būtų abėcėlės tvarka, jis turi būti surūšiuotas. Taigi, šiuo atveju &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; yra tekstinė eilutė – vardai. Panašiai kaip sąrašai, komanda &amp;lt;code&amp;gt;numeriai[x]&amp;lt;/code&amp;gt; naudojama norint pasiekti konkretų žodyno elementą. Šiuo atveju tai yra telefonų numeriai. Komanda &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; visa tai atspausdina.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Pridėk vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
numeris = input(&amp;quot;Telefono numeris: &amp;quot;)&lt;br /&gt;
numeriai[vardas] = numeris &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Padarius kitą pasirinkimą, pirmiausiai paklausiamas vardas – tai bus žodyno elemento raktas, ir paklausiamas numeris. Toliau, komanda &amp;lt;code&amp;gt;numeriai[vardas] = telefonas&amp;lt;/code&amp;gt; prideda vardą ir telefono numerį į žodyną. Jei &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; jau būtų buvęs žodyne, &amp;lt;code&amp;gt;telefonas&amp;lt;/code&amp;gt; pakeistų prieš tai buvusią reikšmę. &lt;br /&gt;
Toliau sąlyginis sakinys&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if vardas in numeriai:&lt;br /&gt;
    del numeriai[vardas]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
tikrina, ar vardas yra žodyne, ir jei yra, jį pašalina.  Komanda &amp;lt;code&amp;gt;vardas in numeriai&amp;lt;/code&amp;gt; grąžina loginę reikšmę &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;, jei &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra &amp;lt;code&amp;gt;numeriai&amp;lt;/code&amp;gt; žodyne, bet kitu atveju grąžina &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;. Komanda &amp;lt;code&amp;gt;del numeriai[vardas]&amp;lt;/code&amp;gt; pašalina raktą &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; ir su tuo raktu susietą reikšmę. &lt;br /&gt;
Sąlyginis sakinys&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if vardas in numeriai:&lt;br /&gt;
    print(&amp;quot;Telefono numeris yra &amp;quot;, numeriai[vardas])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
patikrina, ar žodynas turi tam tikrą raktą ir jei žodynas turi tą raktą, išspausdina su juo susietą numerį.  Galiausiai, jei meniu pasirinkimas negalioja, pagrindinis meniu yra atspausdinamas, kad tu galėtum juo pasigrožėti.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- \label{firstgrades}--&amp;gt;&lt;br /&gt;
Apibendrinimas: žodynai turi raktus ir reikšmes.  Raktu gali būti tekstinė eilutė arba&lt;br /&gt;
skaičius.  Raktai nurodo reikšmes.  Reikšmės gali būti bet kokio tipo kintamieji&lt;br /&gt;
(įskaitant sąrašus ar net žodynus (žinoma, tuose žodynuose ar sąrašuose&lt;br /&gt;
gali būti patys žodynai ar sąrašai (baisu, ane? :-)&lt;br /&gt;
))).  Štai yra pavyzdys, kai naudojamas sąrašas žodyne:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
max_taškai = [25, 25, 50, 25, 100]&lt;br /&gt;
užduotys = ['nd sk 1', 'nd sk 2', 'viktorina   ', 'nd sk 3', 'testas']&lt;br /&gt;
mokiniai = {'#Max': max_taškai}&lt;br /&gt;
&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print(&amp;quot;1. Pridėk mokinį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;2. Pašalink mokinį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;3. Spausdink pažymius&amp;quot;)&lt;br /&gt;
    print(&amp;quot;4. Įrašyk pažymį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;5. Spausdink meniu&amp;quot;)&lt;br /&gt;
    print(&amp;quot;6. Išeik&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def spausdink_visus_pažymius():&lt;br /&gt;
    print('\t', end=' ')&lt;br /&gt;
    for i in range(len(užduotys)):&lt;br /&gt;
        print(užduotys[i], '\t', end=' ')&lt;br /&gt;
    print()&lt;br /&gt;
    raktai = list(mokiniai.keys())&lt;br /&gt;
    raktai.sort()&lt;br /&gt;
    for x in raktai:&lt;br /&gt;
        print(x, '\t', end=' ')&lt;br /&gt;
        pažymiai = mokiniai[x]&lt;br /&gt;
        spausdink_pažymius(pažymiai)&lt;br /&gt;
&lt;br /&gt;
def spausdink_pažymius(pažymiai):&lt;br /&gt;
    for i in range(len(pažymiai)):&lt;br /&gt;
        print(pažymiai[i], '\t', end=' ')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
spausdink_meniu()&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
while meniu_pasirinkimas != 6:&lt;br /&gt;
    print()&lt;br /&gt;
    meniu_pasirinkimas = int(input(&amp;quot;Meniu pasirinkimas (1-6): &amp;quot;))&lt;br /&gt;
    if meniu_pasirinkimas == 1:&lt;br /&gt;
        vardas = input(&amp;quot;Pridėk mokinį: &amp;quot;)&lt;br /&gt;
        mokiniai[vardas] = [0] * len(max_taškai)&lt;br /&gt;
    elif meniu_pasirinkimas == 2:&lt;br /&gt;
        vardas = input(&amp;quot;Pašalink mokinį: &amp;quot;)&lt;br /&gt;
        if vardas in mokiniai:&lt;br /&gt;
            del mokiniai[vardas]&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Vardas: &amp;quot;, vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas == 3:&lt;br /&gt;
        spausdink_visus_pažymius()&lt;br /&gt;
    elif meniu_pasirinkimas == 4:&lt;br /&gt;
        print(&amp;quot;Įrašyk pažymį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Mokinys: &amp;quot;)&lt;br /&gt;
        if vardas in mokiniai:&lt;br /&gt;
            pažymiai = mokiniai[vardas]&lt;br /&gt;
            print(&amp;quot;Įrašyk mokinio pažymį&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Įrašyk 0 (nulį), kad išeitum&amp;quot;)&lt;br /&gt;
            for i in range(len(užduotys)):&lt;br /&gt;
                print(i + 1, užduotys[i], '\t', end=' ')&lt;br /&gt;
            print()&lt;br /&gt;
            spausdink_pažymius(pažymiai)&lt;br /&gt;
            kuris = 1234&lt;br /&gt;
            while kuris != -1:&lt;br /&gt;
                kuris = int(input(&amp;quot;Pakeisk kuris pažymį: &amp;quot;))&lt;br /&gt;
                kuris -= 1    #tas pats kaip ir: kuris = kuris - 1&lt;br /&gt;
                if 0 &amp;lt;= kuris &amp;lt; len(pažymiai):&lt;br /&gt;
                    pažymys = int(input(&amp;quot;Pažymys: &amp;quot;))&lt;br /&gt;
                    pažymiai[kuris] = pažymys&lt;br /&gt;
                elif kuris != -1:&lt;br /&gt;
                    print(&amp;quot;Klaidingas pažymys&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Mokinys nerastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas != 6:&lt;br /&gt;
        spausdink_meniu()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O štai čia yra išvestis:&lt;br /&gt;
&lt;br /&gt;
 1. Pridėk mokinį&lt;br /&gt;
 2. Pašalink mokinį&lt;br /&gt;
 3. Spausdink pažymius&lt;br /&gt;
 4. Įrašyk pažymį&lt;br /&gt;
 5. Spausdink meniu&lt;br /&gt;
 6. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''3'''&lt;br /&gt;
        nd sk 1         nd sk 2       viktorina       nd sk 3            testas &lt;br /&gt;
 #Max    25              25              50              25              100 &lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''5'''&lt;br /&gt;
 1. Pridėk mokinį&lt;br /&gt;
 2. Pašalink mokinį&lt;br /&gt;
 3. Spausdink pažymius&lt;br /&gt;
 4. Įrašyk pažymį&lt;br /&gt;
 5. Spausdink meniu&lt;br /&gt;
 6. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''1'''&lt;br /&gt;
 Pridėk mokinį: '''Markas'''&lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''4'''&lt;br /&gt;
 Įrašyk pažymį&lt;br /&gt;
 Mokinys: '''Markas'''&lt;br /&gt;
 Įrašyk mokinio pažymį&lt;br /&gt;
 Įrašyk 0 (nulį), kad išeitum&lt;br /&gt;
 1   nd sk 1     2   nd sk 2     3   viktorina        4   nd sk 3     5   testas &lt;br /&gt;
 0               0               0               0               0 &lt;br /&gt;
 Pakeisk kuris pažymį: '''1'''&lt;br /&gt;
 Pažymys: '''25'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''2'''&lt;br /&gt;
 Pažymys: '''24'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''3'''&lt;br /&gt;
 Pažymys: '''45'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''4'''&lt;br /&gt;
 Pažymys: '''23'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''5'''&lt;br /&gt;
 Pažymys: '''95'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''0'''&lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''3'''&lt;br /&gt;
           nd sk 1         nd sk 2         viktorina       nd sk 3          testas&lt;br /&gt;
 #Max        25              25              50              25              100&lt;br /&gt;
 Markas      25              24              45              23              95 &lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''6'''&lt;br /&gt;
&lt;br /&gt;
Štai kaip veikia programa.  Iš esmės, kintamasis &amp;lt;code&amp;gt;mokiniai&amp;lt;/code&amp;gt; yra žodynas, kurio raktai yra mokinių vardai, o reikšmės – jų pažymiai.  Pirmosios dvi eilutės tik sukuria du sąrašus.&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;mokiniai = {'#Max': max_taškai}&amp;lt;/code&amp;gt; sukuria naują&lt;br /&gt;
žodyną su raktu {&amp;lt;code&amp;gt;#Max&amp;lt;/code&amp;gt;}, o reikšmė yra &amp;lt;code&amp;gt;[25, 25, 50, 25, 100]&amp;lt;/code&amp;gt; (pirmame sakinyje &amp;lt;code&amp;gt;max_taškai&amp;lt;/code&amp;gt; buvo padarytas priskyrimas) (aš naudoju raktą &amp;lt;code&amp;gt;#Max&amp;lt;/code&amp;gt;, nes rūšiuojant simolis &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; patenka prieš bet kokias abėcėlės raides).  Toliau aprašoma funkcija &amp;lt;code&amp;gt;spausdink_meniu&amp;lt;/code&amp;gt;. Kaip jau žinai, ji spausdina meniu.&lt;br /&gt;
Po to aprašoma funkcija &amp;lt;code&amp;gt;spausdink_visus_pažymius&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def spausdink_visus_pažymius():&lt;br /&gt;
    print('\t',end=&amp;quot; &amp;quot;)&lt;br /&gt;
    for i in range(len(užduotys)):&lt;br /&gt;
        print(užduotys[i], '\t',end=&amp;quot; &amp;quot;)&lt;br /&gt;
    print()&lt;br /&gt;
    raktai = list(mokiniai.keys())&lt;br /&gt;
    keys.sort()&lt;br /&gt;
    for x in raktai:&lt;br /&gt;
        print(x, '\t',end=' ')&lt;br /&gt;
        pažymiai = mokiniai[x]&lt;br /&gt;
        spausdink_pažymius(pažymiai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, į tai, kaip žodyno &amp;lt;code&amp;gt;mokiniai&amp;lt;/code&amp;gt; raktai yra išimami į kintamąjį &amp;lt;code&amp;gt;raktai&amp;lt;/code&amp;gt; su komanda &amp;lt;code&amp;gt;raktai = list(mokiniai.keys())&amp;lt;/code&amp;gt;. Kintamasis &amp;lt;code&amp;gt;raktai&amp;lt;/code&amp;gt; turės būti rūšiuojamas, todėl yra paverčiamas į sąrašą. Taip bus galima naudoti visas sąrašų funkcijas.  Toliau raktai yra surūšiuojami eilutėje &amp;lt;code&amp;gt;raktai.sort()&amp;lt;/code&amp;gt;.  &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; yra naudojamas pereiti per visus raktus.  Pažymiai yra saugomi kaip sąrašas žodyno viduje, todėl priskyrimas &amp;lt;code&amp;gt;pažymiai = mokiniai[x]&amp;lt;/code&amp;gt; duoda &amp;lt;code&amp;gt;pažymiai&amp;lt;/code&amp;gt; sąrašą, kuris yra saugomas su &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; raktu.  Funkcija &amp;lt;code&amp;gt;spausdink_pažymius&amp;lt;/code&amp;gt; tiesiog spausdina sąrašą ir yra aprašyta keliomis eilutėmis žemiau.&lt;br /&gt;
&lt;br /&gt;
Tolimesnės programos eilutės įgyvendina įvairius meniu pasirinkimus.  Eilutė &amp;lt;code&amp;gt;mokiniai[vardas] = [0] * len(max_taškai)&amp;lt;/code&amp;gt; prideda mokinį į žodyną: &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra naujas raktas.  Komanda &amp;lt;code&amp;gt;[0] * len(max_taškai)&amp;lt;/code&amp;gt; tiesiog sukuria žodyno elementą – 0-ių sąrašą, kuris yra tokio pat ilgio kaip ir &amp;lt;code&amp;gt;max_taškai&amp;lt;/code&amp;gt; sąrašas, kuriame vėliau bus sukelti pažymiai.  &lt;br /&gt;
&lt;br /&gt;
Pašalinti mokinį pasirinkimas tiesiog ištrina mokinį, panašiai kaip ir telefonų knygutės pavyzdyje.  &lt;br /&gt;
Įrašyti mokinį pasirinkimas yra šiek tiek sudėtingesnis.  Pažymiai yra  gaunami komandinėje eilutėje &lt;br /&gt;
&amp;lt;code&amp;gt;pažymiai = mokiniai[vardas]&amp;lt;/code&amp;gt;, ji gauna nuorodą į mokinio &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; pažymius.  Tada pažymys yra  įrašomas komanda &amp;lt;code&amp;gt;pažymiai[kuris] = pažymys&amp;lt;/code&amp;gt;.  Tu gali pastebėti, kad &amp;lt;code&amp;gt;pažymiai&amp;lt;/code&amp;gt; niekada negrąžinami į mokinių žodyną (tokios komandos niekada nerašome:  &amp;lt;code&amp;gt;mokiniai[vardas] = pažymiai&amp;lt;/code&amp;gt;).  Pakeisto pažymių sąrašo į žodyną grąžinti nereikia todėl, kad komanda &amp;lt;code&amp;gt;pažymiai[kuris] = pažymys&amp;lt;/code&amp;gt; mes gauname ne realų sąrašą, o nuorodą į tą sąrašą, tada  &amp;lt;code&amp;gt;pažymiai&amp;lt;/code&amp;gt; iš tiesų yra tik kitas &amp;lt;code&amp;gt;mokiniai[vardas]&amp;lt;/code&amp;gt; pavadinimas. Dėl to, keičiant &amp;lt;code&amp;gt;pažymiai&amp;lt;/code&amp;gt; keičiasi ir &amp;lt;code&amp;gt;mokiniai[vardas]&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Žodynai turi nesudėtingą metodą susieti raktus su reikšmėmis. Tai gali būti naudojama norint lengvai sekti duomenis, pridedamus prie įvairių raktų.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Loginiai reiškiniai |next=Modulių naudojimas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3907</id>
		<title>Python Vadovėlis/Modulių naudojimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3907"/>
		<updated>2022-03-17T06:11:21Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;br /&gt;
&lt;br /&gt;
Štai šio skyriaus pratimas. Failas, kuriame yra ši užduotis, geriausia būtų pavadinti kalendorius.py, kad nesimaišytų su importuojamu calendar.py moduliu. Modulis iš tiesų yra failas su priesaga .py, kuriame yra papildomų funkcijų rinkinys, kurį norite įtraukti ir naudoti savo programoje. Eilutė &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt; iš tikrųjų ieško failo pavadinimu calendar.py ir jį su jo funkcijomis įtraukia į savo kodą, kad galėtume naudoti funkciją &amp;lt;code&amp;gt;prcal&amp;lt;/code&amp;gt; funkciją, kuri atspausdins visų metų kalendorių. Jei failas būtų pavadintas calendar.py ir matytų &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt;, jis bandytų skaityti pats save, ir kodas tada neveiktų tinkamai.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import calendar&lt;br /&gt;
metai = int(input(&amp;quot;Įvesk metų skaičių: &amp;quot;))&lt;br /&gt;
calendar.prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir čia yra gautos programos išvestis:&lt;br /&gt;
&lt;br /&gt;
 Įvesk metų skaičių: 2001&lt;br /&gt;
 &lt;br /&gt;
                                  2001                                  &lt;br /&gt;
 &lt;br /&gt;
        Sausis                  Vasaris                    Kovas      &lt;br /&gt;
 &lt;br /&gt;
 Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se&lt;br /&gt;
 1  2  3  4  5  6  7                1  2  3  4                1  2  3  4     &lt;br /&gt;
 8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11&lt;br /&gt;
 15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18     &lt;br /&gt;
 22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25     &lt;br /&gt;
 29 30 31                  26 27 28                  26 27 28 29 30 31        &lt;br /&gt;
&lt;br /&gt;
(Aš praleidau kai kurias išvesties dalis, bet manau, kad principas aiškus.) Taigi, ką daro programa? Pirma eilutė &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt; naudoja naują komandą &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt;.  Komanda &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; įkelia modulį (šiuo atveju &amp;lt;code&amp;gt;calendar&amp;lt;/code&amp;gt; modulį).  Norint pamatyti standartiniuose moduliuose esančias funkcijas, ieškok Python'o bibliotekos nuorodos (jei atsisiuntei biblioteką) arba eik į http://docs.python.org/3/library/.  Jei pažvelsi į kalendoriaus modulio dokumentaciją, jame yra funkcija, vadinama &amp;lt;code&amp;gt;prcal&amp;lt;/code&amp;gt;, kuri spausdina metų kalendorių. Komanda &amp;lt;code&amp;gt;calendar.prcal(metai)&amp;lt;/code&amp;gt; naudoja šią funkciją. Apskritai, norint naudoti modulį, reikia naudoti raktažodį &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; ir kartu panaudoti &amp;lt;code&amp;gt;modulio_pavadinimas.function&amp;lt;/code&amp;gt;, kreipiantis į funkcijas esančias modulyje. Yra ir kitas būdas parašyti analogišką programą:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from calendar import prcal&lt;br /&gt;
&lt;br /&gt;
metai = int(input(&amp;quot;Įveskite metų skaičių: &amp;quot;))&lt;br /&gt;
prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Šis variantas importuoja konkrečią funkciją iš modulio. &lt;br /&gt;
Panagrinėkime dar vieną programą, kuri naudoja Python'o biblioteką (pavadink ją clock.py) (tuo pačiu metu paspausk Ctrl ir klavišą c, kad nutrauktum darbą):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from time import time, ctime&lt;br /&gt;
&lt;br /&gt;
ankstesnis_laikas = &amp;quot;&amp;quot;&lt;br /&gt;
while True:&lt;br /&gt;
    laikas = ctime(time())&lt;br /&gt;
    if ankstesnis_laikas != laikas:&lt;br /&gt;
        print(&amp;quot;Laikas:&amp;quot;, ctime(time()))&lt;br /&gt;
        ankstesnis_laikas = laikas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dalis išvesties yra:&lt;br /&gt;
&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:20 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:21 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:22 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:23 2021&lt;br /&gt;
 &lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;laikas.py&amp;quot;, line 5, in &amp;lt;module&amp;gt;&lt;br /&gt;
     laikas = ctime(time())&lt;br /&gt;
 KeyboardInterrupt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kadangi išvestis yra begalinė, todėl ją atšaukiu (kitu atveju, išvestis tęstųsi bent jau tol, kol būtų paspaustas Ctrl+C). Programa atlieka nesibaigiantį ciklą (&amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; yra visada tiesa, taigi &amp;lt;code&amp;gt;while True:&amp;lt;/code&amp;gt; vykdoma amžinai). Kiekvieną kartą patikrina, ar laikas nepasikeitė, ir išspausdina, jei pasikeitė. Atkreipk dėmesį, kaip naudojami keli funkcijų pavadinimai po ''import'' sakinyje &amp;lt;code&amp;gt;from time import time, ctime&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Python'o bibliotekoje yra daug naudingų funkcijų. Šios funkcijos suteikia Tavo programoms daugiau galimybių ir daugelis jų gali supaprastinti programavimą Python'u.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Perrašyk &amp;lt;code&amp;gt;daugiau_maziau.py&amp;lt;/code&amp;gt; programą iš skyriaus [[Vadovėlis/Pasirinkimai#Pavyzdžiai|Pasirinkimai]], kad naudotų atsitiktinį sveikąjį skaičių nuo 0 iki 99, o ne įkoduotą 7. Naudok &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; modulį ir &amp;lt;code&amp;gt;randint&amp;lt;/code&amp;gt; funkciją.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! colspan=2 | Sprendimas &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from random import randint&lt;br /&gt;
&lt;br /&gt;
skaičius = randint(0, 99)&lt;br /&gt;
spėjimas = -1&lt;br /&gt;
while spėjimas != skaičius: &lt;br /&gt;
    spėjimas = int(input (&amp;quot;Atspėk skaičių: &amp;quot;))&lt;br /&gt;
    if spėjimas &amp;gt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per didelis&amp;quot;)&lt;br /&gt;
    elif spėjimas &amp;lt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per mažas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Būtent tas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kiti moduliai==&lt;br /&gt;
Kartais Tu gali norėti naudoti Python'o modulį, kurio nėra standatinėje Python versijoje. Tu gali juos importuoti, tačiau pirmiau turėsi juos įsidiegti savo kompiuterį.&lt;br /&gt;
&lt;br /&gt;
===Kuriant savo modulį===&lt;br /&gt;
Kai Python'as skaito importavimo komandą, jis pirmiausia patikrina Tavo katalogo failus, po to svetainės paketus ir iš anksto įdiegtus modulius. Norint sukurti savo modulį, tiesiog sukurk .py failą dabartiniame kataloge ir parašyk komandą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taip bus bandoma importuoti failą modulis.py iš dabartinio katalogo, o jei modulis bus nerastas, iš svetainių paketų ir iš anksto paruoštų modulių. Pakeitus modulį į Tavo sukurto .py failo pavadinimą, jis bus importuotas.&lt;br /&gt;
&lt;br /&gt;
Tačiau kai jis importuoja modulį, jis iš esmės paleidžia failą kaip programą, todėl bet koks jame esantis kodas bus paleistas. Patartina visą kodą sugrupuoti į funkcijas.&lt;br /&gt;
====__name__ == __main__ triukas====&lt;br /&gt;
Python'e kintamasis &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; suteiks dabartinį programos pavadinimą. Jei importuojamas modulis spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, tada jis atspausdins modulio pavadinimą. Jei dabartinis failas spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, jis atspausdins &amp;lt;code&amp;gt;__main__&amp;lt;/code&amp;gt;, tam, kad parodytų, kad tai yra pagrindinė programa.&lt;br /&gt;
&lt;br /&gt;
Sąlyginis sakinys patikrina vardo kintamąjį ir paleidžia kodą, jei programa yra pagrindinė. Taip ji gali apeiti netyčinio paleidimo problemą, sukuriamą importuojant modulį. Tarkime, kad turi failą, kuriame veikia tam tikras kodas. Jis taip pat turi funkciją, kurią nori naudoti kitoje programoje. Tačiau nori tik funkcijos, esančios faile, o ne paleisti vykdyti kodą. Parašius žemiau pateiktą kodą, programa bus vykdoma tik tuo atveju, jei bus spustelėtas ar paleistas vykdyti esamas failas, o ne importuotas.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šiuo atveju, jei failas paleidžiamas, bet neimportuojamas, jis vykdys komandą pass. Pass komandą galite pakeisti kodu, kurį norite paleisti, kai jis nėra importuotas. Tiesiog nepamiršk to kodo parašyti.&lt;br /&gt;
===pip modulis===&lt;br /&gt;
Pip modulis yra įdiegtas kartu su Python'u ir veikia kaip modulio atsisiuntėjas/tvarkytojas. Kitus modulius galima atsisiųsti iš interneto naudojant pip.&lt;br /&gt;
&lt;br /&gt;
Pip modulis nenaudojamas Python'o interpretatoriuje, bet yra vykdomas per komandinę eilutę. Norint jį naudoti, atidaryk komandų eilutės programėlę (Windows tai yra komandinė eilutė, Mac/Linux – terminalas) ir įvesk šį kodą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
py3 -m pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
arba alternatyvus kodas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši komandų eilutė bandys atsisiųsti ir įdiegti modulį iš vartotojo pateiktos Python'o modulių duomenų bazės. Modulis gali būti pakeistas į konkretaus modulio pavadinimą.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3906</id>
		<title>Python Vadovėlis/Modulių naudojimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3906"/>
		<updated>2022-03-17T06:08:05Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;br /&gt;
&lt;br /&gt;
Štai šio skyriaus pratimas. Failas, kuriame yra ši užduotis, geriausia būtų pavadinti cal.py, kad nesimaišytų su importuojamu calendar.py moduliu. Modulis iš tiesų yra failas su priesaga .py, kuriame yra papildomų funkcijų rinkinys, kurį norite įtraukti ir naudoti savo programoje. Eilutė &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt; iš tikrųjų ieško failo pavadinimu calendar.py ir jį įtraukią į savo kodą. Jei failas būtų pavadintas calendar.py ir matytų &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt;, jis bandytų skaityti pats save, ir kodas tada neveiktų tinkamai.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import calendar&lt;br /&gt;
metai = int(input(&amp;quot;Įvesk metų skaičių: &amp;quot;))&lt;br /&gt;
calendar.prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir čia yra gautos programos išvestis:&lt;br /&gt;
&lt;br /&gt;
 Įvesk metų skaičių: 2001&lt;br /&gt;
 &lt;br /&gt;
                                  2001                                  &lt;br /&gt;
 &lt;br /&gt;
        Sausis                  Vasaris                    Kovas      &lt;br /&gt;
 &lt;br /&gt;
 Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se&lt;br /&gt;
 1  2  3  4  5  6  7                1  2  3  4                1  2  3  4     &lt;br /&gt;
 8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11&lt;br /&gt;
 15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18     &lt;br /&gt;
 22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25     &lt;br /&gt;
 29 30 31                  26 27 28                  26 27 28 29 30 31        &lt;br /&gt;
&lt;br /&gt;
(Aš praleidau kai kurias išvesties dalis, bet manau, kad principas aiškus.) Taigi, ką daro programa? Pirma eilutė &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt; naudoja naują komandą &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt;.  Komanda &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; įkelia modulį (šiuo atveju &amp;lt;code&amp;gt;calendar&amp;lt;/code&amp;gt; modulį).  Norint pamatyti standartiniuose moduliuose esančias funkcijas, ieškok Python'o bibliotekos nuorodos (jei atsisiuntei biblioteką) arba eik į http://docs.python.org/3/library/.  Jei pažvelsi į kalendoriaus modulio dokumentaciją, jame yra funkcija, vadinama &amp;lt;code&amp;gt;prcal&amp;lt;/code&amp;gt;, kuri spausdina metų kalendorių. Komanda &amp;lt;code&amp;gt;calendar.prcal(metai)&amp;lt;/code&amp;gt; naudoja šią funkciją. Apskritai, norint naudoti modulį, reikia naudoti raktažodį &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; ir kartu panaudoti &amp;lt;code&amp;gt;modulio_pavadinimas.function&amp;lt;/code&amp;gt;, kreipiantis į funkcijas esančias modulyje. Yra ir kitas būdas parašyti analogišką programą:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from calendar import prcal&lt;br /&gt;
&lt;br /&gt;
metai = int(input(&amp;quot;Įveskite metų skaičių: &amp;quot;))&lt;br /&gt;
prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Šis variantas importuoja konkrečią funkciją iš modulio. &lt;br /&gt;
Panagrinėkime dar vieną programą, kuri naudoja Python'o biblioteką (pavadink ją clock.py) (tuo pačiu metu paspausk Ctrl ir klavišą c, kad nutrauktum darbą):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from time import time, ctime&lt;br /&gt;
&lt;br /&gt;
ankstesnis_laikas = &amp;quot;&amp;quot;&lt;br /&gt;
while True:&lt;br /&gt;
    laikas = ctime(time())&lt;br /&gt;
    if ankstesnis_laikas != laikas:&lt;br /&gt;
        print(&amp;quot;Laikas:&amp;quot;, ctime(time()))&lt;br /&gt;
        ankstesnis_laikas = laikas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dalis išvesties yra:&lt;br /&gt;
&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:20 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:21 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:22 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:23 2021&lt;br /&gt;
 &lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;laikas.py&amp;quot;, line 5, in &amp;lt;module&amp;gt;&lt;br /&gt;
     laikas = ctime(time())&lt;br /&gt;
 KeyboardInterrupt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kadangi išvestis yra begalinė, todėl ją atšaukiu (kitu atveju, išvestis tęstųsi bent jau tol, kol būtų paspaustas Ctrl+C). Programa atlieka nesibaigiantį ciklą (&amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; yra visada tiesa, taigi &amp;lt;code&amp;gt;while True:&amp;lt;/code&amp;gt; vykdoma amžinai). Kiekvieną kartą patikrina, ar laikas nepasikeitė, ir išspausdina, jei pasikeitė. Atkreipk dėmesį, kaip naudojami keli funkcijų pavadinimai po ''import'' sakinyje &amp;lt;code&amp;gt;from time import time, ctime&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Python'o bibliotekoje yra daug naudingų funkcijų. Šios funkcijos suteikia Tavo programoms daugiau galimybių ir daugelis jų gali supaprastinti programavimą Python'u.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Perrašyk &amp;lt;code&amp;gt;daugiau_maziau.py&amp;lt;/code&amp;gt; programą iš skyriaus [[Vadovėlis/Pasirinkimai#Pavyzdžiai|Pasirinkimai]], kad naudotų atsitiktinį sveikąjį skaičių nuo 0 iki 99, o ne įkoduotą 7. Naudok &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; modulį ir &amp;lt;code&amp;gt;randint&amp;lt;/code&amp;gt; funkciją.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! colspan=2 | Sprendimas &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from random import randint&lt;br /&gt;
&lt;br /&gt;
skaičius = randint(0, 99)&lt;br /&gt;
spėjimas = -1&lt;br /&gt;
while spėjimas != skaičius: &lt;br /&gt;
    spėjimas = int(input (&amp;quot;Atspėk skaičių: &amp;quot;))&lt;br /&gt;
    if spėjimas &amp;gt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per didelis&amp;quot;)&lt;br /&gt;
    elif spėjimas &amp;lt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per mažas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Būtent tas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kiti moduliai==&lt;br /&gt;
Kartais Tu gali norėti naudoti Python'o modulį, kurio nėra standatinėje Python versijoje. Tu gali juos importuoti, tačiau pirmiau turėsi juos įsidiegti savo kompiuterį.&lt;br /&gt;
&lt;br /&gt;
===Kuriant savo modulį===&lt;br /&gt;
Kai Python'as skaito importavimo komandą, jis pirmiausia patikrina Tavo katalogo failus, po to svetainės paketus ir iš anksto įdiegtus modulius. Norint sukurti savo modulį, tiesiog sukurk .py failą dabartiniame kataloge ir parašyk komandą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taip bus bandoma importuoti failą modulis.py iš dabartinio katalogo, o jei modulis bus nerastas, iš svetainių paketų ir iš anksto paruoštų modulių. Pakeitus modulį į Tavo sukurto .py failo pavadinimą, jis bus importuotas.&lt;br /&gt;
&lt;br /&gt;
Tačiau kai jis importuoja modulį, jis iš esmės paleidžia failą kaip programą, todėl bet koks jame esantis kodas bus paleistas. Patartina visą kodą sugrupuoti į funkcijas.&lt;br /&gt;
====__name__ == __main__ triukas====&lt;br /&gt;
Python'e kintamasis &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; suteiks dabartinį programos pavadinimą. Jei importuojamas modulis spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, tada jis atspausdins modulio pavadinimą. Jei dabartinis failas spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, jis atspausdins &amp;lt;code&amp;gt;__main__&amp;lt;/code&amp;gt;, tam, kad parodytų, kad tai yra pagrindinė programa.&lt;br /&gt;
&lt;br /&gt;
Sąlyginis sakinys patikrina vardo kintamąjį ir paleidžia kodą, jei programa yra pagrindinė. Taip ji gali apeiti netyčinio paleidimo problemą, sukuriamą importuojant modulį. Tarkime, kad turi failą, kuriame veikia tam tikras kodas. Jis taip pat turi funkciją, kurią nori naudoti kitoje programoje. Tačiau nori tik funkcijos, esančios faile, o ne paleisti vykdyti kodą. Parašius žemiau pateiktą kodą, programa bus vykdoma tik tuo atveju, jei bus spustelėtas ar paleistas vykdyti esamas failas, o ne importuotas.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šiuo atveju, jei failas paleidžiamas, bet neimportuojamas, jis vykdys komandą pass. Pass komandą galite pakeisti kodu, kurį norite paleisti, kai jis nėra importuotas. Tiesiog nepamiršk to kodo parašyti.&lt;br /&gt;
===pip modulis===&lt;br /&gt;
Pip modulis yra įdiegtas kartu su Python'u ir veikia kaip modulio atsisiuntėjas/tvarkytojas. Kitus modulius galima atsisiųsti iš interneto naudojant pip.&lt;br /&gt;
&lt;br /&gt;
Pip modulis nenaudojamas Python'o interpretatoriuje, bet yra vykdomas per komandinę eilutę. Norint jį naudoti, atidaryk komandų eilutės programėlę (Windows tai yra komandinė eilutė, Mac/Linux – terminalas) ir įvesk šį kodą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
py3 -m pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
arba alternatyvus kodas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši komandų eilutė bandys atsisiųsti ir įdiegti modulį iš vartotojo pateiktos Python'o modulių duomenų bazės. Modulis gali būti pakeistas į konkretaus modulio pavadinimą.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3905</id>
		<title>Python Vadovėlis/Modulių naudojimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3905"/>
		<updated>2022-03-17T06:03:29Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;br /&gt;
&lt;br /&gt;
Štai šio skyriaus pratimas. Failas, kuriame yra ši užduotis, geriausia būtų pavadinti cal.py, kad nesimaišytų su importuojamu calendar.py. Eilutė &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt; iš tikrųjų ieško failo pavadinimu calendar.py ir jį įtraukią į savo kodą. Jei failas būtų pavadintas calendar.py ir matytų &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt;, jis bandytų skaityti pats save, ir kodas tada neveiktų tinkamai.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import calendar&lt;br /&gt;
metai = int(input(&amp;quot;Įvesk metų skaičių: &amp;quot;))&lt;br /&gt;
calendar.prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir čia yra gautos programos išvestis:&lt;br /&gt;
&lt;br /&gt;
 Įvesk metų skaičių: 2001&lt;br /&gt;
 &lt;br /&gt;
                                  2001                                  &lt;br /&gt;
 &lt;br /&gt;
        Sausis                  Vasaris                    Kovas      &lt;br /&gt;
 &lt;br /&gt;
 Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se&lt;br /&gt;
 1  2  3  4  5  6  7                1  2  3  4                1  2  3  4     &lt;br /&gt;
 8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11&lt;br /&gt;
 15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18     &lt;br /&gt;
 22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25     &lt;br /&gt;
 29 30 31                  26 27 28                  26 27 28 29 30 31        &lt;br /&gt;
&lt;br /&gt;
(Aš praleidau kai kurias išvesties dalis, bet manau, kad principas aiškus.) Taigi, ką daro programa? Pirma eilutė &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt; naudoja naują komandą &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt;.  Komanda &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; įkelia modulį (šiuo atveju &amp;lt;code&amp;gt;calendar&amp;lt;/code&amp;gt; modulį).  Norint pamatyti standartiniuose moduliuose esančias funkcijas, ieškok Python'o bibliotekos nuorodos (jei atsisiuntei biblioteką) arba eik į http://docs.python.org/3/library/.  Jei pažvelsi į kalendoriaus modulio dokumentaciją, jame yra funkcija, vadinama &amp;lt;code&amp;gt;prcal&amp;lt;/code&amp;gt;, kuri spausdina metų kalendorių. Komanda &amp;lt;code&amp;gt;calendar.prcal(metai)&amp;lt;/code&amp;gt; naudoja šią funkciją. Apskritai, norint naudoti modulį, reikia naudoti raktažodį &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; ir kartu panaudoti &amp;lt;code&amp;gt;modulio_pavadinimas.function&amp;lt;/code&amp;gt;, kreipiantis į funkcijas esančias modulyje. Yra ir kitas būdas parašyti analogišką programą:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from calendar import prcal&lt;br /&gt;
&lt;br /&gt;
metai = int(input(&amp;quot;Įveskite metų skaičių: &amp;quot;))&lt;br /&gt;
prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Šis variantas importuoja konkrečią funkciją iš modulio. &lt;br /&gt;
Panagrinėkime dar vieną programą, kuri naudoja Python'o biblioteką (pavadink ją clock.py) (tuo pačiu metu paspausk Ctrl ir klavišą c, kad nutrauktum darbą):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from time import time, ctime&lt;br /&gt;
&lt;br /&gt;
ankstesnis_laikas = &amp;quot;&amp;quot;&lt;br /&gt;
while True:&lt;br /&gt;
    laikas = ctime(time())&lt;br /&gt;
    if ankstesnis_laikas != laikas:&lt;br /&gt;
        print(&amp;quot;Laikas:&amp;quot;, ctime(time()))&lt;br /&gt;
        ankstesnis_laikas = laikas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dalis išvesties yra:&lt;br /&gt;
&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:20 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:21 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:22 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:23 2021&lt;br /&gt;
 &lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;laikas.py&amp;quot;, line 5, in &amp;lt;module&amp;gt;&lt;br /&gt;
     laikas = ctime(time())&lt;br /&gt;
 KeyboardInterrupt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kadangi išvestis yra begalinė, todėl ją atšaukiu (kitu atveju, išvestis tęstųsi bent jau tol, kol būtų paspaustas Ctrl+C). Programa atlieka nesibaigiantį ciklą (&amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; yra visada tiesa, taigi &amp;lt;code&amp;gt;while True:&amp;lt;/code&amp;gt; vykdoma amžinai). Kiekvieną kartą patikrina, ar laikas nepasikeitė, ir išspausdina, jei pasikeitė. Atkreipk dėmesį, kaip naudojami keli funkcijų pavadinimai po ''import'' sakinyje &amp;lt;code&amp;gt;from time import time, ctime&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Python'o bibliotekoje yra daug naudingų funkcijų. Šios funkcijos suteikia Tavo programoms daugiau galimybių ir daugelis jų gali supaprastinti programavimą Python'u.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Perrašyk &amp;lt;code&amp;gt;daugiau_maziau.py&amp;lt;/code&amp;gt; programą iš skyriaus [[Vadovėlis/Pasirinkimai#Pavyzdžiai|Pasirinkimai]], kad naudotų atsitiktinį sveikąjį skaičių nuo 0 iki 99, o ne įkoduotą 7. Naudok &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; modulį ir &amp;lt;code&amp;gt;randint&amp;lt;/code&amp;gt; funkciją.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! colspan=2 | Sprendimas &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from random import randint&lt;br /&gt;
&lt;br /&gt;
skaičius = randint(0, 99)&lt;br /&gt;
spėjimas = -1&lt;br /&gt;
while spėjimas != skaičius: &lt;br /&gt;
    spėjimas = int(input (&amp;quot;Atspėk skaičių: &amp;quot;))&lt;br /&gt;
    if spėjimas &amp;gt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per didelis&amp;quot;)&lt;br /&gt;
    elif spėjimas &amp;lt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per mažas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Būtent tas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kiti moduliai==&lt;br /&gt;
Kartais Tu gali norėti naudoti Python'o modulį, kurio nėra standatinėje Python versijoje. Tu gali juos importuoti, tačiau pirmiau turėsi juos įsidiegti savo kompiuterį.&lt;br /&gt;
&lt;br /&gt;
===Kuriant savo modulį===&lt;br /&gt;
Kai Python'as skaito importavimo komandą, jis pirmiausia patikrina Tavo katalogo failus, po to svetainės paketus ir iš anksto įdiegtus modulius. Norint sukurti savo modulį, tiesiog sukurk .py failą dabartiniame kataloge ir parašyk komandą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taip bus bandoma importuoti failą modulis.py iš dabartinio katalogo, o jei modulis bus nerastas, iš svetainių paketų ir iš anksto paruoštų modulių. Pakeitus modulį į Tavo sukurto .py failo pavadinimą, jis bus importuotas.&lt;br /&gt;
&lt;br /&gt;
Tačiau kai jis importuoja modulį, jis iš esmės paleidžia failą kaip programą, todėl bet koks jame esantis kodas bus paleistas. Patartina visą kodą sugrupuoti į funkcijas.&lt;br /&gt;
====__name__ == __main__ triukas====&lt;br /&gt;
Python'e kintamasis &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; suteiks dabartinį programos pavadinimą. Jei importuojamas modulis spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, tada jis atspausdins modulio pavadinimą. Jei dabartinis failas spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, jis atspausdins &amp;lt;code&amp;gt;__main__&amp;lt;/code&amp;gt;, tam, kad parodytų, kad tai yra pagrindinė programa.&lt;br /&gt;
&lt;br /&gt;
Sąlyginis sakinys patikrina vardo kintamąjį ir paleidžia kodą, jei programa yra pagrindinė. Taip ji gali apeiti netyčinio paleidimo problemą, sukuriamą importuojant modulį. Tarkime, kad turi failą, kuriame veikia tam tikras kodas. Jis taip pat turi funkciją, kurią nori naudoti kitoje programoje. Tačiau nori tik funkcijos, esančios faile, o ne paleisti vykdyti kodą. Parašius žemiau pateiktą kodą, programa bus vykdoma tik tuo atveju, jei bus spustelėtas ar paleistas vykdyti esamas failas, o ne importuotas.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šiuo atveju, jei failas paleidžiamas, bet neimportuojamas, jis vykdys komandą pass. Pass komandą galite pakeisti kodu, kurį norite paleisti, kai jis nėra importuotas. Tiesiog nepamiršk to kodo parašyti.&lt;br /&gt;
===pip modulis===&lt;br /&gt;
Pip modulis yra įdiegtas kartu su Python'u ir veikia kaip modulio atsisiuntėjas/tvarkytojas. Kitus modulius galima atsisiųsti iš interneto naudojant pip.&lt;br /&gt;
&lt;br /&gt;
Pip modulis nenaudojamas Python'o interpretatoriuje, bet yra vykdomas per komandinę eilutę. Norint jį naudoti, atidaryk komandų eilutės programėlę (Windows tai yra komandinė eilutė, Mac/Linux – terminalas) ir įvesk šį kodą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
py3 -m pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
arba alternatyvus kodas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši komandų eilutė bandys atsisiųsti ir įdiegti modulį iš vartotojo pateiktos Python'o modulių duomenų bazės. Modulis gali būti pakeistas į konkretaus modulio pavadinimą.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3904</id>
		<title>Python Vadovėlis/Modulių naudojimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3904"/>
		<updated>2022-03-17T05:59:55Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;br /&gt;
&lt;br /&gt;
Štai šio skyriaus pratimas. Failas, kuriame yra ši užduotis, geriausia būtų pavadinti cal.py, kad nesimaišytų su importuojamu calendar.py. Eilutė &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt; iš tikrųjų ieško failo pavadinimu calendar.py ir jį įtraukią į savo kodą. Jei failas būtų pavadintas calendar.py ir matytų &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt;, jis bandytų skaityti pats save, ir kodas tada neveiktų tinkamai.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import calendar&lt;br /&gt;
metai = int(input(&amp;quot;Įvesk metų skaičių: &amp;quot;))&lt;br /&gt;
calendar.prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir čia yra gautos programos išvestis:&lt;br /&gt;
&lt;br /&gt;
 Įvesk metų skaičių: 2001&lt;br /&gt;
 &lt;br /&gt;
                                  2001                                  &lt;br /&gt;
 &lt;br /&gt;
        Sausis                  Vasaris                    Kovas      &lt;br /&gt;
 &lt;br /&gt;
 Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se&lt;br /&gt;
 1  2  3  4  5  6  7                1  2  3  4                1  2  3  4     &lt;br /&gt;
 8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11&lt;br /&gt;
 15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18     &lt;br /&gt;
 22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25     &lt;br /&gt;
 29 30 31                  26 27 28                  26 27 28 29 30 31        &lt;br /&gt;
&lt;br /&gt;
(Aš praleidau kai kurias išvesties dalis, bet manau, kad principas aiškus.) Taigi, ką daro programa? Pirma eilutė &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt; naudoja naują komandą &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt;.  Komanda &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; įkelia modulį (šiuo atveju &amp;lt;code&amp;gt;calendar&amp;lt;/code&amp;gt; modulį).  Norint pamatyti standartiniuose moduliuose esančias funkcijas, ieškok Python'o bibliotekos nuorodos (jei atsisiuntei biblioteką) arba eik į http://docs.python.org/3/library/.  Jei pažvelsi į kalendoriaus modulio dokumentaciją, jame yra funkcija, vadinama &amp;lt;code&amp;gt;prcal&amp;lt;/code&amp;gt;, kuri spausdina metų kalendorių. Komanda &amp;lt;code&amp;gt;calendar.prcal(metai)&amp;lt;/code&amp;gt; naudoja šią funkciją. Apskritai, norint naudoti modulį, reikia naudoti raktažodį &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; ir kartu panaudoti &amp;lt;code&amp;gt;modulio_pavadinimas.function&amp;lt;/code&amp;gt;, kreipiantis į funkcijas esančias modulyje. Yra ir kitas būdas parašyti analogišką programą:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from calendar import prcal&lt;br /&gt;
&lt;br /&gt;
metai = int(input(&amp;quot;Įveskite metų skaičių: &amp;quot;))&lt;br /&gt;
prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Šis variantas importuoja konkrečią funkciją iš modulio. &lt;br /&gt;
Panagrinėkime dar vieną programą, kuri naudoja Python'o biblioteką (pavadink ją clock.py) (tuo pačiu metu paspausk Ctrl ir klavišą c, kad nutrauktum darbą):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from time import time, ctime&lt;br /&gt;
&lt;br /&gt;
ankstesnis_laikas = &amp;quot;&amp;quot;&lt;br /&gt;
while True:&lt;br /&gt;
    laikas = ctime(time())&lt;br /&gt;
    if ankstesnis_laikas != laikas:&lt;br /&gt;
        print(&amp;quot;Laikas:&amp;quot;, ctime(time()))&lt;br /&gt;
        ankstesnis_laikas = laikas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dalis išvesties yra:&lt;br /&gt;
&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:20 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:21 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:22 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:23 2021&lt;br /&gt;
 &lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;laikas.py&amp;quot;, line 5, in &amp;lt;module&amp;gt;&lt;br /&gt;
     laikas = ctime(time())&lt;br /&gt;
 KeyboardInterrupt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kadangi išvestis yra begalinė, todėl ją atšaukiu (kitu atveju, išvestis tęstųsi bent jau tol, kol būtų paspaustas Ctrl+C). Programa atlieka nesibaigiantį ciklą (&amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; yra visada tiesa, taigi &amp;lt;code&amp;gt;while True:&amp;lt;/code&amp;gt; vykdoma amžinai). Kiekvieną kartą patikrina, ar laikas nepasikeitė, ir išspausdina, jei pasikeitė. Atkreipk dėmesį, kaip naudojami keli funkcijų pavadinimai po ''import'' sakinyje &amp;lt;code&amp;gt;from time import time, ctime&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Python'o bibliotekoje yra daug naudingų funkcijų. Šios funkcijos suteikia Tavo programoms daugiau galimybių ir daugelis jų gali supaprastinti programavimą Python'u.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Perrašyk &amp;lt;code&amp;gt;daugiau_maziau.py&amp;lt;/code&amp;gt; programą iš skyriaus [[Vadovėlis/Pasirinkimai#Pavyzdžiai|Pasirinkimai]], kad naudotų atsitiktinį sveikąjį skaičių nuo 0 iki 99, o ne įkoduotą 7. Naudok Python'o dokumentaciją, kad surastum tinkamą modulį ir funkciją.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! colspan=2 | Sprendimas &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from random import randint&lt;br /&gt;
&lt;br /&gt;
skaičius = randint(0, 99)&lt;br /&gt;
spėjimas = -1&lt;br /&gt;
while spėjimas != skaičius: &lt;br /&gt;
    spėjimas = int(input (&amp;quot;Atspėk skaičių: &amp;quot;))&lt;br /&gt;
    if spėjimas &amp;gt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per didelis&amp;quot;)&lt;br /&gt;
    elif spėjimas &amp;lt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per mažas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Būtent tas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kiti moduliai==&lt;br /&gt;
Kartais Tu gali norėti naudoti Python'o modulį, kurio nėra standatinėje Python versijoje. Tu gali juos importuoti, tačiau pirmiau turėsi juos įsidiegti savo kompiuterį.&lt;br /&gt;
&lt;br /&gt;
===Kuriant savo modulį===&lt;br /&gt;
Kai Python'as skaito importavimo komandą, jis pirmiausia patikrina Tavo katalogo failus, po to svetainės paketus ir iš anksto įdiegtus modulius. Norint sukurti savo modulį, tiesiog sukurk .py failą dabartiniame kataloge ir parašyk komandą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taip bus bandoma importuoti failą modulis.py iš dabartinio katalogo, o jei modulis bus nerastas, iš svetainių paketų ir iš anksto paruoštų modulių. Pakeitus modulį į Tavo sukurto .py failo pavadinimą, jis bus importuotas.&lt;br /&gt;
&lt;br /&gt;
Tačiau kai jis importuoja modulį, jis iš esmės paleidžia failą kaip programą, todėl bet koks jame esantis kodas bus paleistas. Patartina visą kodą sugrupuoti į funkcijas.&lt;br /&gt;
====__name__ == __main__ triukas====&lt;br /&gt;
Python'e kintamasis &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; suteiks dabartinį programos pavadinimą. Jei importuojamas modulis spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, tada jis atspausdins modulio pavadinimą. Jei dabartinis failas spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, jis atspausdins &amp;lt;code&amp;gt;__main__&amp;lt;/code&amp;gt;, tam, kad parodytų, kad tai yra pagrindinė programa.&lt;br /&gt;
&lt;br /&gt;
Sąlyginis sakinys patikrina vardo kintamąjį ir paleidžia kodą, jei programa yra pagrindinė. Taip ji gali apeiti netyčinio paleidimo problemą, sukuriamą importuojant modulį. Tarkime, kad turi failą, kuriame veikia tam tikras kodas. Jis taip pat turi funkciją, kurią nori naudoti kitoje programoje. Tačiau nori tik funkcijos, esančios faile, o ne paleisti vykdyti kodą. Parašius žemiau pateiktą kodą, programa bus vykdoma tik tuo atveju, jei bus spustelėtas ar paleistas vykdyti esamas failas, o ne importuotas.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šiuo atveju, jei failas paleidžiamas, bet neimportuojamas, jis vykdys komandą pass. Pass komandą galite pakeisti kodu, kurį norite paleisti, kai jis nėra importuotas. Tiesiog nepamiršk to kodo parašyti.&lt;br /&gt;
===pip modulis===&lt;br /&gt;
Pip modulis yra įdiegtas kartu su Python'u ir veikia kaip modulio atsisiuntėjas/tvarkytojas. Kitus modulius galima atsisiųsti iš interneto naudojant pip.&lt;br /&gt;
&lt;br /&gt;
Pip modulis nenaudojamas Python'o interpretatoriuje, bet yra vykdomas per komandinę eilutę. Norint jį naudoti, atidaryk komandų eilutės programėlę (Windows tai yra komandinė eilutė, Mac/Linux – terminalas) ir įvesk šį kodą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
py3 -m pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
arba alternatyvus kodas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši komandų eilutė bandys atsisiųsti ir įdiegti modulį iš vartotojo pateiktos Python'o modulių duomenų bazės. Modulis gali būti pakeistas į konkretaus modulio pavadinimą.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3888</id>
		<title>Python Vadovėlis/Modulių naudojimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Moduli%C5%B3_naudojimas&amp;diff=3888"/>
		<updated>2022-03-05T14:36:51Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;br /&gt;
&lt;br /&gt;
Štai šio skyriaus pratimas (pavadink failą cal.py (&amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; iš tikrųjų ieško failo pavadinimu calendar.py ir jį įtraukią į savo kodą. Jei failas būtų pavadintas calendar.py ir matytų &amp;quot;import calendar&amp;quot;, jis bandytų skaityti pats save, o tai neveiktų tinkamai.)):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import calendar&lt;br /&gt;
metai = int(input(&amp;quot;Įvesk metų skaičių: &amp;quot;))&lt;br /&gt;
calendar.prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir čia yra gautos programos išvestis:&lt;br /&gt;
&lt;br /&gt;
 Įvesk metų skaičių: 2001&lt;br /&gt;
 &lt;br /&gt;
                                  2001                                  &lt;br /&gt;
 &lt;br /&gt;
        Sausis                  Vasaris                    Kovas      &lt;br /&gt;
 &lt;br /&gt;
 Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se      Pr An Tr Ke Pe Še Se&lt;br /&gt;
 1  2  3  4  5  6  7                1  2  3  4                1  2  3  4     &lt;br /&gt;
 8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11&lt;br /&gt;
 15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18     &lt;br /&gt;
 22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25     &lt;br /&gt;
 29 30 31                  26 27 28                  26 27 28 29 30 31        &lt;br /&gt;
&lt;br /&gt;
(Aš praleidau kai kurias išvesties dalis, bet manau, kad principas aiškus.) Taigi, ką daro programa? Pirma eilutė &amp;lt;code&amp;gt;import calendar&amp;lt;/code&amp;gt; naudoja naują komandą &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt;.  Komanda &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; įkelia modulį (šiuo atveju &amp;lt;code&amp;gt;calendar&amp;lt;/code&amp;gt; modulį).  Norint pamatyti standartiniuose moduliuose esančias funkcijas, ieškok Python'o bibliotekos nuorodos (jei atsisiuntei biblioteką) arba eik į http://docs.python.org/3/library/.  Jei pažvelsi į kalendoriaus modulio dokumentaciją, jame yra funkcija, vadinama &amp;lt;code&amp;gt;prcal&amp;lt;/code&amp;gt;, kuri spausdina metų kalendorių. Komanda &amp;lt;code&amp;gt;calendar.prcal(metai)&amp;lt;/code&amp;gt; naudoja šią funkciją. Apskritai, norint naudoti modulį, reikia naudoti raktažodį &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; ir kartu panaudoti &amp;lt;code&amp;gt;modulio_pavadinimas.function&amp;lt;/code&amp;gt;, kreipiantis į funkcijas esančias modulyje. Yra ir kitas būdas parašyti analogišką programą:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from calendar import prcal&lt;br /&gt;
&lt;br /&gt;
metai = int(input(&amp;quot;Įveskite metų skaičių: &amp;quot;))&lt;br /&gt;
prcal(metai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Šis variantas importuoja konkrečią funkciją iš modulio. &lt;br /&gt;
Panagrinėkime dar vieną programą, kuri naudoja Python'o biblioteką (pavadink ją clock.py) (tuo pačiu metu paspausk Ctrl ir klavišą c, kad nutrauktum darbą):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from time import time, ctime&lt;br /&gt;
&lt;br /&gt;
ankstesnis_laikas = &amp;quot;&amp;quot;&lt;br /&gt;
while True:&lt;br /&gt;
    laikas = ctime(time())&lt;br /&gt;
    if ankstesnis_laikas != laikas:&lt;br /&gt;
        print(&amp;quot;Laikas:&amp;quot;, ctime(time()))&lt;br /&gt;
        ankstesnis_laikas = laikas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dalis išvesties yra:&lt;br /&gt;
&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:20 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:21 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:22 2021&lt;br /&gt;
 Laikas: Tue Dec 21 13:14:23 2021&lt;br /&gt;
 &lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
   File &amp;quot;laikas.py&amp;quot;, line 5, in &amp;lt;module&amp;gt;&lt;br /&gt;
     laikas = ctime(time())&lt;br /&gt;
 KeyboardInterrupt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kadangi išvestis yra begalinė, todėl ją atšaukiu (kitu atveju, išvestis tęstųsi bent jau tol, kol būtų paspaustas Ctrl+C). Programa atlieka nesibaigiantį ciklą (&amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; yra visada tiesa, taigi &amp;lt;code&amp;gt;while True:&amp;lt;/code&amp;gt; vykdoma amžinai). Kiekvieną kartą patikrina, ar laikas nepasikeitė, ir išspausdina, jei pasikeitė. Atkreipk dėmesį, kaip naudojami keli funkcijų pavadinimai po ''import'' sakinyje &amp;lt;code&amp;gt;from time import time, ctime&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Python'o bibliotekoje yra daug naudingų funkcijų. Šios funkcijos suteikia Tavo programoms daugiau galimybių ir daugelis jų gali supaprastinti programavimą Python'u.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Perrašyk &amp;lt;code&amp;gt;daugiau_maziau.py&amp;lt;/code&amp;gt; programą iš skyriaus [[Vadovėlis/Pasirinkimai#Pavyzdžiai|Pasirinkimai]], kad naudotų atsitiktinį sveikąjį skaičių nuo 0 iki 99, o ne įkoduotą 7. Naudok Python'o dokumentaciją, kad surastum tinkamą modulį ir funkciją.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! colspan=2 | Sprendimas &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from random import randint&lt;br /&gt;
&lt;br /&gt;
skaičius = randint(0, 99)&lt;br /&gt;
spėjimas = -1&lt;br /&gt;
while spėjimas != skaičius: &lt;br /&gt;
    spėjimas = int(input (&amp;quot;Atspėk skaičių: &amp;quot;))&lt;br /&gt;
    if spėjimas &amp;gt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per didelis&amp;quot;)&lt;br /&gt;
    elif spėjimas &amp;lt; skaičius:&lt;br /&gt;
        print(&amp;quot;Per mažas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Būtent tas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Kiti moduliai==&lt;br /&gt;
Kartais Tu gali norėti naudoti Python'o modulį, kurio nėra standatinėje Python versijoje. Tu gali juos importuoti, tačiau pirmiau turėsi juos įsidiegti savo kompiuterį.&lt;br /&gt;
&lt;br /&gt;
===Kuriant savo modulį===&lt;br /&gt;
Kai Python'as skaito importavimo komandą, jis pirmiausia patikrina Tavo katalogo failus, po to svetainės paketus ir iš anksto įdiegtus modulius. Norint sukurti savo modulį, tiesiog sukurk .py failą dabartiniame kataloge ir parašyk komandą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taip bus bandoma importuoti failą modulis.py iš dabartinio katalogo, o jei modulis bus nerastas, iš svetainių paketų ir iš anksto paruoštų modulių. Pakeitus modulį į Tavo sukurto .py failo pavadinimą, jis bus importuotas.&lt;br /&gt;
&lt;br /&gt;
Tačiau kai jis importuoja modulį, jis iš esmės paleidžia failą kaip programą, todėl bet koks jame esantis kodas bus paleistas. Patartina visą kodą sugrupuoti į funkcijas.&lt;br /&gt;
====__name__ == __main__ triukas====&lt;br /&gt;
Python'e kintamasis &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; suteiks dabartinį programos pavadinimą. Jei importuojamas modulis spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, tada jis atspausdins modulio pavadinimą. Jei dabartinis failas spausdina &amp;lt;code&amp;gt;__name__&amp;lt;/code&amp;gt; kintamąjį, jis atspausdins &amp;lt;code&amp;gt;__main__&amp;lt;/code&amp;gt;, tam, kad parodytų, kad tai yra pagrindinė programa.&lt;br /&gt;
&lt;br /&gt;
Sąlyginis sakinys patikrina vardo kintamąjį ir paleidžia kodą, jei programa yra pagrindinė. Taip ji gali apeiti netyčinio paleidimo problemą, sukuriamą importuojant modulį. Tarkime, kad turi failą, kuriame veikia tam tikras kodas. Jis taip pat turi funkciją, kurią nori naudoti kitoje programoje. Tačiau nori tik funkcijos, esančios faile, o ne paleisti vykdyti kodą. Parašius žemiau pateiktą kodą, programa bus vykdoma tik tuo atveju, jei bus spustelėtas ar paleistas vykdyti esamas failas, o ne importuotas.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Šiuo atveju, jei failas paleidžiamas, bet neimportuojamas, jis vykdys komandą pass. Pass komandą galite pakeisti kodu, kurį norite paleisti, kai jis nėra importuotas. Tiesiog nepamiršk to kodo parašyti.&lt;br /&gt;
===pip modulis===&lt;br /&gt;
Pip modulis yra įdiegtas kartu su Python'u ir veikia kaip modulio atsisiuntėjas/tvarkytojas. Kitus modulius galima atsisiųsti iš interneto naudojant pip.&lt;br /&gt;
&lt;br /&gt;
Pip modulis nenaudojamas Python'o interpretatoriuje, bet yra vykdomas per komandinę eilutę. Norint jį naudoti, atidaryk komandų eilutės programėlę (Windows tai yra komandinė eilutė, Mac/Linux – terminalas) ir įvesk šį kodą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
py3 -m pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
arba alternatyvus kodas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install modulis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši komandų eilutė bandys atsisiųsti ir įdiegti modulį iš vartotojo pateiktos Python'o modulių duomenų bazės. Modulis gali būti pakeistas į konkretaus modulio pavadinimą.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Žodynai |next=Daugiau apie sąrašus}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3882</id>
		<title>Python Vadovėlis/Rekursija</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3882"/>
		<updated>2022-03-02T15:20:41Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Siekiant tobulumo |next=Įvadas į objektinį programavimą Python 3}}&lt;br /&gt;
&lt;br /&gt;
== Rekursija ==&lt;br /&gt;
&lt;br /&gt;
Programavime rekursine funkcija vadinama funkcija, kuri iškviečia pati save.&lt;br /&gt;
&lt;br /&gt;
=== Įvadas į rekursiją ===&lt;br /&gt;
&lt;br /&gt;
Iki šiol Python'o programoje matėme funkcijas, kurios iškviečia kitas funkcijas. Tačiau funkcija gali iškviesti ir pati save. Pažvelkime į paprastą pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
&lt;br /&gt;
sk = 0&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
def skaitliukas(sk):&lt;br /&gt;
    print(sk)&lt;br /&gt;
    sk+= 1&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei šią programą paleistum VS Code kodo redaktoriuje, ji veiktų amžinai. Vienintelis būdas sustabdyti ciklą būtų nutraukti vykdymą paspaudžiant Ctrl + C klaviatūroje. Tai yra begalinės rekursijos pavyzdys.&lt;br /&gt;
&lt;br /&gt;
Galima ginčytis, kad rekursija yra tik dar vienas būdas atlikti tą patį dalyką kaip ir naudojant ciklą. Kai kuriais atvejais tai yra visiškai teisinga. Tačiau yra ir kitų rekursijos naudojimo būdų, kurie yra labai tinkami, o  &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklai gali būti ne pats geriausias variantas.&lt;br /&gt;
&lt;br /&gt;
Rekursija gali būti valdoma, kaip ir ciklai. Pažvelk į rekursinio ciklo pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
def main():&lt;br /&gt;
    ciklosk= int(input(&amp;quot;Kiek kartų norėtum paleisti ciklą?\n&amp;quot;))&lt;br /&gt;
    skaitliukas = 1&lt;br /&gt;
    recurr(ciklosk,skaitliukas)&lt;br /&gt;
&lt;br /&gt;
def recurr(ciklosk,skaitliukas):&lt;br /&gt;
    if ciklosk&amp;gt; 0:&lt;br /&gt;
        print(&amp;quot;Tai yra ciklo iteracija&amp;quot;,skaitliukas)&lt;br /&gt;
        recurr(ciklosk- 1,skaitliukas + 1)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Ciklas yra pabaigtas.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programoje naudojami argumentai/parametrai rekursijų skaičiui valdyti. Tiesiog naudok tai, ką jau žinai apie funkcijas, ir sek programos eigą. Tai paprasta išsiaiškinti. Jei kyla problemų, grįžk į [[Vadovėlis/Pažangių funkcijų pavyzdys|Pažangių funkcijų pavyzdys]].&lt;br /&gt;
&lt;br /&gt;
== Praktiniai rekursijos pritaikymai ==&lt;br /&gt;
&lt;br /&gt;
Dažnai rekursija yra studijuojama pažengusiu informatikos lygiu. Rekursija dažniausiai naudojama sprendžiant sudėtingas problemas, kurias galima suskirstyti į mažesnes, identiškas problemas. Norint išspręsti problemą, rekursija nebūtina. Problemos, kurias galima išspręsti naudojant rekursiją, greičiausiai gali būti išspręstos ir su ciklais. Be to, ciklas gali būti efektyvesnis nei rekursinė funkcija. Rekursinėms funkcijoms reikia daugiau atminties ir išteklių nei ciklams, todėl daugeliu atvejų jos yra mažiau efektyvios. Šis naudojimo reikalavimas kartais vadinamas &amp;lt;i&amp;gt;overhead&amp;lt;/i&amp;gt;.&lt;br /&gt;
Galbūt galvoji: „Na, kam nerimauti su rekursija. Aš tiesiog naudosiu ciklą. Aš jau žinau, kaip sudaryti ciklą, ir tai yra daug daugiau darbo.“ Ši mintis suprantama, bet ne visai ideali. Sprendžiant sudėtingas problemas, rekursinę funkciją kartais lengviau, greičiau ir paprasčiau sukurti bei programuoti.&lt;br /&gt;
&lt;br /&gt;
Pagalvokite apie šias dvi „taisykles“:&lt;br /&gt;
* Jei galiu išspręsti problemą su ciklu, be rekursijos, funkcija tiesiog grąžina reikšmę.&lt;br /&gt;
* Jei negaliu išspręsti problemos su cilku, be rekursijos, funkcija sumažina problemą iki mažesnės analogiškos problemos ir iškviečia pati save.&lt;br /&gt;
&lt;br /&gt;
Pabandyk pritaikyti rekursinę funkciją faktorialui apskaičiuoti. Jei nesi susipažinęs su faktoriais, skaityk: [https://lt.wikipedia.org/wiki/Faktorialas Faktorialas]&lt;br /&gt;
 &lt;br /&gt;
Skaičiaus n faktorialas &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;, yra žymimas kaip &amp;lt;i&amp;gt;n!&amp;lt;/i&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Štai keletas pagrindinių faktorialo taisyklių:&lt;br /&gt;
&lt;br /&gt;
Jei n = 0 tai n! = 1&lt;br /&gt;
&lt;br /&gt;
Jei n &amp;gt; 0 tai n! = 1 x 2 x 3 x ... x n&lt;br /&gt;
&lt;br /&gt;
Pavyzdžiui, pažiūrėk į skaičiaus 9 faktorialą.&lt;br /&gt;
&lt;br /&gt;
9! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į programą, kuri rekursijos metodu apskaičiuoja bet kurio vartotojo įvesto skaičiaus faktorialą.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    sk = int(input(&amp;quot;Įvesk neneigiamą sveikąjį skaičių.\n&amp;quot;))&lt;br /&gt;
    fact = factorialas(sk)&lt;br /&gt;
    print(&amp;quot;Skaičiaus &amp;quot;, sk, &amp;quot; faktorialas yra &amp;quot;, fact)&lt;br /&gt;
&lt;br /&gt;
def factorialas(sk):&lt;br /&gt;
    if sk == 0:&lt;br /&gt;
        return  1&lt;br /&gt;
    else:&lt;br /&gt;
        return sk * factorialas(sk - 1)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rekursija taip pat naudinga išplėstinėje temoje, vadinamoje generatoriais. Norint sugeneruoti serijas 1, 2, 1, 3, 1, 2, 1, 4, 1, 2... reikės šio kodo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def beprotiškas(min_):&lt;br /&gt;
    yield min_&lt;br /&gt;
    g=beprotiškas(min_+1)&lt;br /&gt;
    while True:&lt;br /&gt;
        yield next(g)&lt;br /&gt;
        yield min_&lt;br /&gt;
&lt;br /&gt;
i = beprotiškas(1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
norint gauti kitą elementą, iškiviestum next(i)&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Siekiant tobulumo |next=Įvadas į objektinį programavimą Python 3}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C5%BDodynai&amp;diff=3881</id>
		<title>Python Vadovėlis/Žodynai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C5%BDodynai&amp;diff=3881"/>
		<updated>2022-03-02T15:19:45Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Loginiai reiškiniai |next=Modulių naudojimas}}&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra apie žodynus. Žodynai turi raktus ir reikšmes. Raktai naudojami reikšmėms rasti. Štai žodyno pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print('1. Spausdink telefonų numerius')&lt;br /&gt;
    print('2. Pridėk telefono numerį')&lt;br /&gt;
    print('3. Pašalink telefono numerį')&lt;br /&gt;
    print('4. Ieškok telefono numerio')&lt;br /&gt;
    print('5. Išeik')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
numeriai = {}&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
spausdink_meniu ()&lt;br /&gt;
while meniu_pasirinkimas != 5:&lt;br /&gt;
    meniu_pasirinkimas = int(input(&amp;quot;Įvesk skaičių (1-5): &amp;quot;))&lt;br /&gt;
    if meniu_pasirinkimas == 1:&lt;br /&gt;
        print(&amp;quot;Telefono numeriai: &amp;quot;)&lt;br /&gt;
        for x in numeriai.keys():&lt;br /&gt;
            print(&amp;quot;Vardas: &amp;quot;, x, &amp;quot;\tTelefono numeris:&amp;quot;, numeriai[x])&lt;br /&gt;
        print()&lt;br /&gt;
    elif meniu_pasirinkimas == 2:&lt;br /&gt;
        print(&amp;quot;Pridėk vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        numeris = input(&amp;quot;Telefono numeris: &amp;quot;)&lt;br /&gt;
        numeriai[vardas] = numeris &lt;br /&gt;
    elif meniu_pasirinkimas == 3:&lt;br /&gt;
        print(&amp;quot;Pašalink vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        if vardas in numeriai:&lt;br /&gt;
            del numeriai[vardas]&lt;br /&gt;
        else:&lt;br /&gt;
            print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas == 4:&lt;br /&gt;
        print(&amp;quot;Ieškok telefono numerio&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        if vardas in numeriai:&lt;br /&gt;
            print(&amp;quot;Telefono numeris yra &amp;quot;, numeriai[vardas])&lt;br /&gt;
        else:&lt;br /&gt;
            print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas  != 5:&lt;br /&gt;
        print_menu()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O čia - mano išvestis:&lt;br /&gt;
&lt;br /&gt;
 1. Spausdink telefonų numerius&lt;br /&gt;
 2. Pridėk telefono numerį&lt;br /&gt;
 3. Pašalink telefono numerį&lt;br /&gt;
 4. Ieškok telefono numerio&lt;br /&gt;
 5. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-5): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Benas'''&lt;br /&gt;
 Telefono numeris: '''869935951'''&lt;br /&gt;
 Įvesk skaičių (1-5): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Liepa'''&lt;br /&gt;
 Telefono numeris: '''869935952'''&lt;br /&gt;
 Įvesk skaičių (1-5): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Markas'''&lt;br /&gt;
 Telefono numeris: '''869935957'''&lt;br /&gt;
 Įvesk skaičių (1-5): '''1'''&lt;br /&gt;
 Telefono numeriai:&lt;br /&gt;
 Vardas: Benas         Telefono numeris: 869935951&lt;br /&gt;
 Vardas: Liepa         Telefono numeris: 869935952&lt;br /&gt;
 Vardas: Markas        Telefono numeris: 869935957&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-5): '''4'''&lt;br /&gt;
 Ieškok telefono numerio&lt;br /&gt;
 Vardas: '''Benas'''&lt;br /&gt;
 Telefono numeris yra 869935951&lt;br /&gt;
 Įvesk skaičių (1-5): '''3'''&lt;br /&gt;
 Pašalink telefono numerį&lt;br /&gt;
 Vardas: '''Markas'''&lt;br /&gt;
 Įvesk skaičių (1-5): '''1'''&lt;br /&gt;
 Telefono numeriai:&lt;br /&gt;
 Vardas: Liepa      Telefono numeris: 869935952&lt;br /&gt;
 Vardas: Benas      Telefono numeris: 869935951&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-5): '''5'''&lt;br /&gt;
&lt;br /&gt;
Ši programa yra panaši į į programą su vardų sąrašu, pateiktą prieš tai buvusiame skyriuje apie sąrašus.  Štai kaip veikia programa.  Pirmiausiai yra aprašoma funkcija &amp;lt;code&amp;gt;spausdink_meniu&amp;lt;/code&amp;gt;.  &amp;lt;code&amp;gt;spausdink_meniu&amp;lt;/code&amp;gt; tiesiog spausdina meniu, kuris vėliau du kartus naudojamas programoje.  Po to, pateikiama keistai atrodanti eilutė &amp;lt;code&amp;gt;numeriai = {}&amp;lt;/code&amp;gt;.  Ši eilutė Python'ui pasako, kad &amp;lt;code&amp;gt;numeriai&amp;lt;/code&amp;gt; yra žodynas.  Kitos kelios eilutės tiesiog padaro taip, kad meniu veiktų.  Vykdydant ciklą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for x in numeriai.keys():&lt;br /&gt;
    print(&amp;quot;Vardas: &amp;quot;, x, &amp;quot;\tTelefono numeris:&amp;quot;, numeriai[x])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
einama per žodyną ir spausdinami žodyne esantys elementai.  Funkcija &amp;lt;code&amp;gt; numeriai.keys()&amp;lt;/code&amp;gt; grąžina žodyno elementų raktų sąrašą, kuris yra vėliau naudojamas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; cikle.  Sąrašas grąžinamas &amp;lt;code&amp;gt;keys()&amp;lt;/code&amp;gt; metodo pagalba neturi jokio eiliškumo, todėl, jei tu nori, kad jis būtų abėcėlės tvarka, jis turi būti surūšiuotas. Taigi, šiuo atveju &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; yra tekstinė eilutė – vardai. Panašiai kaip sąrašai, komanda &amp;lt;code&amp;gt;numeriai[x]&amp;lt;/code&amp;gt; naudojama norint pasiekti konkretų žodyno elementą. Šiuo atveju tai yra telefonų numeriai. Komanda &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; visa tai atspausdina.  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Pridėk vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
numeris = input(&amp;quot;Telefono numeris: &amp;quot;)&lt;br /&gt;
numeriai[vardas] = numeris &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Padarius kitą pasirinkimą, pirmiausiai paklausiamas Vardas – tai bus žodyno elemento raktas, ir paklausiamas numeris. Toliau, komanda &amp;lt;code&amp;gt;numeriai[vardas] = telefonas&amp;lt;/code&amp;gt; prideda vardą ir telefono numerį į žodyną. Jei &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; jau būtų buvęs žodyne, &amp;lt;code&amp;gt;telefonas&amp;lt;/code&amp;gt; pakeistų prieš tai buvusią reikšmę. &lt;br /&gt;
Toliau sąlyginis sakinys&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if vardas in numeriai:&lt;br /&gt;
    del numeriai[vardas]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
tikrina, ar vardas yra žodyne, ir jei yra, jį pašalina.  Komanda &amp;lt;code&amp;gt;vardas in numeriai&amp;lt;/code&amp;gt; grąžina loginę reikšmę &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;, jei &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra &amp;lt;code&amp;gt;numeriai&amp;lt;/code&amp;gt; žodyne, bet kitu atveju grąžina &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;. Komanda &amp;lt;code&amp;gt;del numeriai[vardas]&amp;lt;/code&amp;gt; pašalina raktą &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; ir su tuo raktu susietą reikšmę. &lt;br /&gt;
Sąlyginis sakinys&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if vardas in numeriai:&lt;br /&gt;
    print(&amp;quot;Telefono numeris yra &amp;quot;, numeriai[vardas])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
patikrina, ar žodynas turi tam tikrą raktą ir jei žodynas turi tą raktą, išspausdina su juo susietą numerį.  Galiausiai, jei meniu pasirinkimas negalioja, pagrindinis meniu yra atspausdinamas, kad tu galėtum juo pasigrožėti.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- \label{firstgrades}--&amp;gt;&lt;br /&gt;
Apibendrinimas: žodynai turi raktus ir reikšmes.  Raktu gali būti tekstinė eilutė arba&lt;br /&gt;
skaičius.  Raktai nurodo reikšmes.  Reikšmės gali būti bet kokio tipo kintamieji&lt;br /&gt;
(įskaitant sąrašus ar net žodynus (žinoma, tuose žodynuose ar sąrašuose&lt;br /&gt;
gali būti patys žodynai ar sąrašai (baisu, ane? :-)&lt;br /&gt;
))).  Štai yra pavyzdys, kai naudojamas sąrašas žodyne:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
max_taškai = [25, 25, 50, 25, 100]&lt;br /&gt;
užduotys = ['nd sk 1', 'nd sk 2', 'viktorina   ', 'nd sk 3', 'testas']&lt;br /&gt;
mokiniai = {'#Max': max_taškai}&lt;br /&gt;
&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print(&amp;quot;1. Pridėk mokinį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;2. Pašalink mokinį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;3. Spausdink pažymius&amp;quot;)&lt;br /&gt;
    print(&amp;quot;4. Įrašyk pažymį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;5. Spausdink meniu&amp;quot;)&lt;br /&gt;
    print(&amp;quot;6. Išeik&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def spausdink_visus_pažymius():&lt;br /&gt;
    print('\t', end=' ')&lt;br /&gt;
    for i in range(len(užduotys)):&lt;br /&gt;
        print(užduotys[i], '\t', end=' ')&lt;br /&gt;
    print()&lt;br /&gt;
    raktai = list(mokiniai.keys())&lt;br /&gt;
    raktai.sort()&lt;br /&gt;
    for x in raktai:&lt;br /&gt;
        print(x, '\t', end=' ')&lt;br /&gt;
        pažymiai = mokiniai[x]&lt;br /&gt;
        spausdink_pažymius(pažymiai)&lt;br /&gt;
&lt;br /&gt;
def spausdink_pažymius(pažymiai):&lt;br /&gt;
    for i in range(len(pažymiai)):&lt;br /&gt;
        print(pažymiai[i], '\t', end=' ')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
spausdink_meniu()&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
while meniu_pasirinkimas != 6:&lt;br /&gt;
    print()&lt;br /&gt;
    meniu_pasirinkimas = int(input(&amp;quot;Meniu pasirinkimas (1-6): &amp;quot;))&lt;br /&gt;
    if meniu_pasirinkimas == 1:&lt;br /&gt;
        vardas = input(&amp;quot;Pridėk mokinį: &amp;quot;)&lt;br /&gt;
        mokiniai[vardas] = [0] * len(max_taškai)&lt;br /&gt;
    elif meniu_pasirinkimas == 2:&lt;br /&gt;
        vardas = input(&amp;quot;Pašalink mokinį: &amp;quot;)&lt;br /&gt;
        if vardas in mokiniai:&lt;br /&gt;
            del mokiniai[vardas]&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Vardas: &amp;quot;, vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas == 3:&lt;br /&gt;
        spausdink_visus_pažymius()&lt;br /&gt;
    elif meniu_pasirinkimas == 4:&lt;br /&gt;
        print(&amp;quot;Įrašyk pažymį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Mokinys: &amp;quot;)&lt;br /&gt;
        if vardas in mokiniai:&lt;br /&gt;
            pažymiai = mokiniai[vardas]&lt;br /&gt;
            print(&amp;quot;Įrašyk mokinio pažymį&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Įrašyk 0 (nulį), kad išeitum&amp;quot;)&lt;br /&gt;
            for i in range(len(užduotys)):&lt;br /&gt;
                print(i + 1, užduotys[i], '\t', end=' ')&lt;br /&gt;
            print()&lt;br /&gt;
            spausdink_pažymius(pažymiai)&lt;br /&gt;
            kuris = 1234&lt;br /&gt;
            while kuris != -1:&lt;br /&gt;
                kuris = int(input(&amp;quot;Pakeisk kuris pažymį: &amp;quot;))&lt;br /&gt;
                kuris -= 1    #tas pats kaip ir: kuris = kuris - 1&lt;br /&gt;
                if 0 &amp;lt;= kuris &amp;lt; len(pažymiai):&lt;br /&gt;
                    pažymys = int(input(&amp;quot;Pažymys: &amp;quot;))&lt;br /&gt;
                    pažymiai[kuris] = pažymys&lt;br /&gt;
                elif kuris != -1:&lt;br /&gt;
                    print(&amp;quot;Klaidingas pažymys&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Mokinys nerastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas != 6:&lt;br /&gt;
        spausdink_meniu()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O štai čia yra išvestis:&lt;br /&gt;
&lt;br /&gt;
 1. Pridėk mokinį&lt;br /&gt;
 2. Pašalink mokinį&lt;br /&gt;
 3. Spausdink pažymius&lt;br /&gt;
 4. Įrašyk pažymį&lt;br /&gt;
 5. Spausdink meniu&lt;br /&gt;
 6. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''3'''&lt;br /&gt;
        nd sk 1         nd sk 2       viktorina       nd sk 3            testas &lt;br /&gt;
 #Max    25              25              50              25              100 &lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''5'''&lt;br /&gt;
 1. Pridėk mokinį&lt;br /&gt;
 2. Pašalink mokinį&lt;br /&gt;
 3. Spausdink pažymius&lt;br /&gt;
 4. Įrašyk pažymį&lt;br /&gt;
 5. Spausdink meniu&lt;br /&gt;
 6. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''1'''&lt;br /&gt;
 Pridėk mokinį: '''Markas'''&lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''4'''&lt;br /&gt;
 Įrašyk pažymį&lt;br /&gt;
 Mokinys: '''Markas'''&lt;br /&gt;
 Įrašyk mokinio pažymį&lt;br /&gt;
 Įrašyk 0 (nulį), kad išeitum&lt;br /&gt;
 1   nd sk 1     2   nd sk 2     3   viktorina        4   nd sk 3     5   testas &lt;br /&gt;
 0               0               0               0               0 &lt;br /&gt;
 Pakeisk kuris pažymį: '''1'''&lt;br /&gt;
 Pažymys: '''25'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''2'''&lt;br /&gt;
 Pažymys: '''24'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''3'''&lt;br /&gt;
 Pažymys: '''45'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''4'''&lt;br /&gt;
 Pažymys: '''23'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''5'''&lt;br /&gt;
 Pažymys: '''95'''&lt;br /&gt;
 Pakeisk kuris pažymį: '''0'''&lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''3'''&lt;br /&gt;
           nd sk 1         nd sk 2         viktorina       nd sk 3          testas&lt;br /&gt;
 #Max        25              25              50              25              100&lt;br /&gt;
 Markas      25              24              45              23              95 &lt;br /&gt;
 &lt;br /&gt;
 Meniu pasirinkimas (1-6): '''6'''&lt;br /&gt;
&lt;br /&gt;
Štai kaip veikia programa.  Iš esmės, kintamasis &amp;lt;code&amp;gt;mokiniai&amp;lt;/code&amp;gt; yra žodynas, kurio raktai yra mokinių vardai, o reikšmės – jų pažymiai.  Pirmosios dvi eilutės tik sukuria du sąrašus.&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;mokiniai = {'#Max': max_taškai}&amp;lt;/code&amp;gt; sukuria naują&lt;br /&gt;
žodyną su raktu {&amp;lt;code&amp;gt;#Max&amp;lt;/code&amp;gt;}, o reikšmė yra &amp;lt;code&amp;gt;[25, 25, 50, 25, 100]&amp;lt;/code&amp;gt; (pirmame sakinyje &amp;lt;code&amp;gt;max_taškai&amp;lt;/code&amp;gt; buvo padarytas priskyrimas) (aš naudoju raktą &amp;lt;code&amp;gt;#Max&amp;lt;/code&amp;gt;, nes rūšiuojant simolis &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; patenka prieš bet kokias abėcėlės raides).  Toliau aprašoma funkcija &amp;lt;code&amp;gt;spausdink_meniu&amp;lt;/code&amp;gt;. Kaip jau žinai, ji spausdina meniu.&lt;br /&gt;
Po to aprašoma funkcija &amp;lt;code&amp;gt;spausdink_visus_pažymius&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def spausdink_visus_pažymius():&lt;br /&gt;
    print('\t',end=&amp;quot; &amp;quot;)&lt;br /&gt;
    for i in range(len(užduotys)):&lt;br /&gt;
        print(užduotys[i], '\t',end=&amp;quot; &amp;quot;)&lt;br /&gt;
    print()&lt;br /&gt;
    raktai = list(mokiniai.keys())&lt;br /&gt;
    keys.sort()&lt;br /&gt;
    for x in raktai:&lt;br /&gt;
        print(x, '\t',end=' ')&lt;br /&gt;
        pažymiai = mokiniai[x]&lt;br /&gt;
        spausdink_pažymius(pažymiai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, į tai, kaip žodyno &amp;lt;code&amp;gt;mokiniai&amp;lt;/code&amp;gt; raktai yra išimami į kintamąjį &amp;lt;code&amp;gt;raktai&amp;lt;/code&amp;gt; su komanda &amp;lt;code&amp;gt;raktai = list(mokiniai.keys())&amp;lt;/code&amp;gt;. Kintamasis &amp;lt;code&amp;gt;raktai&amp;lt;/code&amp;gt; turės būti rūšiuojamas, todėl yra paverčiamas į sąrašą. Taip bus galima naudoti visas sąrašų funkcijas.  Toliau raktai yra surūšiuojami eilutėje &amp;lt;code&amp;gt;raktai.sort()&amp;lt;/code&amp;gt;.  &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; yra naudojamas pereiti per visus raktus.  Pažymiai yra saugomi kaip sąrašas žodyno viduje, todėl priskyrimas &amp;lt;code&amp;gt;pažymiai = mokiniai[x]&amp;lt;/code&amp;gt; duoda &amp;lt;code&amp;gt;pažymiai&amp;lt;/code&amp;gt; sąrašą, kuris yra saugomas su &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; raktu.  Funkcija &amp;lt;code&amp;gt;spausdink_pažymius&amp;lt;/code&amp;gt; tiesiog spausdina sąrašą ir yra aprašyta keliomis eilutėmis žemiau.&lt;br /&gt;
&lt;br /&gt;
Tolimesnės programos eilutės įgyvendina įvairius meniu pasirinkimus.  Eilutė &amp;lt;code&amp;gt;mokiniai[vardas] = [0] * len(max_taškai)&amp;lt;/code&amp;gt; prideda mokinį į žodyną: &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra naujas raktas.  Komanda &amp;lt;code&amp;gt;[0] * len(max_taškai)&amp;lt;/code&amp;gt; tiesiog sukuria žodyno elementą – 0-ių sąrašą, kuris yra tokio pat ilgio kaip ir &amp;lt;code&amp;gt;max_taškai&amp;lt;/code&amp;gt; sąrašas, kuriame vėliau bus sukelti pažymiai.  &lt;br /&gt;
&lt;br /&gt;
Pašalinti mokinį pasirinkimas tiesiog ištrina mokinį, panašiai kaip ir telefonų knygutės pavyzdyje.  &lt;br /&gt;
Įrašyti mokinį pasirinkimas yra šiek tiek sudėtingesnis.  Pažymiai yra  gaunami komandinėje eilutėje &lt;br /&gt;
&amp;lt;code&amp;gt;pažymiai = mokiniai[vardas]&amp;lt;/code&amp;gt;, ji gauna nuorodą į mokinio &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; pažymius.  Tada pažymys yra  įrašomas komanda &amp;lt;code&amp;gt;pažymiai[kuris] = pažymys&amp;lt;/code&amp;gt;.  Tu gali pastebėti, kad &amp;lt;code&amp;gt;pažymiai&amp;lt;/code&amp;gt; niekada negrąžinami į mokinių žodyną (tokios komandos niekada nerašome:  &amp;lt;code&amp;gt;mokiniai[vardas] = pažymiai&amp;lt;/code&amp;gt;).  Pakeisto pažymių sąrašo į žodyną grąžinti nereikia todėl,kad komanda &amp;lt;code&amp;gt;pažymiai[kuris] = pažymys&amp;lt;/code&amp;gt; mes gauname ne realų sąrašą, o nuorodą į tą sąrašą, tada  &amp;lt;code&amp;gt;pažymiai&amp;lt;/code&amp;gt; iš tiesų yra tik kitas &amp;lt;code&amp;gt;mokiniai[vardas]&amp;lt;/code&amp;gt; pavadinimas. Dėl to, keičiant &amp;lt;code&amp;gt;pažymiai&amp;lt;/code&amp;gt; keičiasi ir &amp;lt;code&amp;gt;mokiniai[vardas]&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Žodynai turi nesudėtingą metodą susieti raktus su reikšmėmis. Tai gali būti naudojama norint lengvai sekti duomenis, pridedamus prie įvairių raktų.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Loginiai reiškiniai |next=Modulių naudojimas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3880</id>
		<title>Python Vadovėlis/Rekursija</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3880"/>
		<updated>2022-03-02T15:14:01Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Rekursija ==&lt;br /&gt;
&lt;br /&gt;
Programavime rekursine funkcija vadinama funkcija, kuri iškviečia pati save.&lt;br /&gt;
&lt;br /&gt;
=== Įvadas į rekursiją ===&lt;br /&gt;
&lt;br /&gt;
Iki šiol Python'o programoje matėme funkcijas, kurios iškviečia kitas funkcijas. Tačiau funkcija gali iškviesti ir pati save. Pažvelkime į paprastą pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
&lt;br /&gt;
sk = 0&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
def skaitliukas(sk):&lt;br /&gt;
    print(sk)&lt;br /&gt;
    sk+= 1&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei šią programą paleistum VS Code kodo redaktoriuje, ji veiktų amžinai. Vienintelis būdas sustabdyti ciklą būtų nutraukti vykdymą paspaudžiant Ctrl + C klaviatūroje. Tai yra begalinės rekursijos pavyzdys.&lt;br /&gt;
&lt;br /&gt;
Galima ginčytis, kad rekursija yra tik dar vienas būdas atlikti tą patį dalyką kaip ir naudojant ciklą. Kai kuriais atvejais tai yra visiškai teisinga. Tačiau yra ir kitų rekursijos naudojimo būdų, kurie yra labai tinkami, o  &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklai gali būti ne pats geriausias variantas.&lt;br /&gt;
&lt;br /&gt;
Rekursija gali būti valdoma, kaip ir ciklai. Pažvelk į rekursinio ciklo pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
def main():&lt;br /&gt;
    ciklosk= int(input(&amp;quot;Kiek kartų norėtum paleisti ciklą?\n&amp;quot;))&lt;br /&gt;
    skaitliukas = 1&lt;br /&gt;
    recurr(ciklosk,skaitliukas)&lt;br /&gt;
&lt;br /&gt;
def recurr(ciklosk,skaitliukas):&lt;br /&gt;
    if ciklosk&amp;gt; 0:&lt;br /&gt;
        print(&amp;quot;Tai yra ciklo iteracija&amp;quot;,skaitliukas)&lt;br /&gt;
        recurr(ciklosk- 1,skaitliukas + 1)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Ciklas yra pabaigtas.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programoje naudojami argumentai/parametrai rekursijų skaičiui valdyti. Tiesiog naudok tai, ką jau žinai apie funkcijas, ir sek programos eigą. Tai paprasta išsiaiškinti. Jei kyla problemų, grįžk į [[Vadovėlis/Pažangių funkcijų pavyzdys|Pažangių funkcijų pavyzdys]].&lt;br /&gt;
&lt;br /&gt;
== Praktiniai rekursijos pritaikymai ==&lt;br /&gt;
&lt;br /&gt;
Dažnai rekursija yra studijuojama pažengusiu informatikos lygiu. Rekursija dažniausiai naudojama sprendžiant sudėtingas problemas, kurias galima suskirstyti į mažesnes, identiškas problemas. Norint išspręsti problemą, rekursija nebūtina. Problemos, kurias galima išspręsti naudojant rekursiją, greičiausiai gali būti išspręstos ir su ciklais. Be to, ciklas gali būti efektyvesnis nei rekursinė funkcija. Rekursinėms funkcijoms reikia daugiau atminties ir išteklių nei ciklams, todėl daugeliu atvejų jos yra mažiau efektyvios. Šis naudojimo reikalavimas kartais vadinamas &amp;lt;i&amp;gt;overhead&amp;lt;/i&amp;gt;.&lt;br /&gt;
Galbūt galvoji: „Na, kam nerimauti su rekursija. Aš tiesiog naudosiu ciklą. Aš jau žinau, kaip sudaryti ciklą, ir tai yra daug daugiau darbo.“ Ši mintis suprantama, bet ne visai ideali. Sprendžiant sudėtingas problemas, rekursinę funkciją kartais lengviau, greičiau ir paprasčiau sukurti bei programuoti.&lt;br /&gt;
&lt;br /&gt;
Pagalvokite apie šias dvi „taisykles“:&lt;br /&gt;
* Jei galiu išspręsti problemą su ciklu, be rekursijos, funkcija tiesiog grąžina reikšmę.&lt;br /&gt;
* Jei negaliu išspręsti problemos su cilku, be rekursijos, funkcija sumažina problemą iki mažesnės analogiškos problemos ir iškviečia pati save.&lt;br /&gt;
&lt;br /&gt;
Pabandyk pritaikyti rekursinę funkciją faktorialui apskaičiuoti. Jei nesi susipažinęs su faktoriais, skaityk: [https://lt.wikipedia.org/wiki/Faktorialas Faktorialas]&lt;br /&gt;
 &lt;br /&gt;
Skaičiaus n faktorialas &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;, yra žymimas kaip &amp;lt;i&amp;gt;n!&amp;lt;/i&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Štai keletas pagrindinių faktorialo taisyklių:&lt;br /&gt;
&lt;br /&gt;
Jei n = 0 tai n! = 1&lt;br /&gt;
&lt;br /&gt;
Jei n &amp;gt; 0 tai n! = 1 x 2 x 3 x ... x n&lt;br /&gt;
&lt;br /&gt;
Pavyzdžiui, pažiūrėk į skaičiaus 9 faktorialą.&lt;br /&gt;
&lt;br /&gt;
9! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į programą, kuri rekursijos metodu apskaičiuoja bet kurio vartotojo įvesto skaičiaus faktorialą.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    sk = int(input(&amp;quot;Įvesk neneigiamą sveikąjį skaičių.\n&amp;quot;))&lt;br /&gt;
    fact = factorialas(sk)&lt;br /&gt;
    print(&amp;quot;Skaičiaus &amp;quot;, sk, &amp;quot; faktorialas yra &amp;quot;, fact)&lt;br /&gt;
&lt;br /&gt;
def factorialas(sk):&lt;br /&gt;
    if sk == 0:&lt;br /&gt;
        return  1&lt;br /&gt;
    else:&lt;br /&gt;
        return sk * factorialas(sk - 1)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rekursija taip pat naudinga išplėstinėje temoje, vadinamoje generatoriais. Norint sugeneruoti serijas 1, 2, 1, 3, 1, 2, 1, 4, 1, 2... reikės šio kodo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def beprotiškas(min_):&lt;br /&gt;
    yield min_&lt;br /&gt;
    g=beprotiškas(min_+1)&lt;br /&gt;
    while True:&lt;br /&gt;
        yield next(g)&lt;br /&gt;
        yield min_&lt;br /&gt;
&lt;br /&gt;
i = beprotiškas(1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
norint gauti kitą elementą, iškiviestum next(i)&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Siekiant tobulumo |next=Įvadas į objektinį programavimą Python 3}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3743</id>
		<title>Python Vadovėlis/Įvadas į objektinį programavimą Python 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3743"/>
		<updated>2021-12-27T17:43:58Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Objektinis programavimas==&lt;br /&gt;
&lt;br /&gt;
Iki šiol rašei kodą pagal procedūrinio programavimo taisykles. Tačiau, yra daug programų, kurios parašytos pagal objektinio programavimo taisykles. Žinoti abu programavimo tipus ir jų skirtumus yra labai svarbu. Informatikoje, daug svarbių kalbų, tokių kaip C++ ar Java, dažnai naudoja objektinio programavimo taisykles.&lt;br /&gt;
&lt;br /&gt;
Pradedantiesiems ir mokiniams, neturintiems programavimo žinių, objektinis programavimas dažnai gali atrodyti painus ir tai yra visiškai normalu. Nesijausk blogai, jei nesiseka suprasti iš pat pradžių. Jei šis skyrius nepadės tau suprasti, yra ir daugiau informatyvių šaltinių, kurie padės atsakyti į visus klausimus.&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra padalintas į keletą pamokų. Kiekviena pamoka - skirta paaiškinti skirtingas objektinio programavimo dalis. &amp;lt;b&amp;gt;LABAI SVARBU&amp;lt;/b&amp;gt; suprasti jas visas. Nepamiršk prieš kiekvieną pamoką perskaityti įžangą, kuri paaiškins pagrindines idėjas, sąvokas ir kitas objektinio programavimo sritis.&lt;br /&gt;
&lt;br /&gt;
==Įžanga==&lt;br /&gt;
&lt;br /&gt;
Galvok apie procedūrą kaip apie funkciją. Funkcija turi konkrečią paskyrtį ir jų gali būti įvairių: rinkti įvestis, atlikti matematinius skaičiavimus, atvaizduoti ar manipuliuoti duomenis. Paprastai, procedūros manipuliuoja duomenis, kurie yra aprašyti atskirai. Šie duomenys yra dažnai perduodami iš vienos procedūros į kitą. Ir kai programa pasidaro per didelė, tai padaro duomenų perdavimą komplikuotą.&lt;br /&gt;
Pavyzdžiui, parašei programą, kuri kintamuosiuose išsaugo produkto duomenis. Kai klientas paprašo informacijos apie produktą, kintamieji, kurie turi visą informaciją, yra perduodami įvairioms funkcijoms su skirtingomis paskirtimis. Laikui bėgant ir saugant vis daugiau duomenų apie turimus produktus, tu sugalvoji išsaugoti turimą informaciją sąrašuose ar žodynuose. Norint, jog tavo programa veiktų, tu dabar turi redaguoti kiekvieną funkciją, kuri naudojo tuos kintamuosius, taip, kad dabar ji galėtų priimti ir manipuliuoti sąrašus ar žodynus. Įsivaizduok kiek laiko tau reikėtų norint peržiūrėti ir pakeisti šimtus failų. Tu išprotėtum! Nekalbant apie tai, jog klaidas daro net ir labiausiai patyrę programuotojai, tad taip pat reikėtų taisyti begalę klaidų. Toks programavimas yra pernelyg neoptimalus.&lt;br /&gt;
Procedūrinis programavimas yra paremtas procedūromis (funkcijomis). Objektinis programavimas yra paremtas objektais. Ar prisimeni, kaip procedūrinė programa atskyrė duomenis nuo kodo? Ar prisimeni programą, kuri turėjo šimtus failų ir norint kažką pakeisti reikėdavo ilgai joje narpstytis? &lt;br /&gt;
Galvok apie &amp;lt;i&amp;gt;objektą&amp;lt;/i&amp;gt; kaip apie minėtų failų ir duomenų „kombinaciją“ į vieną esybę. Technine prasme, objektas yra esybė, kuri savyje turi duomenis ir procedūras (kodą, funkcijas, t.t.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Duomenis objekto viduje vadiname &amp;lt;i&amp;gt;atributais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Funkcijas ar procedūras objekto viduje vadiname &amp;lt;i&amp;gt;metodais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;duomenų atributus&amp;lt;/b&amp;gt; kaip apie kintamuosius. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;metodus&amp;lt;/b&amp;gt; kaip apie funkcijas ar procedūras. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į paprastą, kasdienį pavyzdį. Lemputė ir jungiklis tavo kambaryje.&lt;br /&gt;
Atributai bus štai tokie.&lt;br /&gt;
&lt;br /&gt;
* šviesa_įjungta (True False)&lt;br /&gt;
* jungiklio_pozicija (Viršuje arba Apačioje)&lt;br /&gt;
* elektros_tekėjimas (True arba False)&lt;br /&gt;
&lt;br /&gt;
Metodai būtų štai tokie.&lt;br /&gt;
&lt;br /&gt;
* pakeisti_jungiklio_poziciją&lt;br /&gt;
* pakeisti_elektros_tekėjimą&lt;br /&gt;
&lt;br /&gt;
Atributai gali būti matomi ir nematomi. Pavyzdžiui, tu negali matyti elektros tekančios į lemputę. Tu tik žinai, kad elektra išties teka, nes ji tuo metu skleidžia šviesą. Nepaisant to, tu gali matyti jungiklio poziciją (jungiklio_pozicija) ir taip pat tu matai ar šviesa yra įjungta ar ne (šviesa_įjungta). Kai kurie metodai yra &amp;lt;i&amp;gt;privatūs&amp;lt;/i&amp;gt;. Tai reiškia, jog jų neišeina tiesiogiai pakeisti. Pavyzdžiui, nebent būtų nukerpami laidai (to nedaryk ir dėl šio pavyzdžio; manyk, jog laidai neegzistuoja), tu negalėtum pakeisti elektros tėkmės tiesiogiai. Tu taip pat negali tiesiogiai įtakoti lemputės šviesos (ne, tu negali atsukti lemputės ar jos sudaužyti!). Bet tu visada gali šiuos atributus įtakoti netiesiogiai naudojant objekto &amp;lt;i&amp;gt;metodus&amp;lt;/i&amp;gt;. Jeigu nesumokėsi mokesčių, metodas pavadinimu &amp;lt;code&amp;gt;pakeisti_elektros_tekėjimą&amp;lt;/code&amp;gt; pakeis &amp;lt;code&amp;gt;elektros_tekėjimas&amp;lt;/code&amp;gt; reikšmę į FALSE. Jei tu įjungsi jungiklį, &amp;lt;code&amp;gt;pakeisti_jungiklio_poziciją&amp;lt;/code&amp;gt; metodas pakeis &amp;lt;code&amp;gt;šviesa_įjungta&amp;lt;/code&amp;gt; atributo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Dabar jau tikriausiai galvoji, „Ką tai turi bendro su Python'u?“ ar, „Aš nesuprantu, bet kaip man sukurti tą objektą?“. Na, beveik priėjai prie atsakymų! Tik turiu paaiškinti dar vieną dalyką prieš neriant į kodą.&lt;br /&gt;
&lt;br /&gt;
Python'e objekto atributai ir metodai yra nurodomi &amp;lt;b&amp;gt;klasės&amp;lt;/b&amp;gt;. Galvok apie klasę kaip apie objekto techninį piešinį. Pavyzdžiui, tavo namai - objektas kuriame gyveni - taip pat jį gali vadinti butu, vasarnamiu, prakartėle ar bet kuo kitu, buvo pastatytas naudojant techinius piešinius. Šie techniniai piešiniai būtų vadinami klasėmis, kurios buvo panaudotos projektuojant tavo namus, butą, vasarnamį, na, supranti apie ką kalbu. &lt;br /&gt;
&lt;br /&gt;
Dar kartą, klasė pasako, kaip sukurti objektą. Techniniais terminais tariant, ir tai yra labai svarbu, klasė nusako naudojamus duomenų atributus ir metodus objekte.&lt;br /&gt;
&lt;br /&gt;
Norint sukurti klasę, mes suprogramuojame &amp;lt;i&amp;gt;klasės apibrėžimą&amp;lt;/i&amp;gt;. Klasės apibrėžimas, tai grupė teiginių, kurie nusako objekto atributus ir metodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Pirma pamoka&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apačioje yra procedūrinė programa, kuri atlieka paprastą matematinį veiksmą su vartotojo įvestu skaičiu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
&lt;br /&gt;
# Procedūra 1&lt;br /&gt;
def main():&lt;br /&gt;
    try:&lt;br /&gt;
        # Pasiimk skaičių, kurį manipuliuosi.&lt;br /&gt;
        sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su pasiimtu skaičiumi atlik matematinius&lt;br /&gt;
        # veiksmus naudojant procedūrą 2&lt;br /&gt;
        pridėksk = pridėkpenkis(sk)&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su ankščiau išsaugotu skaičiu atlik&lt;br /&gt;
        # matematinius veiksmus naudojant procedūrą 3&lt;br /&gt;
        dauginksk = daugink(pridėksk)&lt;br /&gt;
        # Paduok skaičių procedūrai 4&lt;br /&gt;
        rodyk(dauginksk)&lt;br /&gt;
    # Susidorok su išimtimis, kurios gali atsirasti dėl netinkamo vartotojo skaičiaus įvedimo&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Privalai įvesti tinkamą skaičių.\n&amp;quot;)&lt;br /&gt;
        # Atstatyk kintamojo num reikšmę, kad ištrintum netinkamą vartotojo įvestį.&lt;br /&gt;
        sk = 0&lt;br /&gt;
        # Dar kartą iškviesk main.&lt;br /&gt;
        main()&lt;br /&gt;
&lt;br /&gt;
# Procedūra 2&lt;br /&gt;
def pridėkpenkis(sk):&lt;br /&gt;
    return sk + 5&lt;br /&gt;
&lt;br /&gt;
# Procedūra 3&lt;br /&gt;
def daugink(pridėksk):&lt;br /&gt;
    return pridėksk * 2.452&lt;br /&gt;
&lt;br /&gt;
# Procedūra 4&lt;br /&gt;
def rodyk(dauginksk):&lt;br /&gt;
    # Parodyk galutinį rezultatą.&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra&amp;quot;, dauginksk)&lt;br /&gt;
&lt;br /&gt;
# Kviesk procedūrą 1&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi skaitemnį &amp;quot;5&amp;quot;, gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 5&lt;br /&gt;
 Galutinis rezultatas yra 24.52&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi reikšmę &amp;quot;g&amp;quot;, tada pasitaisysi ir įrašysi skaitmenį &amp;quot;8&amp;quot;, tada gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 g&lt;br /&gt;
 Privalai įvesti tinkamą skaičių.&lt;br /&gt;
 &lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 8&lt;br /&gt;
 Galutinis rezultatas yra 31.875999999999998&lt;br /&gt;
&lt;br /&gt;
Žemiau matai klasę ir programą, kuri naudoja nurodytą klasę. Ši objektinio programavimo būdu parašyta programa daro tą patį, ką prieš tai darė procedūriniu programavimo būdu parašyta programa. Apžiūrėk keletą svarbių objektinio programavimo būdo konceptų prieš neriant į ankščiau minėtą klasę ir programą.&lt;br /&gt;
Norint sukurti klasę, naudok &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; raktažodį. Po raktažodžio rašyk pavadinimą, kurį norėtum, jog turėtų klasė. Dažnai naudojama praktika kuriant klasių pavadinimus yra &amp;lt;i&amp;gt;NaujųŽodžiųRašymasIšDidžiosiosRaidės&amp;lt;/i&amp;gt;.&lt;br /&gt;
Jei norėčiau sukurti klasę pavadinimu purvinoskojinės, kodas atrodytų taip:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class PurvinosKojinės&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iš pradžių pažiūrėk į klasę. Programa, kuri naudos šią klasę, bus parodyta vėliau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Klasė&lt;br /&gt;
&lt;br /&gt;
class SkKeitimas:&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.__skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    def pridėkpenkis(self,sk):&lt;br /&gt;
        self.__skaičius = sk&lt;br /&gt;
        return self.__skaičius + 5&lt;br /&gt;
&lt;br /&gt;
    def padaugink(self,pridėtas):&lt;br /&gt;
        self.__pridėtas = pridėtas&lt;br /&gt;
        return self.__pridėtas * 2.452&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programa, kuri naudoja viršuje esančią klasę yra parašyta žemiau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Programa&lt;br /&gt;
&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    pridėtas = matkė.pridėkpenkis(sk)&lt;br /&gt;
&lt;br /&gt;
    daugintas = matkė.padaugink(pridėtas)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra&amp;quot;, daugintas)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tikriausiai dabar esi pasimetęs. Tai visiškai suprantama. Iš pradžių, pasistenk suprasti klasę.&lt;br /&gt;
Klasė yra pavadinta &amp;quot;SkKeitimas&amp;quot;&lt;br /&gt;
Ši klasė turi tris metodus&lt;br /&gt;
* __init__&lt;br /&gt;
* pridėkpenkis&lt;br /&gt;
* padaugink&lt;br /&gt;
&lt;br /&gt;
Šie trys metodai savyje turi labai panašų kodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į tai, jog kiekvienas metodas turi parametrą pavadinimu „self“. Kiekvienas klasės metodas turi būtinai turėti šį parametrą. Šis parametras nebūtinai turi būti su pavadinimu „self“, bet tai yra priimta kaip gerosios praktikos, tad tikriausiai ir tu turėtum jį taip vadinti. Šis parametras yra reikalingas kiekviename metode nes, kai jis yra iškviečiamas, jis turi žinoti, su kuriuo objekto atributu turėtų atlikti operacijas. Net kai turi tik vieną objektą, turi pasirūpinti, kad programa žinotų, jog nori naudoti atributus aprašytus būtent toje klasėje. Todėl turi būti saugus ir naudoti „self“ parametrą.&lt;br /&gt;
&lt;br /&gt;
Peržiūrėk pirmą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dauguma Python'o klasių turi &amp;lt;code&amp;gt;__init__&amp;lt;/code&amp;gt;, kuris yra paleidžiamas automatiškai kiekvieną kartą, kai atmintyje yra sukuriama tos klasės objektas (kai sukuriame nuorodą į klasę, yra sukuriama tos klasės &amp;lt;i&amp;gt;objektas&amp;lt;/i&amp;gt;). Šis metodas yra paprastai vadinamas &amp;lt;i&amp;gt;inicijavimo metodu&amp;lt;/i&amp;gt;. Kai šis metodas yra paleidžiamas, „self“ parametras yra automatiškai priskiriamas tariamam objektui. __init__ metodas inicijuoja klasės atributus, dėl šios priežasties jis yra pavadintas inicijavimo metodu. Po __init__ metodu, iš pradžių &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; atributui mes priskiriame 0.&lt;br /&gt;
Yra sukuriama nuorodą į turimo objekto atributą panaudojant taškinį žymėjimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
    self.__skaičius = 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kodas &amp;lt;code&amp;gt;self.__skaičius = 0&amp;lt;/code&amp;gt; reiškia, jog objekte esančio „skaičius“ atributo reikšmė yra 0.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į kitą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
    self.__skaičius = sk&lt;br /&gt;
    return self.__skaičius + 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „pridėkpenkis“. Jis priima parametrą pavadinimu „sk“. Metode esanti logika tada priskiria „sk“ reikšmę objekte esančiui atributui su pavadinimu „skaičius“. Tada metodas prideda 5 prie „skaičius“ ir jį grąžina jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į trečiajį metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
    self.__pridėtas = pridėtas&lt;br /&gt;
    return self.__pridėtas * 2.453&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „padaugink“. Jis priima parametrą pavadinimu „pridėtas“. Metodas priskiria priimtą reikšmę objekte esančiam atributui su pavadinimu „pridėtas“ ir grąžina „pridėtas“ atributo ir 2.452 sandaugą jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Ar atkreipei dėmesį į tai, jog kiekvienas metodo pavadinimas prasideda su dviem pabraukimais? Pabandyk tai suprasti.&lt;br /&gt;
Prieš tai buvo minėta, jog objektas, su metodų pagalba, dirba su atributais apibrėžtais jame pačiame. Būtų idealu, jei tuos atributus galėtum pakeisti TIK SU METODAIS ESANČIAIS PAČIAME OBJEKTE. Įmanoma turėti iššorinį kodą, kuris galėtų manipuliuoti tais pačiais atributais. Norint „paslėpti“ atributus, taip, kad juos matytų metodai aprašyti pačiame objekte, turi naudoti du pabraukimus prieš objekto pavadinimą, taip kaip ir buvo rodyta. Ištrynus abu pabraukimus nuo atributo pavadinimo tu juo galėsi manipuliuoti kodu, kuris yra parašytas objekto išorėje.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėki į programą, kuri naudoja aptartą klasę.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į pirmą eilutę, kuri nėra komentaras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši kodo eilutė importuoją klasę, kurią išsaugojai atskirame faile (modulyje). Klasės nebūtinai turi būti talpinamos atskiruose failuose, bet tai yra priimta kaip gerosios praktikos, tad yra verta jau nuo pat pradžių priprasti prie modulių importavimo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši eilutė sukuria SkKeitimas pavadinimu „ooppavyzdys“ modulyje patalpintos klasės objektą, kuris yra priskiriamas „matkė“ kintamajam.&lt;br /&gt;
Sintaksė atrodo taip: &amp;lt;code&amp;gt;&amp;lt;i&amp;gt;moduliopavadinimas.Klasėspavadinimas()&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt; Toliau apibrėžiama ''main'' funkciją ir paimamas skaičius iš vartotojo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;pridėtas = matkė.pridėkpenkis(sk)&amp;lt;/code&amp;gt; nusiunčia „sk“ kintamojo reikšmę metodui pavadinimu „pridėkpenkis“. Metodas yra aprašytas klasėje, kurios objektą išsaugojai kintamajame pavadinimu „matkė“. „pridėkpenkis“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „pridėtas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;daugintas = matkė.daugink(pridėtas)&amp;lt;/code&amp;gt; nusiunčia „pridėtas“ kintamojo reikšmę metodui pavadinimu „daugink“. Metodas yra aprašytas klasėje, kurios objektą išsaugojome kintamajame pavadinimu „matkė“. „daugink“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „daugintas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė atspausdina „Galutinis rezultatas yra &amp;lt;daugintas reikšmė&amp;gt;“. Paskutinė eilutė iškviečia main funkciją, kuri įvykdo žingsnius nurodytus viršuje.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Rekursija|next=Įvadas į importuotas bibliotekas ir kitas funkcijas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3742</id>
		<title>Python Vadovėlis/Daugiau apie tekstines eilutes</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3742"/>
		<updated>2021-12-27T17:22:22Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Šiame skyriuje pamatysi, kiek šaunių dalykų galime padaryti su tekstine reikšme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def rėk(tekstinė_reikšmė):&lt;br /&gt;
    for raidė in tekstinė_reikšmė:&lt;br /&gt;
        print(&amp;quot;Duok man &amp;quot; + raidė)&lt;br /&gt;
        print(&amp;quot;'&amp;quot; + raidė + &amp;quot;'&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
rėk(&amp;quot;Ačiū&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def vidurys(tekstas):&lt;br /&gt;
    print(&amp;quot;Raidė esanti viduryje yra:&amp;quot;, tekstas[len(tekstas) // 2])&lt;br /&gt;
&lt;br /&gt;
vidurys(&amp;quot;abcdefg&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;The Python Programming Language&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;Atlanta&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Duok man A&lt;br /&gt;
 'A'&lt;br /&gt;
 Duok man č&lt;br /&gt;
 'č'&lt;br /&gt;
 Duok man i&lt;br /&gt;
 'i'&lt;br /&gt;
 Duok man ū&lt;br /&gt;
 'ū'&lt;br /&gt;
 Raidė esanti viduryje yra: d&lt;br /&gt;
 Raidė esanti viduryje yra: r&lt;br /&gt;
 Raidė esanti viduryje yra: a&lt;br /&gt;
&lt;br /&gt;
Šios dvi programos rodo, kad tekstinė reikšmė(strings) yra keliais aspektais panaši į sąrašus (list). Funkcija &amp;lt;code&amp;gt;rėk()&amp;lt;/code&amp;gt; rodo, kad ciklas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; gali būti naudojamas su tekstine reikšme lygiai taip pat kaip ir su sąrašais. Funkcija &amp;lt;code&amp;gt;vidurys()&amp;lt;/code&amp;gt; rodo, kad tekstinėje reikšmėje galima naudotis Python'o programavimo kalboje jau esančia funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt;, taip pat masyvų indeksavimu ir pjaustymu. Dauguma sąrašo (list) funkcijų veikia ir su tekstine reikšme.&lt;br /&gt;
&lt;br /&gt;
Kita šio skyriaus funkcija parodo tam tikras tekstinės reikšmės ypatybes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pavertimas_didžiosiomis_raidėmis(tekstas):&lt;br /&gt;
    ## Ši funkcija, tekstinę reikšmę užrašo didžiosiomis raidėmis&lt;br /&gt;
    didžiosios_raidės = &amp;quot;&amp;quot;&lt;br /&gt;
    for raidė in tekstas:&lt;br /&gt;
        if 'a' &amp;lt;= raidė &amp;lt;= 'z':&lt;br /&gt;
            lokacija = ord(raidė) - ord('a')&lt;br /&gt;
            naujas_ascii = lokacija + ord('A')&lt;br /&gt;
            raidė= chr(naujas_ascii)&lt;br /&gt;
        didžiosios_raidės = didžiosios_raidės + raidė&lt;br /&gt;
    return didžiosios_raidės&lt;br /&gt;
&lt;br /&gt;
print(pavertimas_didžiosiomis_raidėmis(&amp;quot;Įrašytas tekstas&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 ĮRAŠYTAS TEKSTAS&lt;br /&gt;
&lt;br /&gt;
Tai veikia, nes kompiuteris tekstinės reikšmės simbolius šifruoja skaičiais nuo 0 iki 1 114 111. Visos šios tekstinės reikšmės turi savo unikalias unikodo reikšmes. Pavyzdžiui, simboliui „A“ yra priskirtas skaičius 65, simbolis „B“ kompiuterio suprantamas kaip 66, o simbolis א yra 1488. Python'o programavimo kalba turi funkciją, vadinamą &amp;lt;code&amp;gt;ord()&amp;lt;/code&amp;gt; (trumpinys angliško žodžio ordinal, kuris reiškia iš eilės), kuri grąžina simbolį kaip skaičių. Taip pat Python'o programavimo kalba turi ir atvirkščią funkciją, vadinamą &amp;lt;code&amp;gt;chr()&amp;lt;/code&amp;gt;, kuri skaičių paverčia simboliu. Supratus, kaip veikia šios funkcijos aukščiau užrašyta programa turėtų atrodyti logiška.&lt;br /&gt;
&lt;br /&gt;
Programos pirmoji eilutė &amp;lt;code&amp;gt;if 'a' &amp;lt;= simbolis &amp;lt;= 'z':&amp;lt;/code&amp;gt; patikrina, ar raidė yra mažoji. Jeigu taip, tada naudojamos kitos programos eilutės:&lt;br /&gt;
Pirmiausia eilutė &amp;lt;code&amp;gt;lokacija= ord(simbolis) - ord('a')&amp;lt;/code&amp;gt; nurodo simbolio vietą: a = 0, b = 1, c = 2 ir t.t. &lt;br /&gt;
Tada nauja reikšmė randama su kodo eilute &amp;lt;code&amp;gt;naujas_ascii = lokacija + ord ('A')&amp;lt;/code&amp;gt;. &lt;br /&gt;
Tada ši reikšmė paverčiama atgal į simbolį, kuris dabar yra didžioji raidė. &lt;br /&gt;
&lt;br /&gt;
Žinoma, tai tik programos pavyzdys, daug paprasčiau tai padaryti gali pasinaudodamas šiuo &amp;lt;code&amp;gt;metodu=var.upper()&amp;lt;/code&amp;gt;, kuris veikia su visomis kalbomis.&lt;br /&gt;
&lt;br /&gt;
O dabar pabandykime pasižiūrėti į šį pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''2'''&lt;br /&gt;
 2&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(2)'''&lt;br /&gt;
 '2'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''-123'''&lt;br /&gt;
 -123&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(-123)'''&lt;br /&gt;
 '-123'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot;'''&lt;br /&gt;
 '23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;)'''&lt;br /&gt;
 23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot; * 2'''&lt;br /&gt;
 '2323'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;) * 2'''&lt;br /&gt;
 46&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1.23)'''&lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(1.23)'''&lt;br /&gt;
 1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(-1.23)'''&lt;br /&gt;
 -1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių po kablelio'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;1.23&amp;quot;)'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;1.23&amp;quot;''' &lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;123&amp;quot;)'''&lt;br /&gt;
 123.0&lt;br /&gt;
&lt;br /&gt;
Jeigu dar nesupratai, tai funkcija &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; konvertuoja skaičių į tekstinę reikšmę, o funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į skaičių. Funkcija &amp;lt;code&amp;gt;float()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę arba skaičių į skaičių po kablelio. Grįžtant prie funkcijos &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; - ji grąžina tekstinę įrašytos reikšmės versiją. Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1)'''&lt;br /&gt;
 '1'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(234.14)'''&lt;br /&gt;
 '234.14'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str([4, 42, 10])'''&lt;br /&gt;
 '[4, 42, 10]'&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę (ar skaičių su reikšme po kablelio) į sveikąjį skaičių. Panaši funkcija &amp;lt;Code&amp;gt;float&amp;lt;/code&amp;gt; konvertuoja skaičių ar tekstinę reikšmę į skaičių su reikšme po kablelio. Taip pat Python'o programavimo kalba turi funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt;, kuri grąžina eilutės tipą. Pavyzdžiui:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
v = '123'&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = 645.123&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = [1, 2, 3]&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'list'&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu pamatai funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; tai pasitikrink, ar grąžinamas toks reikšmės tipas, kurio tikėjaisi.&lt;br /&gt;
&lt;br /&gt;
Taip pat naudingas ir dažnai paprastose užduotyse naudojamas metodas &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;Čia yra tik ždožių kratinys&amp;quot;.split()'''&lt;br /&gt;
 ['Čia', 'yra', 'tik', 'žodžių', 'kratinys']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas= &amp;quot;Pirma partija, antra partija, trečia, ketvirta&amp;quot;'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 ['Pirma partija', ' antra partija', ' trečia', ' ketvirta']&lt;br /&gt;
&lt;br /&gt;
Ar pastebėjai kaip &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į tekstinių reikšmių sąrašą (angl. list)? Pagal numatytus nustatymus tekstinė reikšmė padalijama pagal nurodytus tarpus, šiuo atveju pagal nurodytą argumentą - kablelį.&lt;br /&gt;
Taip pat galima pridėti ir kitą argumentą, kuris nurodo &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; funkcijai, kurioje sąrašo vietoje reikia atskirti tekstą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas= tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(sąrašas)'''&lt;br /&gt;
 4&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' ketvirta'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas = tekstas.split(&amp;quot;,&amp;quot;, 2)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(sąrašas)'''&lt;br /&gt;
 3&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' trečia, ketvirta'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO add more on strings --&amp;gt;&lt;br /&gt;
=== Tekstinės (ir sąrašo) reikšmės pjaustymas (Slicing strings(and lists) ===&lt;br /&gt;
&lt;br /&gt;
Tekstinę reikšmę galima pjaustyti/skaidyti į skirtingas mažesnes reikšmes. Tą jau matei ankstesniame pavyzdyje, kai laužtiniuose skliaustuose &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; buvo nurodyta reikiama teksto vieta. Pjaustymo operatorius veikia taip: &amp;lt;code&amp;gt;tekstas[pradžios_indeksas:pabaigos_indeksas]&amp;lt;/code&amp;gt; (retais atvejais galime pridėti dar ir trečią argumentą, kaip apačioje esančiame pavyzdyje)&lt;br /&gt;
&lt;br /&gt;
Kad nesusipainiotum įrašydamas indekso skaičius, įsivaizduok, kad žirklėmis karpai tekstą, o programai nurodai, kurioje vietoje kirpti. Štai vienas pavyzdys, kaip tai viekia - geltonai pažymėtos kirpimo vietos, o raudonai ir mėlynai indekso numeris&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{| style=&amp;quot;text-align:center&amp;quot; cellspacing=&amp;quot;0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |0&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tekstas = &lt;br /&gt;
|&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!S &lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!T&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!R&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!I&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!N&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!G&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[:&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|:]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Įsidėmėk, kad raudonai pažymėti indeksai skaičiuojami nuo pradžios, o mėlyni atvirkščiai nuo kito galo t.y. teksto pabaigos. Taip pat ar pastebėjai, kad skaičiuojant nuo galo nėra -0 reikšmės? Taip yra todėl, kad 0 visada priskiriamas tik reikšmės pradžiai:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[1:4] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;TRI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:5] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[-4:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;RING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[2] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;R&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[::-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;GNIRTS&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;tekstas[1:4]&amp;lt;/tt&amp;gt; duoda visas &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; reikšmes tarp 1 ir 4, &amp;quot;&amp;lt;tt&amp;gt;TRI&amp;lt;/tt&amp;gt;&amp;quot;. Jei praleisi vieną iš argumentų [pradžios_indeksas:pabaigos indeksas], automatiškai gausi tekstinę reikšmę nuo pradžios ar pabaigos: &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt; atspausdina&amp;quot;&amp;lt;tt&amp;gt;STRIN&amp;lt;/tt&amp;gt;&amp;quot;. Taip pat, tiek su &amp;lt;tt&amp;gt;pradžios_indeksas&amp;lt;/tt&amp;gt;, tiek su &amp;lt;tt&amp;gt;pabaigos_indeksas&amp;lt;/tt&amp;gt; galime naudoti raudonai ir mėlynai pavaizduotą skaičiavimo schemą - t.y. galime skaičuoti nuo pradžios, arba nuo pabaigos: &amp;lt;tt&amp;gt;tekstas[:-1]&amp;lt;/tt&amp;gt; duoda tą patį rezultatą kaip &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt;, todėl, kad indekas -1 šiame žodyje yra toje pačioje vietoje kaip indeksas 5. Jeigu nenaudojame argumento kartu su dvitaškiu, tai skaičius traktuojamas kitaip, pavyzdžiui: &amp;lt;tt&amp;gt;tekstas[2]&amp;lt;/tt&amp;gt; duoda vieną raidę, kuri yra nurodytoje vietoje, šiuo atveju &amp;quot;&amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt;&amp;quot;. Speciali pjaustymo operacija &amp;lt;tt&amp;gt;tekstas[:]&amp;lt;/tt&amp;gt; reiškia nuo pradžios iki pabaigos ir duodą visos tekstinės reikšmės ar sąrašo (list) kopiją. &lt;br /&gt;
&lt;br /&gt;
Na ir galiausiai, pjaustymo operacija gali turėti ir trečią argumentą, kuris suprantamas, kaip „žingsnio dydis“: &amp;lt;tt&amp;gt;tekstas[::-1]&amp;lt;/tt&amp;gt; yra &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; nuo pradžios iki pabaigos, kai nurodytas žingsnio dydis yra -1. Tai reiškia - kiekviena raidė, tik atvirkštine eilės tvarka. &amp;quot;&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;&amp;quot; atvirkščiai yra &amp;quot;&amp;lt;tt&amp;gt;GNIRTS&amp;lt;/tt&amp;gt;&amp;quot; (jeigu nesupratai, tai pabandyk prasitestuoti įrašydamas kaip žingsnio ilgį skaičių 2).&lt;br /&gt;
&lt;br /&gt;
Visos šios pjaustymo operacijos veikia ir su sąrašais (lists). Šiuo atveju tekstinę reikšmę galime suprasti, kaip sąrašą, kai visi sąrašo elementai yra atskiros raidės. Iš šio skyriaus atsimink pagrindinį principą - į viską žiūrėk taip lyg karpytum, tai padės nesusipainioti įrašant indeksus.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa reikalauja dešimtainių skaičių supratimo.&lt;br /&gt;
def į_tekstą(į_skaičių):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja skaičių į tekstą&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    tekstas = &amp;quot;&amp;quot;&lt;br /&gt;
    prefiksas = &amp;quot;&amp;quot;&lt;br /&gt;
    if į_skaičių &amp;lt; 0:&lt;br /&gt;
        prefiksas = &amp;quot;-&amp;quot;&lt;br /&gt;
        į_skaičių = -į_skaičių&lt;br /&gt;
    while į_skaičių // 10 != 0:&lt;br /&gt;
        tekstas = str(į_skaičių % 10) + tekstas&lt;br /&gt;
        į_skaičių= į_skaičių// 10&lt;br /&gt;
    tekstas = str(į_skaičių % 10) + tekstas&lt;br /&gt;
    return prefiksas + tekstas&lt;br /&gt;
&lt;br /&gt;
def į_skaičių(į_tekstą):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja tekstą į skaičių&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    skaičius = 0&lt;br /&gt;
    if į_tekstą[0] == &amp;quot;-&amp;quot;:&lt;br /&gt;
        daugiklis = -1&lt;br /&gt;
        į_tekstą = į_tekstą[1:]&lt;br /&gt;
    else:&lt;br /&gt;
        daugiklis = 1&lt;br /&gt;
    for c in į_tekstą:&lt;br /&gt;
        skaičius = skaičius* 10 + int(c)&lt;br /&gt;
    return skaičius * daugiklis&lt;br /&gt;
&lt;br /&gt;
print(į_tekstą(2))&lt;br /&gt;
print(į_tekstą(23445))&lt;br /&gt;
print(į_tekstą(-23445))&lt;br /&gt;
print(į_skaičių(&amp;quot;14234&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;12345&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;-3512&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 2&lt;br /&gt;
 23445&lt;br /&gt;
 -23445&lt;br /&gt;
 14234&lt;br /&gt;
 12345&lt;br /&gt;
 -3512&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Daugiau apie sąrašus |next=Failų IO}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3741</id>
		<title>Python Vadovėlis/Daugiau apie tekstines eilutes</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3741"/>
		<updated>2021-12-27T16:44:02Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Šiame skyriuje pamatysi, kiek šaunių dalykų galime padaryti su tekstine reikšme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def rėk(tekstinė_reikšmė):&lt;br /&gt;
    for raidė in tekstinė_reikšmė:&lt;br /&gt;
        print(&amp;quot;Duok man &amp;quot; + raidė)&lt;br /&gt;
        print(&amp;quot;'&amp;quot; + raidė + &amp;quot;'&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
rėk(&amp;quot;Ačiū&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def vidurys(tekstas):&lt;br /&gt;
    print(&amp;quot;Raidė esanti viduryje yra:&amp;quot;, tekstas[len(tekstas) // 2])&lt;br /&gt;
&lt;br /&gt;
vidurys(&amp;quot;abcdefg&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;The Python Programming Language&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;Atlanta&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Duok man A&lt;br /&gt;
 'A'&lt;br /&gt;
 Duok man č&lt;br /&gt;
 'č'&lt;br /&gt;
 Duok man i&lt;br /&gt;
 'i'&lt;br /&gt;
 Duok man ū&lt;br /&gt;
 'ū'&lt;br /&gt;
 Raidė esanti viduryje yra: d&lt;br /&gt;
 Raidė esanti viduryje yra: r&lt;br /&gt;
 Raidė esanti viduryje yra: a&lt;br /&gt;
&lt;br /&gt;
Šios dvi programos rodo, kad tekstinė reikšmė(strings) yra keliais aspektais panaši į sąrašus (list). Funkcija &amp;lt;code&amp;gt;rėk()&amp;lt;/code&amp;gt; rodo, kad ciklas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; gali būti naudojamas su tekstine reikšme lygiai taip pat kaip ir su sąrašais. Funkcija &amp;lt;code&amp;gt;vidurys()&amp;lt;/code&amp;gt; rodo, kad tekstinėje reikšmėje galima naudotis Python'o programavimo kalboje jau esančia funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt;, taip pat masyvų indeksavimu ir pjaustymu. Dauguma sąrašo (list) funkcijų veikia ir su tekstine reikšme.&lt;br /&gt;
&lt;br /&gt;
Kita šio skyriaus funkcija parodo tam tikras tekstinės reikšmės ypatybes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pavertimas_didžiosiomis_raidėmis(tekstas):&lt;br /&gt;
    ## Ši funkcija, tekstinę reikšmę užrašo didžiosiomis raidėmis&lt;br /&gt;
    didžiosios_raidės = &amp;quot;&amp;quot;&lt;br /&gt;
    for raidė in tekstas:&lt;br /&gt;
        if 'a' &amp;lt;= raidė &amp;lt;= 'z':&lt;br /&gt;
            lokacija = ord(raidė) - ord('a')&lt;br /&gt;
            naujas_ascii = lokacija + ord('A')&lt;br /&gt;
            raidė= chr(naujas_ascii)&lt;br /&gt;
        didžiosios_raidės = didžiosios_raidės + raidė&lt;br /&gt;
    return didžiosios_raidės&lt;br /&gt;
&lt;br /&gt;
print(pavertimas_didžiosiomis_raidėmis(&amp;quot;Įrašytas tekstas&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 ĮRAŠYTAS TEKSTAS&lt;br /&gt;
&lt;br /&gt;
Tai veikia, nes kompiuteris tekstinės reikšmės simbolius šifruoja skaičiais nuo 0 iki 1 114 111. Visos šios tekstinės reikšmės turi savo unikalias unikodo reikšmes. Pavyzdžiui, simboliui „A“ yra priskirtas skaičius 65, simbolis „B“ kompiuterio suprantamas kaip 66, o simbolis א yra 1488. Python'o programavimo kalba turi funkciją, vadinamą &amp;lt;code&amp;gt;ord()&amp;lt;/code&amp;gt; (trumpinys angliško žodžio ordinal, kuris reiškia iš eilės), kuri grąžina simbolį kaip skaičių. Taip pat Python'o programavimo kalba turi ir atvirkščią funkciją, vadinamą &amp;lt;code&amp;gt;chr()&amp;lt;/code&amp;gt;, kuri skaičių paverčia simboliu. Supratus, kaip veikia šios funkcijos aukščiau užrašyta programa turėtų atrodyti logiška.&lt;br /&gt;
&lt;br /&gt;
Programos pirmoji eilutė &amp;lt;code&amp;gt;if 'a' &amp;lt;= simbolis &amp;lt;= 'z':&amp;lt;/code&amp;gt; patikrina, ar raidė yra mažoji. Jeigu taip, tada naudojamos kitos programos eilutės:&lt;br /&gt;
Pirmiausia eilutė &amp;lt;code&amp;gt;lokacija= ord(simbolis) - ord('a')&amp;lt;/code&amp;gt; nurodo simbolio vietą: a = 0, b = 1, c = 2 ir t.t. &lt;br /&gt;
Tada nauja reikšmė randama su kodo eilute &amp;lt;code&amp;gt;naujas_ascii = lokacija + ord ('A')&amp;lt;/code&amp;gt;. &lt;br /&gt;
Tada ši reikšmė paverčiama atgal į simbolį, kuris dabar yra didžioji raidė. &lt;br /&gt;
&lt;br /&gt;
Žinoma, tai tik programos pavyzdys, daug paprasčiau tai padaryti gali pasinaudodamas šiuo &amp;lt;code&amp;gt;metodu=var.upper()&amp;lt;/code&amp;gt;, kuris veikia su visomis kalbomis.&lt;br /&gt;
&lt;br /&gt;
O dabar pabandykime pasižiūrėti į šį pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''2'''&lt;br /&gt;
 2&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(2)'''&lt;br /&gt;
 '2'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''-123'''&lt;br /&gt;
 -123&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(-123)'''&lt;br /&gt;
 '-123'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot;'''&lt;br /&gt;
 '23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;)'''&lt;br /&gt;
 23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot; * 2'''&lt;br /&gt;
 '2323'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;) * 2'''&lt;br /&gt;
 46&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1.23)'''&lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(1.23)'''&lt;br /&gt;
 1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(-1.23)'''&lt;br /&gt;
 -1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių po kablelio'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;1.23&amp;quot;)'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;1.23&amp;quot;''' &lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;123&amp;quot;)'''&lt;br /&gt;
 123.0&lt;br /&gt;
&lt;br /&gt;
Jeigu dar nesupratai, tai funkcija &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; konvertuoja skaičių į tekstinę reikšmę, o funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į skaičių. Funkcija &amp;lt;code&amp;gt;float()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę arba skaičių į skaičių po kablelio. Grįžtant prie funkcijos &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; - ji grąžina tekstinę įrašytos reikšmės versiją. Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1)'''&lt;br /&gt;
 '1'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(234.14)'''&lt;br /&gt;
 '234.14'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str([4, 42, 10])'''&lt;br /&gt;
 '[4, 42, 10]'&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę (ar skaičių su reikšme po kablelio) į sveikąjį skaičių. Panaši funkcija &amp;lt;Code&amp;gt;float&amp;lt;/code&amp;gt; konvertuoja skaičių ar tekstinę reikšmę į skaičių su reikšme po kablelio. Taip pat Python'o programavimo kalba turi funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt;, kuri grąžina eilutės tipą. Pavyzdžiui:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
v = '123'&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = 645.123&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = [1, 2, 3]&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'list'&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu pamatai funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; tai pasitikrink, ar grąžinamas toks reikšmės tipas, kurio tikėjaisi.&lt;br /&gt;
&lt;br /&gt;
Taip pat naudingas ir dažnai paprastose užduotyse naudojamas metodas &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;Čia yra tik ždožių kratinys&amp;quot;.split()'''&lt;br /&gt;
 ['Čia', 'yra', 'tik', 'žodžių', 'kratinys']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas= &amp;quot;Pirma partija, antra partija, trečia, ketvirta&amp;quot;'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 ['Pirma partija', ' antra partija', ' trečia', ' ketvirta']&lt;br /&gt;
&lt;br /&gt;
Ar pastebėjai kaip &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į tekstinių reikšmių sąrašą (angl. list)? Pagal numatytus nustatymus tekstinė reikšmė padalijama pagal nurodytus tarpus, šiuo atveju pagal nurodytą argumentą - kablelį.&lt;br /&gt;
Taip pat galima pridėti ir kitą argumentą, kuris nurodo &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; funkcijai, kurioje sąrašo vietoje reikia atskirti tekstą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas= tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(sąrašas)'''&lt;br /&gt;
 4&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' ketvirta'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list = tekstas.split(&amp;quot;,&amp;quot;, 2)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(list)'''&lt;br /&gt;
 3&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' trečia, ketvirta'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO add more on strings --&amp;gt;&lt;br /&gt;
=== Tekstinės (ir sąrašo) reikšmės pjaustymas (Slicing strings(and lists) ===&lt;br /&gt;
&lt;br /&gt;
Tekstinę reikšmę galima pjaustyti/skaidyti į skirtingas mažesnes reikšmes. Tą jau matei ankstesniame pavyzdyje, kai laužtiniuose skliaustuose &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; buvo nurodyta reikiama teksto vieta. Pjaustymo operatorius veikia taip: &amp;lt;code&amp;gt;tekstas[pradžios_indeksas:pabaigos_indeksas]&amp;lt;/code&amp;gt; (retais atvejais galime pridėti dar ir trečią argumentą, kaip apačioje esančiame pavyzdyje)&lt;br /&gt;
&lt;br /&gt;
Kad nesusipainiotum įrašydamas indekso skaičius, įsivaizduok, kad žirklėmis karpai tekstą, o programai nurodai, kurioje vietoje kirpti. Štai vienas pavyzdys, kaip tai viekia - geltonai pažymėtos kirpimo vietos, o raudonai ir mėlynai indekso numeris&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{| style=&amp;quot;text-align:center&amp;quot; cellspacing=&amp;quot;0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |0&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tekstas = &lt;br /&gt;
|&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!S &lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!T&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!R&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!I&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!N&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!G&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[:&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|:]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Įsidėmėk, kad raudonai pažymėti indeksai skaičiuojami nuo pradžios, o mėlyni atvirkščiai nuo kito galo t.y. teksto pabaigos. Taip pat ar pastebėjai, kad skaičiuojant nuo galo nėra -0 reikšmės? Taip yra todėl, kad 0 visada priskiriamas tik reikšmės pradžiai:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[1:4] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;TRI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:5] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[-4:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;RING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[2] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;R&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[::-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;GNIRTS&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;tekstas[1:4]&amp;lt;/tt&amp;gt; duoda visas &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; reikšmes tarp 1 ir 4, &amp;quot;&amp;lt;tt&amp;gt;TRI&amp;lt;/tt&amp;gt;&amp;quot;. Jei praleisi vieną iš argumentų [pradžios_indeksas:pabaigos indeksas], automatiškai gausi tekstinę reikšmę nuo pradžios ar pabaigos: &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt; atspausdina&amp;quot;&amp;lt;tt&amp;gt;STRIN&amp;lt;/tt&amp;gt;&amp;quot;. Taip pat, tiek su &amp;lt;tt&amp;gt;pradžios_indeksas&amp;lt;/tt&amp;gt;, tiek su &amp;lt;tt&amp;gt;pabaigos_indeksas&amp;lt;/tt&amp;gt; galime naudoti raudonai ir mėlynai pavaizduotą skaičiavimo schemą - t.y. galime skaičuoti nuo pradžios, arba nuo pabaigos: &amp;lt;tt&amp;gt;tekstas[:-1]&amp;lt;/tt&amp;gt; duoda tą patį rezultatą kaip &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt;, todėl, kad indekas -1 šiame žodyje yra toje pačioje vietoje kaip indeksas 5. Jeigu nenaudojame argumento kartu su dvitaškiu, tai skaičius traktuojamas kitaip, pavyzdžiui: &amp;lt;tt&amp;gt;tekstas[2]&amp;lt;/tt&amp;gt; duoda vieną raidę, kuri yra nurodytoje vietoje, šiuo atveju &amp;quot;&amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt;&amp;quot;. Speciali pjaustymo operacija &amp;lt;tt&amp;gt;tekstas[:]&amp;lt;/tt&amp;gt; reiškia nuo pradžios iki pabaigos ir duodą visos tekstinės reikšmės ar sąrašo (list) kopiją. &lt;br /&gt;
&lt;br /&gt;
Na ir galiausiai, pjaustymo operacija gali turėti ir trečią argumentą, kuris suprantamas, kaip „žingsnio dydis“: &amp;lt;tt&amp;gt;tekstas[::-1]&amp;lt;/tt&amp;gt; yra &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; nuo pradžios iki pabaigos, kai nurodytas žingsnio dydis yra -1. Tai reiškia - kiekviena raidė, tik atvirkštine eilės tvarka. &amp;quot;&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;&amp;quot; atvirkščiai yra &amp;quot;&amp;lt;tt&amp;gt;GNIRTS&amp;lt;/tt&amp;gt;&amp;quot; (jeigu nesupratai, tai pabandyk prasitestuoti įrašydamas kaip žingsnio ilgį skaičių 2).&lt;br /&gt;
&lt;br /&gt;
Visos šios pjaustymo operacijos veikia ir su sąrašais (lists). Šiuo atveju tekstinę reikšmę galime suprasti, kaip sąrašą, kai visi sąrašo elementai yra atskiros raidės. Iš šio skyriaus atsimink pagrindinį principą - į viską žiūrėk taip lyg karpytum, tai padės nesusipainioti įrašant indeksus.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa reikalauja dešimtainių skaičių supratimo.&lt;br /&gt;
def į_tekstą(į_skaičių):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja skaičių į tekstą&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    tekstas = &amp;quot;&amp;quot;&lt;br /&gt;
    prefiksas = &amp;quot;&amp;quot;&lt;br /&gt;
    if į_skaičių &amp;lt; 0:&lt;br /&gt;
        prefiksas = &amp;quot;-&amp;quot;&lt;br /&gt;
        į_skaičių = -į_skaičių&lt;br /&gt;
    while į_skaičių // 10 != 0:&lt;br /&gt;
        tekstas = str(į_skaičių % 10) + tekstas&lt;br /&gt;
        į_skaičių= į_skaičių// 10&lt;br /&gt;
    tekstas = str(į_skaičių % 10) + tekstas&lt;br /&gt;
    return prefiksas + tekstas&lt;br /&gt;
&lt;br /&gt;
def į_skaičių(į_tekstą):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja tekstą į skaičių&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    skaičius = 0&lt;br /&gt;
    if į_tekstą[0] == &amp;quot;-&amp;quot;:&lt;br /&gt;
        daugiklis = -1&lt;br /&gt;
        į_tekstą = į_tekstą[1:]&lt;br /&gt;
    else:&lt;br /&gt;
        daugiklis = 1&lt;br /&gt;
    for c in į_tekstą:&lt;br /&gt;
        skaičius = skaičius* 10 + int(c)&lt;br /&gt;
    return skaičius * daugiklis&lt;br /&gt;
&lt;br /&gt;
print(į_tekstą(2))&lt;br /&gt;
print(į_tekstą(23445))&lt;br /&gt;
print(į_tekstą(-23445))&lt;br /&gt;
print(į_skaičių(&amp;quot;14234&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;12345&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;-3512&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 2&lt;br /&gt;
 23445&lt;br /&gt;
 -23445&lt;br /&gt;
 14234&lt;br /&gt;
 12345&lt;br /&gt;
 -3512&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Daugiau apie sąrašus |next=Failų IO}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3740</id>
		<title>Python Vadovėlis/Daugiau apie tekstines eilutes</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3740"/>
		<updated>2021-12-27T16:34:11Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Šiame skyriuje pamatysi, kiek šaunių dalykų galime padaryti su tekstine reikšme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def rėk(tekstinė_reikšmė):&lt;br /&gt;
    for raidė in tekstinė_reikšmė:&lt;br /&gt;
        print(&amp;quot;Duok man &amp;quot; + raidė)&lt;br /&gt;
        print(&amp;quot;'&amp;quot; + raidė + &amp;quot;'&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
rėk(&amp;quot;Ačiū&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def vidurys(tekstas):&lt;br /&gt;
    print(&amp;quot;Raidė esanti viduryje yra:&amp;quot;, tekstas[len(tekstas) // 2])&lt;br /&gt;
&lt;br /&gt;
vidurys(&amp;quot;abcdefg&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;The Python Programming Language&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;Atlanta&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Duok man A&lt;br /&gt;
 'A'&lt;br /&gt;
 Duok man č&lt;br /&gt;
 'č'&lt;br /&gt;
 Duok man i&lt;br /&gt;
 'i'&lt;br /&gt;
 Duok man ū&lt;br /&gt;
 'ū'&lt;br /&gt;
 Raidė esanti viduryje yra: d&lt;br /&gt;
 Raidė esanti viduryje yra: r&lt;br /&gt;
 Raidė esanti viduryje yra: a&lt;br /&gt;
&lt;br /&gt;
Šios dvi programos rodo, kad tekstinė reikšmė(strings) yra keliais aspektais panaši į sąrašus (list). Funkcija &amp;lt;code&amp;gt;rėk()&amp;lt;/code&amp;gt; rodo, kad ciklas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; gali būti naudojamas su tekstine reikšme lygiai taip pat kaip ir su sąrašais. Funkcija &amp;lt;code&amp;gt;vidurys()&amp;lt;/code&amp;gt; rodo, kad tekstinėje reikšmėje galima naudotis Python'o programavimo kalboje jau esančia funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt;, taip pat masyvų indeksavimu ir pjaustymu. Dauguma sąrašo (list) funkcijų veikia ir su tekstine reikšme.&lt;br /&gt;
&lt;br /&gt;
Kita šio skyriaus funkcija parodo tam tikras tekstinės reikšmės ypatybes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pavertimas_didžiosiomis_raidėmis(tekstas):&lt;br /&gt;
    ## Ši funkcija, tekstinę reikšmę užrašo didžiosiomis raidėmis&lt;br /&gt;
    didžiosios_raidės = &amp;quot;&amp;quot;&lt;br /&gt;
    for raidė in tekstas:&lt;br /&gt;
        if 'a' &amp;lt;= raidė &amp;lt;= 'z':&lt;br /&gt;
            lokacija = ord(raidė) - ord('a')&lt;br /&gt;
            naujas_ascii = lokacija + ord('A')&lt;br /&gt;
            raidė= chr(naujas_ascii)&lt;br /&gt;
        didžiosios_raidės = didžiosios_raidės + raidė&lt;br /&gt;
    return didžiosios_raidės&lt;br /&gt;
&lt;br /&gt;
print(pavertimas_didžiosiomis_raidėmis(&amp;quot;Įrašytas tekstas&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 ĮRAŠYTAS TEKSTAS&lt;br /&gt;
&lt;br /&gt;
Tai veikia, nes kompiuteris tekstinės reikšmės simbolius šifruoja skaičiais nuo 0 iki 1 114 111. Visos šios tekstinės reikšmės turi savo unikalias unikodo reikšmes. Pavyzdžiui, simboliui „A“ yra priskirtas skaičius 65, simbolis „B“ kompiuterio suprantamas kaip 66, o simbolis א yra 1488. Python'o programavimo kalba turi funkciją, vadinamą &amp;lt;code&amp;gt;ord()&amp;lt;/code&amp;gt; (trumpinys angliško žodžio ordinal, kuris reiškia iš eilės), kuri grąžina simbolį kaip skaičių. Taip pat Python'o programavimo kalba turi ir atvirkščią funkciją, vadinamą &amp;lt;code&amp;gt;chr()&amp;lt;/code&amp;gt;, kuri skaičių paverčia simboliu. Supratus, kaip veikia šios funkcijos aukščiau užrašyta programa turėtų atrodyti logiška.&lt;br /&gt;
&lt;br /&gt;
Programos pirmoji eilutė &amp;lt;code&amp;gt;if 'a' &amp;lt;= simbolis &amp;lt;= 'z':&amp;lt;/code&amp;gt; patikrina, ar raidė yra mažoji. Jeigu taip, tada naudojamos kitos programos eilutės:&lt;br /&gt;
Pirmiausia eilutė &amp;lt;code&amp;gt;lokacija= ord(simbolis) - ord('a')&amp;lt;/code&amp;gt; nurodo simbolio vietą: a = 0, b = 1, c = 2 ir t.t. &lt;br /&gt;
Tada nauja reikšmė randama su kodo eilute &amp;lt;code&amp;gt;naujas_ascii = lokacija + ord ('A')&amp;lt;/code&amp;gt;. &lt;br /&gt;
Tada ši reikšmė paverčiama atgal į simbolį, kuris dabar yra didžioji raidė. &lt;br /&gt;
&lt;br /&gt;
Žinoma, tai tik programos pavyzdys, daug paprasčiau tai padaryti gali pasinaudodamas šiuo &amp;lt;code&amp;gt;metodu=var.upper()&amp;lt;/code&amp;gt;, kuris veikia su visomis kalbomis.&lt;br /&gt;
&lt;br /&gt;
O dabar pabandykime pasižiūrėti į šį pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''2'''&lt;br /&gt;
 2&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(2)'''&lt;br /&gt;
 '2'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''-123'''&lt;br /&gt;
 -123&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(-123)'''&lt;br /&gt;
 '-123'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot;'''&lt;br /&gt;
 '23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;)'''&lt;br /&gt;
 23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot; * 2'''&lt;br /&gt;
 '2323'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;) * 2'''&lt;br /&gt;
 46&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1.23)'''&lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(1.23)'''&lt;br /&gt;
 1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(-1.23)'''&lt;br /&gt;
 -1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių po kablelio'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;1.23&amp;quot;)'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;1.23&amp;quot;''' &lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;123&amp;quot;)'''&lt;br /&gt;
 123.0&lt;br /&gt;
&lt;br /&gt;
Jeigu dar nesupratai, tai funkcija &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; konvertuoja skaičių į tekstinę reikšmę, o funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į skaičių. Funkcija &amp;lt;code&amp;gt;float()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę arba skaičių į skaičių po kablelio. Grįžtant prie funkcijos &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; - ji grąžina tekstinę įrašytos reikšmės versiją. Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1)'''&lt;br /&gt;
 '1'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(234.14)'''&lt;br /&gt;
 '234.14'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str([4, 42, 10])'''&lt;br /&gt;
 '[4, 42, 10]'&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę (ar skaičių su reikšme po kablelio) į sveikąjį skaičių. Panaši funkcija &amp;lt;Code&amp;gt;float&amp;lt;/code&amp;gt; konvertuoja skaičių ar tekstinę reikšmę į skaičių su reikšme po kablelio. Taip pat Python'o programavimo kalba turi funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt;, kuri grąžina eilutės tipą. Pavyzdžiui:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
v = '123'&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = 645.123&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = [1, 2, 3]&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'list'&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu pamatai funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; tai pasitikrink, ar grąžinamas toks reikšmės tipas, kurio tikėjaisi.&lt;br /&gt;
&lt;br /&gt;
Taip pat naudingas ir dažnai paprastose užduotyse naudojamas metodas &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;Čia yra tik ždožių kratinys&amp;quot;.split()'''&lt;br /&gt;
 ['Čia', 'yra', 'tik', 'žodžių', 'kratinys']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas= &amp;quot;Pirma partija, antra partija, trečia, ketvirta&amp;quot;'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 ['Pirma partija', ' antra partija', ' trečia', ' ketvirta']&lt;br /&gt;
&lt;br /&gt;
Ar pastebėjai kaip &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į tekstinių reikšmių sąrašą (angl. list)? Pagal numatytus nustatymus tekstinė reikšmė padalijama pagal nurodytus tarpus, šiuo atveju pagal nurodytą argumentą - kablelį.&lt;br /&gt;
Taip pat galima pridėti ir kitą argumentą, kuris nurodo &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; funkcijai, kurioje sąrašo vietoje reikia atskirti tekstą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas= tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(sąrašas)'''&lt;br /&gt;
 4&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' ketvirta'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list = tekstas.split(&amp;quot;,&amp;quot;, 2)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(list)'''&lt;br /&gt;
 3&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' trečia, ketvirta'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO add more on strings --&amp;gt;&lt;br /&gt;
=== Tekstinės (ir sąrašo) reikšmės pjaustymas (Slicing strings(and lists) ===&lt;br /&gt;
&lt;br /&gt;
Tekstinę reikšmę galima pjaustyti/skaidyti į skirtingas mažesnes reikšmes. Tą jau matei ankstesniame pavyzdyje, kai laužtiniuose skliaustuose &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; buvo nurodyta reikiama teksto vieta. Pjaustymo operatorius veikia taip: &amp;lt;code&amp;gt;tekstas[pradžios_indeksas:pabaigos_indeksas]&amp;lt;/code&amp;gt; (retais atvejais galime pridėti dar ir trečią argumentą, kaip apačioje esančiame pavyzdyje)&lt;br /&gt;
&lt;br /&gt;
Kad nesusipainiotum įrašydamas indekso skaičius, įsivaizduok, kad žirklėmis karpai tekstą, o programai nurodai, kurioje vietoje kirpti. Štai vienas pavyzdys, kaip tai viekia - geltonai pažymėtos kirpimo vietos, o raudonai ir mėlynai indekso numeris&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{| style=&amp;quot;text-align:center&amp;quot; cellspacing=&amp;quot;0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |0&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tekstas = &lt;br /&gt;
|&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!S &lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!T&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!R&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!I&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!N&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!G&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[:&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|:]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Įsidėmėk, kad raudonai pažymėti indeksai skaičiuojami nuo pradžios, o mėlyni atvirkščiai nuo kito galo t.y. teksto pabaigos. Taip pat ar pastebėjai, kad skaičiuojant nuo galo nėra -0 reikšmės? Taip yra todėl, kad 0 visada priskiriamas tik reikšmės pradžiai:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[1:4] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;TRI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:5] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[-4:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;RING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[2] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;R&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[::-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;GNIRTS&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;tekstas[1:4]&amp;lt;/tt&amp;gt; duoda visas &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; reikšmes tarp 1 ir 4, &amp;quot;&amp;lt;tt&amp;gt;TRI&amp;lt;/tt&amp;gt;&amp;quot;. Jei praleisi vieną iš argumentų [pradžios_indeksas:pabaigos indeksas], automatiškai gausi tekstinę reikšmę nuo pradžios ar pabaigos: &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt; atspausdina&amp;quot;&amp;lt;tt&amp;gt;STRIN&amp;lt;/tt&amp;gt;&amp;quot;. Taip pat, tiek su &amp;lt;tt&amp;gt;pradžios_indeksas&amp;lt;/tt&amp;gt;, tiek su &amp;lt;tt&amp;gt;pabaigos_indeksas&amp;lt;/tt&amp;gt; galime naudoti raudonai ir mėlynai pavaizduotą skaičiavimo schemą - t.y. galime skaičuoti nuo pradžios, arba nuo pabaigos: &amp;lt;tt&amp;gt;tekstas[:-1]&amp;lt;/tt&amp;gt; duoda tą patį rezultatą kaip &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt;, todėl, kad indekas -1 šiame žodyje yra toje pačioje vietoje kaip indeksas 5. Jeigu nenaudojame argumento kartu su dvitaškiu, tai skaičius traktuojamas kitaip, pavyzdžiui: &amp;lt;tt&amp;gt;tekstas[2]&amp;lt;/tt&amp;gt; duoda vieną raidę, kuri yra nurodytoje vietoje, šiuo atveju &amp;quot;&amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt;&amp;quot;. Speciali pjaustymo operacija &amp;lt;tt&amp;gt;tekstas[:]&amp;lt;/tt&amp;gt; reiškia nuo pradžios iki pabaigos ir duodą visos tekstinės reikšmės ar sąrašo (list) kopiją. &lt;br /&gt;
&lt;br /&gt;
Na ir galiausiai, pjaustymo operacija gali turėti ir trečią argumentą, kuris suprantamas, kaip „žingsnio dydis“: &amp;lt;tt&amp;gt;tekstas[::-1]&amp;lt;/tt&amp;gt; yra &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; nuo pradžios iki pabaigos, kai nurodytas žingsnio dydis yra -1. Tai reiškia - kiekviena raidė, tik atvirkštine eilės tvarka. &amp;quot;&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;&amp;quot; atvirkščiai yra &amp;quot;&amp;lt;tt&amp;gt;GNIRTS&amp;lt;/tt&amp;gt;&amp;quot; (jeigu nesupratai, tai pabandyk prasitestuoti įrašydamas kaip žingsnio ilgį skaičių 2).&lt;br /&gt;
&lt;br /&gt;
Visos šios pjaustymo operacijos veikia ir su sąrašais (lists). Šiuo atveju tekstinę reikšmę galime suprasti, kaip sąrašą, kai visi sąrašo elementai yra atskiros raidės. Iš šio skyriaus atsimink pagrindinį principą - į viską žiūrėk taip lyg karpytum, tai padės nesusipainioti įrašant indeksus.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa reikalauja dešimtainių skaičių supratimo.&lt;br /&gt;
def į_tekstą(į_skaičių):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja skaičių į tekstą&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    tekstas = &amp;quot;&amp;quot;&lt;br /&gt;
    prefiksas = &amp;quot;&amp;quot;&lt;br /&gt;
    if į_skaičių &amp;lt; 0:&lt;br /&gt;
        prefiksas = &amp;quot;-&amp;quot;&lt;br /&gt;
        į_skaičių = -į_skaičių&lt;br /&gt;
    while į_skaičių // 10 != 0:&lt;br /&gt;
        out_str = str(į_skaičių % 10) + tekstas&lt;br /&gt;
        į_skaičių= į_skaičių// 10&lt;br /&gt;
    tekstas = str(į_skaičių % 10) + tekstas&lt;br /&gt;
    return prefiksas + tekstas&lt;br /&gt;
&lt;br /&gt;
def į_skaičių(į_tekstą):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja tekstą į skaičių&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    skaičius = 0&lt;br /&gt;
    if į_tekstą[0] == &amp;quot;-&amp;quot;:&lt;br /&gt;
        daugiklis = -1&lt;br /&gt;
        į_tekstą = į_tekstą[1:]&lt;br /&gt;
    else:&lt;br /&gt;
        daugiklis = 1&lt;br /&gt;
    for c in į_tekstą:&lt;br /&gt;
        skaičius = skaičius* 10 + int(c)&lt;br /&gt;
    return skaičius * daugiklis&lt;br /&gt;
&lt;br /&gt;
print(į_tekstą(2))&lt;br /&gt;
print(į_tekstą(23445))&lt;br /&gt;
print(į_tekstą(-23445))&lt;br /&gt;
print(į_skaičių(&amp;quot;14234&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;12345&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;-3512&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 2&lt;br /&gt;
 23445&lt;br /&gt;
 -23445&lt;br /&gt;
 14234&lt;br /&gt;
 12345&lt;br /&gt;
 -3512&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Daugiau apie sąrašus |next=Failų IO}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3739</id>
		<title>Python Vadovėlis/Daugiau apie tekstines eilutes</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3739"/>
		<updated>2021-12-27T16:28:38Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Šiame skyriuje pamatysi, kiek šaunių dalykų galime padaryti su tekstine reikšme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def rėk(tekstinė_reikšmė):&lt;br /&gt;
    for raidė in tekstinė_reikšmė:&lt;br /&gt;
        print(&amp;quot;Duok man &amp;quot; + raidė)&lt;br /&gt;
        print(&amp;quot;'&amp;quot; + raidė + &amp;quot;'&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
rėk(&amp;quot;Ačiū&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def vidurys(tekstas):&lt;br /&gt;
    print(&amp;quot;Raidė esanti viduryje yra:&amp;quot;, tekstas[len(tekstas) // 2])&lt;br /&gt;
&lt;br /&gt;
vidurys(&amp;quot;abcdefg&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;The Python Programming Language&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;Atlanta&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Duok man A&lt;br /&gt;
 'A'&lt;br /&gt;
 Duok man č&lt;br /&gt;
 'č'&lt;br /&gt;
 Duok man i&lt;br /&gt;
 'i'&lt;br /&gt;
 Duok man ū&lt;br /&gt;
 'ū'&lt;br /&gt;
 Raidė esanti viduryje yra: d&lt;br /&gt;
 Raidė esanti viduryje yra: r&lt;br /&gt;
 Raidė esanti viduryje yra: a&lt;br /&gt;
&lt;br /&gt;
Šios dvi programos rodo, kad tekstinė reikšmė(strings) yra keliais aspektais panaši į sąrašus (list). Funkcija &amp;lt;code&amp;gt;rėk()&amp;lt;/code&amp;gt; rodo, kad ciklas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; gali būti naudojamas su tekstine reikšme lygiai taip pat kaip ir su sąrašais. Funkcija &amp;lt;code&amp;gt;vidurys()&amp;lt;/code&amp;gt; rodo, kad tekstinėje reikšmėje galima naudotis Python'o programavimo kalboje jau esančia funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt;, taip pat masyvų indeksavimu ir pjaustymu. Dauguma sąrašo (list) funkcijų veikia ir su tekstine reikšme.&lt;br /&gt;
&lt;br /&gt;
Kita šio skyriaus funkcija parodo tam tikras tekstinės reikšmės ypatybes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pavertimas_didžiosiomis_raidėmis(tekstas):&lt;br /&gt;
    ## Ši funkcija, tekstinę reikšmę užrašo didžiosiomis raidėmis&lt;br /&gt;
    didžiosios_raidės = &amp;quot;&amp;quot;&lt;br /&gt;
    for raidei in tekstas:&lt;br /&gt;
        if 'a' &amp;lt;= tekstas &amp;lt;= 'z':&lt;br /&gt;
            lokacija = ord(raidei) - ord('a')&lt;br /&gt;
            naujas_ascii = lokacija + ord('A')&lt;br /&gt;
            raidei= chr(naujas_ascii)&lt;br /&gt;
        didžiosios_raidės = didžiosios_raidės + raidei&lt;br /&gt;
    return didžiosios_raidės&lt;br /&gt;
&lt;br /&gt;
print(pavertimas_didžiosiomis_raidėmis(&amp;quot;Įrašytas tekstas&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 ĮRAŠYTAS TEKSTAS&lt;br /&gt;
&lt;br /&gt;
Tai veikia, nes kompiuteris tekstinės reikšmės simbolius šifruoja skaičiais nuo 0 iki 1 114 111. Visos šios tekstinės reikšmės turi savo unikalias unikodo reikšmes. Pavyzdžiui, simboliui „A“ yra priskirtas skaičius 65, simbolis „B“ kompiuterio suprantamas kaip 66, o simbolis א yra 1488. Python'o programavimo kalba turi funkciją, vadinamą &amp;lt;code&amp;gt;ord()&amp;lt;/code&amp;gt; (trumpinys angliško žodžio ordinal, kuris reiškia iš eilės), kuri grąžina simbolį kaip skaičių. Taip pat Python'o programavimo kalba turi ir atvirkščią funkciją, vadinamą &amp;lt;code&amp;gt;chr()&amp;lt;/code&amp;gt;, kuri skaičių paverčia simboliu. Supratus, kaip veikia šios funkcijos aukščiau užrašyta programa turėtų atrodyti logiška.&lt;br /&gt;
&lt;br /&gt;
Programos pirmoji eilutė &amp;lt;code&amp;gt;if 'a' &amp;lt;= simbolis &amp;lt;= 'z':&amp;lt;/code&amp;gt; patikrina, ar raidė yra mažoji. Jeigu taip, tada naudojamos kitos programos eilutės:&lt;br /&gt;
Pirmiausia eilutė &amp;lt;code&amp;gt;lokacija= ord(simbolis) - ord('a')&amp;lt;/code&amp;gt; nurodo simbolio vietą: a = 0, b = 1, c = 2 ir t.t. &lt;br /&gt;
Tada nauja reikšmė randama su kodo eilute &amp;lt;code&amp;gt;naujas_ascii = lokacija + ord ('A')&amp;lt;/code&amp;gt;. &lt;br /&gt;
Tada ši reikšmė paverčiama atgal į simbolį, kuris dabar yra didžioji raidė. &lt;br /&gt;
&lt;br /&gt;
Žinoma, tai tik programos pavyzdys, daug paprasčiau tai padaryti gali pasinaudodamas šiuo &amp;lt;code&amp;gt;metodu=var.upper()&amp;lt;/code&amp;gt;, kuris veikia su visomis kalbomis.&lt;br /&gt;
&lt;br /&gt;
O dabar pabandykime pasižiūrėti į šį pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''2'''&lt;br /&gt;
 2&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(2)'''&lt;br /&gt;
 '2'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''-123'''&lt;br /&gt;
 -123&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(-123)'''&lt;br /&gt;
 '-123'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot;'''&lt;br /&gt;
 '23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;)'''&lt;br /&gt;
 23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot; * 2'''&lt;br /&gt;
 '2323'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;) * 2'''&lt;br /&gt;
 46&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1.23)'''&lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(1.23)'''&lt;br /&gt;
 1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(-1.23)'''&lt;br /&gt;
 -1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių po kablelio'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;1.23&amp;quot;)'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;1.23&amp;quot;''' &lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;123&amp;quot;)'''&lt;br /&gt;
 123.0&lt;br /&gt;
&lt;br /&gt;
Jeigu dar nesupratai, tai funkcija &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; konvertuoja skaičių į tekstinę reikšmę, o funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į skaičių. Funkcija &amp;lt;code&amp;gt;float()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę arba skaičių į skaičių po kablelio. Grįžtant prie funkcijos &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; - ji grąžina tekstinę įrašytos reikšmės versiją. Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1)'''&lt;br /&gt;
 '1'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(234.14)'''&lt;br /&gt;
 '234.14'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str([4, 42, 10])'''&lt;br /&gt;
 '[4, 42, 10]'&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę (ar skaičių su reikšme po kablelio) į sveikąjį skaičių. Panaši funkcija &amp;lt;Code&amp;gt;float&amp;lt;/code&amp;gt; konvertuoja skaičių ar tekstinę reikšmę į skaičių su reikšme po kablelio. Taip pat Python'o programavimo kalba turi funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt;, kuri grąžina eilutės tipą. Pavyzdžiui:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
v = '123'&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = 645.123&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = [1, 2, 3]&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'list'&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu pamatai funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; tai pasitikrink, ar grąžinamas toks reikšmės tipas, kurio tikėjaisi.&lt;br /&gt;
&lt;br /&gt;
Taip pat naudingas ir dažnai paprastose užduotyse naudojamas metodas &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;Čia yra tik ždožių kratinys&amp;quot;.split()'''&lt;br /&gt;
 ['Čia', 'yra', 'tik', 'žodžių', 'kratinys']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas= &amp;quot;Pirma partija, antra partija, trečia, ketvirta&amp;quot;'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 ['Pirma partija', ' antra partija', ' trečia', ' ketvirta']&lt;br /&gt;
&lt;br /&gt;
Ar pastebėjai kaip &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į tekstinių reikšmių sąrašą (angl. list)? Pagal numatytus nustatymus tekstinė reikšmė padalijama pagal nurodytus tarpus, šiuo atveju pagal nurodytą argumentą - kablelį.&lt;br /&gt;
Taip pat galima pridėti ir kitą argumentą, kuris nurodo &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; funkcijai, kurioje sąrašo vietoje reikia atskirti tekstą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas= tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(sąrašas)'''&lt;br /&gt;
 4&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' ketvirta'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list = tekstas.split(&amp;quot;,&amp;quot;, 2)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(list)'''&lt;br /&gt;
 3&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' trečia, ketvirta'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO add more on strings --&amp;gt;&lt;br /&gt;
=== Tekstinės (ir sąrašo) reikšmės pjaustymas (Slicing strings(and lists) ===&lt;br /&gt;
&lt;br /&gt;
Tekstinę reikšmę galima pjaustyti/skaidyti į skirtingas mažesnes reikšmes. Tą jau matei ankstesniame pavyzdyje, kai laužtiniuose skliaustuose &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; buvo nurodyta reikiama teksto vieta. Pjaustymo operatorius veikia taip: &amp;lt;code&amp;gt;tekstas[pradžios_indeksas:pabaigos_indeksas]&amp;lt;/code&amp;gt; (retais atvejais galime pridėti dar ir trečią argumentą, kaip apačioje esančiame pavyzdyje)&lt;br /&gt;
&lt;br /&gt;
Kad nesusipainiotum įrašydamas indekso skaičius, įsivaizduok, kad žirklėmis karpai tekstą, o programai nurodai, kurioje vietoje kirpti. Štai vienas pavyzdys, kaip tai viekia - geltonai pažymėtos kirpimo vietos, o raudonai ir mėlynai indekso numeris&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{| style=&amp;quot;text-align:center&amp;quot; cellspacing=&amp;quot;0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |0&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tekstas = &lt;br /&gt;
|&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!S &lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!T&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!R&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!I&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!N&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!G&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[:&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|:]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Įsidėmėk, kad raudonai pažymėti indeksai skaičiuojami nuo pradžios, o mėlyni atvirkščiai nuo kito galo t.y. teksto pabaigos. Taip pat ar pastebėjai, kad skaičiuojant nuo galo nėra -0 reikšmės? Taip yra todėl, kad 0 visada priskiriamas tik reikšmės pradžiai:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[1:4] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;TRI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:5] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[-4:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;RING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[2] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;R&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[::-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;GNIRTS&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;tekstas[1:4]&amp;lt;/tt&amp;gt; duoda visas &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; reikšmes tarp 1 ir 4, &amp;quot;&amp;lt;tt&amp;gt;TRI&amp;lt;/tt&amp;gt;&amp;quot;. Jei praleisi vieną iš argumentų [pradžios_indeksas:pabaigos indeksas], automatiškai gausi tekstinę reikšmę nuo pradžios ar pabaigos: &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt; atspausdina&amp;quot;&amp;lt;tt&amp;gt;STRIN&amp;lt;/tt&amp;gt;&amp;quot;. Taip pat, tiek su &amp;lt;tt&amp;gt;pradžios_indeksas&amp;lt;/tt&amp;gt;, tiek su &amp;lt;tt&amp;gt;pabaigos_indeksas&amp;lt;/tt&amp;gt; galime naudoti raudonai ir mėlynai pavaizduotą skaičiavimo schemą - t.y. galime skaičuoti nuo pradžios, arba nuo pabaigos: &amp;lt;tt&amp;gt;tekstas[:-1]&amp;lt;/tt&amp;gt; duoda tą patį rezultatą kaip &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt;, todėl, kad indekas -1 šiame žodyje yra toje pačioje vietoje kaip indeksas 5. Jeigu nenaudojame argumento kartu su dvitaškiu, tai skaičius traktuojamas kitaip, pavyzdžiui: &amp;lt;tt&amp;gt;tekstas[2]&amp;lt;/tt&amp;gt; duoda vieną raidę, kuri yra nurodytoje vietoje, šiuo atveju &amp;quot;&amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt;&amp;quot;. Speciali pjaustymo operacija &amp;lt;tt&amp;gt;tekstas[:]&amp;lt;/tt&amp;gt; reiškia nuo pradžios iki pabaigos ir duodą visos tekstinės reikšmės ar sąrašo (list) kopiją. &lt;br /&gt;
&lt;br /&gt;
Na ir galiausiai, pjaustymo operacija gali turėti ir trečią argumentą, kuris suprantamas, kaip „žingsnio dydis“: &amp;lt;tt&amp;gt;tekstas[::-1]&amp;lt;/tt&amp;gt; yra &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; nuo pradžios iki pabaigos, kai nurodytas žingsnio dydis yra -1. Tai reiškia - kiekviena raidė, tik atvirkštine eilės tvarka. &amp;quot;&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;&amp;quot; atvirkščiai yra &amp;quot;&amp;lt;tt&amp;gt;GNIRTS&amp;lt;/tt&amp;gt;&amp;quot; (jeigu nesupratai, tai pabandyk prasitestuoti įrašydamas kaip žingsnio ilgį skaičių 2).&lt;br /&gt;
&lt;br /&gt;
Visos šios pjaustymo operacijos veikia ir su sąrašais (lists). Šiuo atveju tekstinę reikšmę galime suprasti, kaip sąrašą, kai visi sąrašo elementai yra atskiros raidės. Iš šio skyriaus atsimink pagrindinį principą - į viską žiūrėk taip lyg karpytum, tai padės nesusipainioti įrašant indeksus.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa reikalauja dešimtainių skaičių supratimo.&lt;br /&gt;
def į_tekstą(į_skaičių):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja skaičių į tekstą&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    tekstas = &amp;quot;&amp;quot;&lt;br /&gt;
    prefiksas = &amp;quot;&amp;quot;&lt;br /&gt;
    if į_skaičių &amp;lt; 0:&lt;br /&gt;
        prefiksas = &amp;quot;-&amp;quot;&lt;br /&gt;
        į_skaičių = -į_skaičių&lt;br /&gt;
    while į_skaičių // 10 != 0:&lt;br /&gt;
        out_str = str(į_skaičių % 10) + tekstas&lt;br /&gt;
        į_skaičių= į_skaičių// 10&lt;br /&gt;
    tekstas = str(į_skaičių % 10) + tekstas&lt;br /&gt;
    return prefiksas + tekstas&lt;br /&gt;
&lt;br /&gt;
def į_skaičių(į_tekstą):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja tekstą į skaičių&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    skaičius = 0&lt;br /&gt;
    if į_tekstą[0] == &amp;quot;-&amp;quot;:&lt;br /&gt;
        daugiklis = -1&lt;br /&gt;
        į_tekstą = į_tekstą[1:]&lt;br /&gt;
    else:&lt;br /&gt;
        daugiklis = 1&lt;br /&gt;
    for c in į_tekstą:&lt;br /&gt;
        skaičius = skaičius* 10 + int(c)&lt;br /&gt;
    return skaičius * daugiklis&lt;br /&gt;
&lt;br /&gt;
print(į_tekstą(2))&lt;br /&gt;
print(į_tekstą(23445))&lt;br /&gt;
print(į_tekstą(-23445))&lt;br /&gt;
print(į_skaičių(&amp;quot;14234&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;12345&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;-3512&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 2&lt;br /&gt;
 23445&lt;br /&gt;
 -23445&lt;br /&gt;
 14234&lt;br /&gt;
 12345&lt;br /&gt;
 -3512&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Daugiau apie sąrašus |next=Failų IO}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3738</id>
		<title>Python Vadovėlis/Daugiau apie tekstines eilutes</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3738"/>
		<updated>2021-12-27T16:20:33Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Šiame skyriuje pamatysi, kiek šaunių dalykų galime padaryti su tekstine reikšme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def rėk(tekstinė_reikšmė):&lt;br /&gt;
    for raidė in tekstinė_reikšmė:&lt;br /&gt;
        print(&amp;quot;Duok man &amp;quot; + raidė)&lt;br /&gt;
        print(&amp;quot;'&amp;quot; + raidė + &amp;quot;'&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
rėk(&amp;quot;Ačiū&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def vidurys(tekstas):&lt;br /&gt;
    print(&amp;quot;Raidė esanti viduryje yra:&amp;quot;, tekstas[len(tekstas) // 2])&lt;br /&gt;
&lt;br /&gt;
vidurys(&amp;quot;abcdefg&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;The Python Programming Language&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;Atlanta&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Duok man A&lt;br /&gt;
 'A'&lt;br /&gt;
 Duok man č&lt;br /&gt;
 'č'&lt;br /&gt;
 Duok man i&lt;br /&gt;
 'i'&lt;br /&gt;
 Duok man ū&lt;br /&gt;
 'ū'&lt;br /&gt;
 Raidė esanti viduryje yra: d&lt;br /&gt;
 Raidė esanti viduryje yra: r&lt;br /&gt;
 Raidė esanti viduryje yra: a&lt;br /&gt;
&lt;br /&gt;
Šios dvi programos rodo, kad tekstinė reikšmė(strings) yra keliais aspektais panaši į sąrašus (list). Funkcija &amp;lt;code&amp;gt;rėk()&amp;lt;/code&amp;gt; rodo, kad ciklas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; gali būti naudojamas su tekstine reikšme lygiai taip pat kaip ir su sąrašais. Funkcija &amp;lt;code&amp;gt;vidurys()&amp;lt;/code&amp;gt; rodo, kad tekstinėje reikšmėje galima naudotis Python'o programavimo kalboje jau esančia funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt;, taip pat masyvų indeksavimu ir pjaustymu. Dauguma sąrašo (list) funkcijų veikia ir su tekstine reikšme.&lt;br /&gt;
&lt;br /&gt;
Kita šio skyriaus funkcija parodo tam tikras tekstinės reikšmės ypatybes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pavertimas_didžiosiomis_raidėmis(tekstas):&lt;br /&gt;
    ## Ši funkcija, tekstinę reikšmę užrašo didžiosiomis raidėmis&lt;br /&gt;
    didžiosios_raidės = &amp;quot;&amp;quot;&lt;br /&gt;
    for raidei in tekstas:&lt;br /&gt;
        if 'a' &amp;lt;= tekstas &amp;lt;= 'z':&lt;br /&gt;
            lokacija = ord(raidei) - ord('a')&lt;br /&gt;
            naujas_ascii = lokacija + ord('A')&lt;br /&gt;
            raidei= chr(naujas_ascii)&lt;br /&gt;
        didžiosios_raidės = pavertimas_didžiosiomis_raidėmis + raidei&lt;br /&gt;
    return didžiosios_raidės&lt;br /&gt;
&lt;br /&gt;
print(pavertimas_didžiosiomis_raidėmis(&amp;quot;Įrašytas tekstas&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 ĮRAŠYTAS TEKSTAS&lt;br /&gt;
&lt;br /&gt;
Tai veikia, nes kompiuteris tekstinės reikšmės simbolius šifruoja skaičiais nuo 0 iki 1 114 111. Visos šios tekstinės reikšmės turi savo unikalias unikodo reikšmes. Pavyzdžiui, simboliui „A“ yra priskirtas skaičius 65, simbolis „B“ kompiuterio suprantamas kaip 66, o simbolis א yra 1488. Python'o programavimo kalba turi funkciją, vadinamą &amp;lt;code&amp;gt;ord()&amp;lt;/code&amp;gt; (trumpinys angliško žodžio ordinal, kuris reiškia iš eilės), kuri grąžina simbolį kaip skaičių. Taip pat Python'o programavimo kalba turi ir atvirkščią funkciją, vadinamą &amp;lt;code&amp;gt;chr()&amp;lt;/code&amp;gt;, kuri skaičių paverčia simboliu. Supratus, kaip veikia šios funkcijos aukščiau užrašyta programa turėtų atrodyti logiška.&lt;br /&gt;
&lt;br /&gt;
Programos pirmoji eilutė &amp;lt;code&amp;gt;if 'a' &amp;lt;= simbolis &amp;lt;= 'z':&amp;lt;/code&amp;gt; patikrina, ar raidė yra mažoji. Jeigu taip, tada naudojamos kitos programos eilutės:&lt;br /&gt;
Pirmiausia eilutė &amp;lt;code&amp;gt;lokacija= ord(simbolis) - ord('a')&amp;lt;/code&amp;gt; nurodo simbolio vietą: a = 0, b = 1, c = 2 ir t.t. &lt;br /&gt;
Tada nauja reikšmė randama su kodo eilute &amp;lt;code&amp;gt;naujas_ascii = lokacija + ord ('A')&amp;lt;/code&amp;gt;. &lt;br /&gt;
Tada ši reikšmė paverčiama atgal į simbolį, kuris dabar yra didžioji raidė. &lt;br /&gt;
&lt;br /&gt;
Žinoma, tai tik programos pavyzdys, daug paprasčiau tai padaryti gali pasinaudodamas šiuo &amp;lt;code&amp;gt;metodu=var.upper()&amp;lt;/code&amp;gt;, kuris veikia su visomis kalbomis.&lt;br /&gt;
&lt;br /&gt;
O dabar pabandykime pasižiūrėti į šį pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''2'''&lt;br /&gt;
 2&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(2)'''&lt;br /&gt;
 '2'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''-123'''&lt;br /&gt;
 -123&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(-123)'''&lt;br /&gt;
 '-123'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot;'''&lt;br /&gt;
 '23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;)'''&lt;br /&gt;
 23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot; * 2'''&lt;br /&gt;
 '2323'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;) * 2'''&lt;br /&gt;
 46&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1.23)'''&lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(1.23)'''&lt;br /&gt;
 1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(-1.23)'''&lt;br /&gt;
 -1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių po kablelio'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;1.23&amp;quot;)'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;1.23&amp;quot;''' &lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;123&amp;quot;)'''&lt;br /&gt;
 123.0&lt;br /&gt;
&lt;br /&gt;
Jeigu dar nesupratai, tai funkcija &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; konvertuoja skaičių į tekstinę reikšmę, o funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į skaičių. Funkcija &amp;lt;code&amp;gt;float()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę arba skaičių į skaičių po kablelio. Grįžtant prie funkcijos &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; - ji grąžina tekstinę įrašytos reikšmės versiją. Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1)'''&lt;br /&gt;
 '1'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(234.14)'''&lt;br /&gt;
 '234.14'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str([4, 42, 10])'''&lt;br /&gt;
 '[4, 42, 10]'&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę (ar skaičių su reikšme po kablelio) į sveikąjį skaičių. Panaši funkcija &amp;lt;Code&amp;gt;float&amp;lt;/code&amp;gt; konvertuoja skaičių ar tekstinę reikšmę į skaičių su reikšme po kablelio. Taip pat Python'o programavimo kalba turi funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt;, kuri grąžina eilutės tipą. Pavyzdžiui:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
v = '123'&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = 645.123&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = [1, 2, 3]&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'list'&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu pamatai funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; tai pasitikrink, ar grąžinamas toks reikšmės tipas, kurio tikėjaisi.&lt;br /&gt;
&lt;br /&gt;
Taip pat naudingas ir dažnai paprastose užduotyse naudojamas metodas &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;Čia yra tik ždožių kratinys&amp;quot;.split()'''&lt;br /&gt;
 ['Čia', 'yra', 'tik', 'žodžių', 'kratinys']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas= &amp;quot;Pirma partija, antra partija, trečia, ketvirta&amp;quot;'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 ['Pirma partija', ' antra partija', ' trečia', ' ketvirta']&lt;br /&gt;
&lt;br /&gt;
Ar pastebėjai kaip &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į tekstinių reikšmių sąrašą (angl. list)? Pagal numatytus nustatymus tekstinė reikšmė padalijama pagal nurodytus tarpus, šiuo atveju pagal nurodytą argumentą - kablelį.&lt;br /&gt;
Taip pat galima pridėti ir kitą argumentą, kuris nurodo &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; funkcijai, kurioje sąrašo vietoje reikia atskirti tekstą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas= tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(sąrašas)'''&lt;br /&gt;
 4&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' ketvirta'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list = tekstas.split(&amp;quot;,&amp;quot;, 2)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(list)'''&lt;br /&gt;
 3&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' trečia, ketvirta'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO add more on strings --&amp;gt;&lt;br /&gt;
=== Tekstinės (ir sąrašo) reikšmės pjaustymas (Slicing strings(and lists) ===&lt;br /&gt;
&lt;br /&gt;
Tekstinę reikšmę galima pjaustyti/skaidyti į skirtingas mažesnes reikšmes. Tą jau matei ankstesniame pavyzdyje, kai laužtiniuose skliaustuose &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; buvo nurodyta reikiama teksto vieta. Pjaustymo operatorius veikia taip: &amp;lt;code&amp;gt;tekstas[pradžios_indeksas:pabaigos_indeksas]&amp;lt;/code&amp;gt; (retais atvejais galime pridėti dar ir trečią argumentą, kaip apačioje esančiame pavyzdyje)&lt;br /&gt;
&lt;br /&gt;
Kad nesusipainiotum įrašydamas indekso skaičius, įsivaizduok, kad žirklėmis karpai tekstą, o programai nurodai, kurioje vietoje kirpti. Štai vienas pavyzdys, kaip tai viekia - geltonai pažymėtos kirpimo vietos, o raudonai ir mėlynai indekso numeris&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{| style=&amp;quot;text-align:center&amp;quot; cellspacing=&amp;quot;0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |0&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tekstas = &lt;br /&gt;
|&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!S &lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!T&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!R&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!I&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!N&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!G&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[:&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|:]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Įsidėmėk, kad raudonai pažymėti indeksai skaičiuojami nuo pradžios, o mėlyni atvirkščiai nuo kito galo t.y. teksto pabaigos. Taip pat ar pastebėjai, kad skaičiuojant nuo galo nėra -0 reikšmės? Taip yra todėl, kad 0 visada priskiriamas tik reikšmės pradžiai:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[1:4] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;TRI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:5] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[-4:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;RING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[2] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;R&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[::-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;GNIRTS&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;tekstas[1:4]&amp;lt;/tt&amp;gt; duoda visas &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; reikšmes tarp 1 ir 4, &amp;quot;&amp;lt;tt&amp;gt;TRI&amp;lt;/tt&amp;gt;&amp;quot;. Jei praleisi vieną iš argumentų [pradžios_indeksas:pabaigos indeksas], automatiškai gausi tekstinę reikšmę nuo pradžios ar pabaigos: &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt; atspausdina&amp;quot;&amp;lt;tt&amp;gt;STRIN&amp;lt;/tt&amp;gt;&amp;quot;. Taip pat, tiek su &amp;lt;tt&amp;gt;pradžios_indeksas&amp;lt;/tt&amp;gt;, tiek su &amp;lt;tt&amp;gt;pabaigos_indeksas&amp;lt;/tt&amp;gt; galime naudoti raudonai ir mėlynai pavaizduotą skaičiavimo schemą - t.y. galime skaičuoti nuo pradžios, arba nuo pabaigos: &amp;lt;tt&amp;gt;tekstas[:-1]&amp;lt;/tt&amp;gt; duoda tą patį rezultatą kaip &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt;, todėl, kad indekas -1 šiame žodyje yra toje pačioje vietoje kaip indeksas 5. Jeigu nenaudojame argumento kartu su dvitaškiu, tai skaičius traktuojamas kitaip, pavyzdžiui: &amp;lt;tt&amp;gt;tekstas[2]&amp;lt;/tt&amp;gt; duoda vieną raidę, kuri yra nurodytoje vietoje, šiuo atveju &amp;quot;&amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt;&amp;quot;. Speciali pjaustymo operacija &amp;lt;tt&amp;gt;tekstas[:]&amp;lt;/tt&amp;gt; reiškia nuo pradžios iki pabaigos ir duodą visos tekstinės reikšmės ar sąrašo (list) kopiją. &lt;br /&gt;
&lt;br /&gt;
Na ir galiausiai, pjaustymo operacija gali turėti ir trečią argumentą, kuris suprantamas, kaip „žingsnio dydis“: &amp;lt;tt&amp;gt;tekstas[::-1]&amp;lt;/tt&amp;gt; yra &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; nuo pradžios iki pabaigos, kai nurodytas žingsnio dydis yra -1. Tai reiškia - kiekviena raidė, tik atvirkštine eilės tvarka. &amp;quot;&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;&amp;quot; atvirkščiai yra &amp;quot;&amp;lt;tt&amp;gt;GNIRTS&amp;lt;/tt&amp;gt;&amp;quot; (jeigu nesupratai, tai pabandyk prasitestuoti įrašydamas kaip žingsnio ilgį skaičių 2).&lt;br /&gt;
&lt;br /&gt;
Visos šios pjaustymo operacijos veikia ir su sąrašais (lists). Šiuo atveju tekstinę reikšmę galime suprasti, kaip sąrašą, kai visi sąrašo elementai yra atskiros raidės. Iš šio skyriaus atsimink pagrindinį principą - į viską žiūrėk taip lyg karpytum, tai padės nesusipainioti įrašant indeksus.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa reikalauja dešimtainių skaičių supratimo.&lt;br /&gt;
def į_tekstą(į_skaičių):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja skaičių į tekstą&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    tekstas = &amp;quot;&amp;quot;&lt;br /&gt;
    prefiksas = &amp;quot;&amp;quot;&lt;br /&gt;
    if į_skaičių &amp;lt; 0:&lt;br /&gt;
        prefiksas = &amp;quot;-&amp;quot;&lt;br /&gt;
        į_skaičių = -į_skaičių&lt;br /&gt;
    while į_skaičių // 10 != 0:&lt;br /&gt;
        out_str = str(į_skaičių % 10) + tekstas&lt;br /&gt;
        į_skaičių= į_skaičių// 10&lt;br /&gt;
    tekstas = str(į_skaičių % 10) + tekstas&lt;br /&gt;
    return prefiksas + tekstas&lt;br /&gt;
&lt;br /&gt;
def į_skaičių(į_tekstą):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja tekstą į skaičių&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    skaičius = 0&lt;br /&gt;
    if į_tekstą[0] == &amp;quot;-&amp;quot;:&lt;br /&gt;
        daugiklis = -1&lt;br /&gt;
        į_tekstą = į_tekstą[1:]&lt;br /&gt;
    else:&lt;br /&gt;
        daugiklis = 1&lt;br /&gt;
    for c in į_tekstą:&lt;br /&gt;
        skaičius = skaičius* 10 + int(c)&lt;br /&gt;
    return skaičius * daugiklis&lt;br /&gt;
&lt;br /&gt;
print(į_tekstą(2))&lt;br /&gt;
print(į_tekstą(23445))&lt;br /&gt;
print(į_tekstą(-23445))&lt;br /&gt;
print(į_skaičių(&amp;quot;14234&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;12345&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;-3512&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 2&lt;br /&gt;
 23445&lt;br /&gt;
 -23445&lt;br /&gt;
 14234&lt;br /&gt;
 12345&lt;br /&gt;
 -3512&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Daugiau apie sąrašus |next=Failų IO}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Siekiant_tobulumo&amp;diff=3709</id>
		<title>Python Vadovėlis/Siekiant tobulumo</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Siekiant_tobulumo&amp;diff=3709"/>
		<updated>2021-12-15T13:41:46Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ...arba, kaip kovoti su klaidomis ===&lt;br /&gt;
=== Klaidų „gaudymas“ su &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Tarkime, kad jau turi tobulą programą, ji vykdoma nepriekaištingai. Tik viena maža detalė: programa užstringa naudotojui įvedus klaidingą įvestį. Nesijaudink, Pithon'as turi specialią valdymo struktūrą, kuri tau padės. Ji vadinama &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; ir ji bando kažką padaryti. Programos su problema pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Norėdamas uždaryti programą, įvesk -1&amp;quot;)&lt;br /&gt;
skaicius = 1&lt;br /&gt;
while skaicius != -1:&lt;br /&gt;
   skaicius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
   print(&amp;quot;Tu įvedei:&amp;quot;, skaicius)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įvesi &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt;, programa išves kažką tokio:&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;bandyk.py&amp;quot;, line 4, in &amp;lt;module&amp;gt;&lt;br /&gt;
   skaicius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
 ValueError: invalid literal for int() with base 10: '\\@#&amp;amp;'&lt;br /&gt;
&lt;br /&gt;
Kaip gali pastebėti, &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; funkcijai netinka įvestas skaičius &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt; (kaip ir turėtų būti). Paskutinė eilutė parodo, kokia yra problema: Python'as rado &amp;lt;code&amp;gt;ValueError&amp;lt;/code&amp;gt; klaidą. Kaip mūsų programa gali su tuo susitvarkyti? Visų pirma, tą kodo vietą, kurioje gali būti klaidų, turime įrašyti į &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; bloką. Antra, turime pasakyti Python'ui, kaip tvarkytis su &amp;lt;code&amp;gt;ValueError&amp;lt;/code&amp;gt; klaidomis. Tai daro žemiau esanti programa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Norėdamas uždaryti programą, įvesk -1&amp;quot;)&lt;br /&gt;
skaicius = 1&lt;br /&gt;
while skaicius != -1:&lt;br /&gt;
    try:&lt;br /&gt;
        skaicius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
        print(&amp;quot;Tu įvedei:&amp;quot;, skaicius)&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Tai buvo ne skaičius.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabar, kai vykdome programą ir įvedame &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt;, programa mums pasako, kad &amp;lt;code&amp;gt;Tai buvo ne skaičius.&amp;lt;/code&amp;gt; ir toliau vykdo tai, ką turėtų.&lt;br /&gt;
&lt;br /&gt;
Kai tavo programa vis susiduria su ta pačia klaida, kodą apsupk &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; bloku ir aprašyk būdą, kaip elgtis sutikus klaidą, &amp;lt;code&amp;gt;except&amp;lt;/code&amp;gt; bloke.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Pataisyk telefono numerių programą ([[Vadovėlis/Žodynai|Žodynai]] skyriuje), kad ji neužstrigtų, jei naudotojas neįrašo jokios įvesties į meniu.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print('1. Spausdink telefonų numerius')&lt;br /&gt;
    print('2. Pridėk telefono numerį')&lt;br /&gt;
    print('3. Pašalink telefono numerį')&lt;br /&gt;
    print('4. Ieškok telefono numerio')&lt;br /&gt;
    print('5. Išeik')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
numeriai = {}&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
spausdink_meniu ()&lt;br /&gt;
while meniu_pasirinkimas != 5:&lt;br /&gt;
    try:&lt;br /&gt;
        meniu_pasirinkimas = int(input(&amp;quot;Įvesk skaičių (1-5): &amp;quot;))&lt;br /&gt;
        if meniu_pasirinkimas == 1:&lt;br /&gt;
            print(&amp;quot;Telefono numeriai: &amp;quot;)&lt;br /&gt;
            for x in numeriai.keys():&lt;br /&gt;
                print(&amp;quot;Vardas: &amp;quot;, x, &amp;quot;\tTelefono numeris:&amp;quot;, numeriai[x])&lt;br /&gt;
            print()&lt;br /&gt;
        elif meniu_pasirinkimas == 2:&lt;br /&gt;
            print(&amp;quot;Pridėk vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
            vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
            numeris = input(&amp;quot;Telefono numeris: &amp;quot;)&lt;br /&gt;
            numeriai[vardas] = numeris &lt;br /&gt;
        elif meniu_pasirinkimas == 3:&lt;br /&gt;
            print(&amp;quot;Pašalink vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
            vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
            if vardas in numeriai:&lt;br /&gt;
                del numeriai[vardas]&lt;br /&gt;
            else:&lt;br /&gt;
                print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
        elif meniu_pasirinkimas == 4:&lt;br /&gt;
            print(&amp;quot;Ieškok telefono numerio&amp;quot;)&lt;br /&gt;
            vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
            if vardas in numeriai:&lt;br /&gt;
                print(&amp;quot;Telefono numeris yra &amp;quot;, numeriai[vardas])&lt;br /&gt;
            else:&lt;br /&gt;
                print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
        elif meniu_pasirinkimas  != 5:&lt;br /&gt;
            print_menu()&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Tai buvo ne skaičius.&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{navigation |previous=Failų IO |next=Rekursija}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Siekiant_tobulumo&amp;diff=3708</id>
		<title>Python Vadovėlis/Siekiant tobulumo</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Siekiant_tobulumo&amp;diff=3708"/>
		<updated>2021-12-15T13:39:57Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ...arba, kaip kovoti su klaidomis ===&lt;br /&gt;
=== Klaidų „gaudymas“ su &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Tarkime, kad jau turi tobulą programą, ji vykdoma nepriekaištingai. Tik viena maža detalė: programa užstringa naudotojui įvedus klaidingą įvestį. Nesijaudink, Pithon'as turi specialią valdymo struktūrą, kuri tau padės. Ji vadinama &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; ir ji bando kažką padaryti. Programos su problema pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Norėdamas uždaryti programą, įvesk -1&amp;quot;)&lt;br /&gt;
skaicius = 1&lt;br /&gt;
while skaicius != -1:&lt;br /&gt;
   skaicius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
   print(&amp;quot;Tu įvedei:&amp;quot;, skaicius)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įvesi &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt;, programa išves kažką tokio:&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;bandyk.py&amp;quot;, line 4, in &amp;lt;module&amp;gt;&lt;br /&gt;
   skaicius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
 ValueError: invalid literal for int() with base 10: '\\@#&amp;amp;'&lt;br /&gt;
&lt;br /&gt;
Kaip gali pastebėti, &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; funkcijai netinka įvestas skaičius &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt; (kaip ir turėtų būti). Paskutinė eilutė parodo, kokia yra problema: Python'as rado &amp;lt;code&amp;gt;ValueError&amp;lt;/code&amp;gt; klaidą. Kaip mūsų programa gali su tuo susitvarkyti? Visų pirma, tą kodo vietą, kurioje gali būti klaidų, turime apsupti &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; bloku. Antra, turime pasakyti Python'ui, kaip tvarkytis su &amp;lt;code&amp;gt;ValueError&amp;lt;/code&amp;gt; klaidomis. Tai daro žemiau esanti programa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Norėdamas uždaryti programą, įvesk -1&amp;quot;)&lt;br /&gt;
skaicius = 1&lt;br /&gt;
while skaicius != -1:&lt;br /&gt;
    try:&lt;br /&gt;
        skaicius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
        print(&amp;quot;Tu įvedei:&amp;quot;, skaicius)&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Tai buvo ne skaičius.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabar, kai vykdome programą ir įvedame &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt;, programa mums pasako, kad &amp;lt;code&amp;gt;Tai buvo ne skaičius.&amp;lt;/code&amp;gt; ir toliau vykdo tai, ką turėtų.&lt;br /&gt;
&lt;br /&gt;
Kai tavo programa vis susiduria su ta pačia klaida, kodą apsupk &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; bloku ir aprašyk būdą, kaip elgtis sutikus klaidą, &amp;lt;code&amp;gt;except&amp;lt;/code&amp;gt; bloke.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Pataisyk telefono numerių programą ([[Vadovėlis/Žodynai|Žodynai]] skyriuje), kad ji neužstrigtų, jei naudotojas neįrašo jokios įvesties į meniu.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print('1. Spausdink telefonų numerius')&lt;br /&gt;
    print('2. Pridėk telefono numerį')&lt;br /&gt;
    print('3. Pašalink telefono numerį')&lt;br /&gt;
    print('4. Ieškok telefono numerio')&lt;br /&gt;
    print('5. Išeik')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
numeriai = {}&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
spausdink_meniu ()&lt;br /&gt;
while meniu_pasirinkimas != 5:&lt;br /&gt;
    try:&lt;br /&gt;
        meniu_pasirinkimas = int(input(&amp;quot;Įvesk skaičių (1-5): &amp;quot;))&lt;br /&gt;
        if meniu_pasirinkimas == 1:&lt;br /&gt;
            print(&amp;quot;Telefono numeriai: &amp;quot;)&lt;br /&gt;
            for x in numeriai.keys():&lt;br /&gt;
                print(&amp;quot;Vardas: &amp;quot;, x, &amp;quot;\tTelefono numeris:&amp;quot;, numeriai[x])&lt;br /&gt;
            print()&lt;br /&gt;
        elif meniu_pasirinkimas == 2:&lt;br /&gt;
            print(&amp;quot;Pridėk vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
            vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
            numeris = input(&amp;quot;Telefono numeris: &amp;quot;)&lt;br /&gt;
            numeriai[vardas] = numeris &lt;br /&gt;
        elif meniu_pasirinkimas == 3:&lt;br /&gt;
            print(&amp;quot;Pašalink vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
            vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
            if vardas in numeriai:&lt;br /&gt;
                del numeriai[vardas]&lt;br /&gt;
            else:&lt;br /&gt;
                print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
        elif meniu_pasirinkimas == 4:&lt;br /&gt;
            print(&amp;quot;Ieškok telefono numerio&amp;quot;)&lt;br /&gt;
            vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
            if vardas in numeriai:&lt;br /&gt;
                print(&amp;quot;Telefono numeris yra &amp;quot;, numeriai[vardas])&lt;br /&gt;
            else:&lt;br /&gt;
                print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
        elif meniu_pasirinkimas  != 5:&lt;br /&gt;
            print_menu()&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Tai buvo ne skaičius.&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{navigation |previous=Failų IO |next=Rekursija}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3704</id>
		<title>Python Vadovėlis/Rekursija</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3704"/>
		<updated>2021-12-15T13:32:49Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Rekursija ==&lt;br /&gt;
&lt;br /&gt;
Python'o programoje rekursinė funkcija yra funkcija, kuri iškviečia pati save.&lt;br /&gt;
&lt;br /&gt;
=== Įvadas į rekursiją ===&lt;br /&gt;
&lt;br /&gt;
Iki šiol Python'o programoje matėme funkcijas, kurios iškviečia kitas funkcijas. Tačiau funkcija gali iškviesti ir pati save. Pažvelkime į paprastą pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
&lt;br /&gt;
sk = 0&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
def skaitliukas(sk):&lt;br /&gt;
    print(sk)&lt;br /&gt;
    sk+= 1&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei šią programą paleistum IDLE kodo redaktoriuje, ji veiktų amžinai. Vienintelis būdas sustabdyti ciklą būtų nutraukti vykdymą paspaudžiant Ctrl + C klaviatūroje. Tai yra begalinės rekursijos pavyzdys (Kai kurie naudotojai pranešė apie esamos IDLE kodo redaktoriaus sistemos gedimą, dėl kurio Ctrl + C iškelta išimtis taip pat pradeda veikti. Jei taip nutinka, paspausk Ctrl + F6 ir IDLE kodo redaktoriaus terminalas turėtų pasileisti iš naujo.).&lt;br /&gt;
&lt;br /&gt;
Galima ginčytis, kad rekursija yra tik dar vienas būdas atlikti tą patį dalyką kaip ir naudojant ciklą. Kai kuriais atvejais tai yra visiškai teisinga. Tačiau yra ir kitų rekursijos naudojimo būdų, kurie yra labai tinkami, o  &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklai gali būti ne pats geriausias variantas.&lt;br /&gt;
&lt;br /&gt;
Rekursiją gali būti valdoma, kaip ir ciklai. Pažvelk į valdomo ciklo pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
def main():&lt;br /&gt;
    ciklosk= int(input(&amp;quot;Kiek kartų norėtum paleisti ciklą?\n&amp;quot;))&lt;br /&gt;
    skaitliukas = 1&lt;br /&gt;
    recurr(ciklosk,skaitliukas)&lt;br /&gt;
&lt;br /&gt;
def recurr(ciklosk,skaitliukas):&lt;br /&gt;
    if ciklosk&amp;gt; 0:&lt;br /&gt;
        print(&amp;quot;Tai yra ciklo iteracija&amp;quot;,skaitliukas)&lt;br /&gt;
        recurr(ciklosk- 1,skaitliukas + 1)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Ciklas yra pabaigtas.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aukščiau naudojami argumentai/parametrai rekursijų skaičiui valdyti. Tiesiog naudok tai, ką jau žinai apie funkcijas, ir sek programos eigą. Tai paprasta išsiaiškinti. Jei kyla problemų, grįžk į [[Vadovėlis/Pažangių funkcijų pavyzdys|Pažangių funkcijų pavyzdys]].&lt;br /&gt;
&lt;br /&gt;
== Praktiniai rekursijos pritaikymai ==&lt;br /&gt;
&lt;br /&gt;
Dažnai rekursija yra studijuojama pažengusiu informatikos lygiu. Rekursija dažniausiai naudojama sprendžiant sudėtingas problemas, kurias galima suskirstyti į mažesnes, identiškas problemas. Norint išspręsti problemą, rekursija nebūtina. Problemos, kurias galima išspręsti naudojant rekursiją, greičiausiai gali būti išspręstos ir su ciklais. Be to, ciklas gali būti efektyvesnis nei rekursinė funkcija. Rekursinėms funkcijoms reikia daugiau atminties ir išteklių nei ciklams, todėl daugeliu atvejų jos yra mažiau efektyvios. Šis naudojimo reikalavimas kartais vadinamas &amp;lt;i&amp;gt;overhead&amp;lt;/i&amp;gt;.&lt;br /&gt;
Galbūt galvoji: „Na, kam nerimauti su rekursija. Aš tiesiog naudosiu ciklą. Aš jau žinau, kaip sudaryti ciklą, ir tai yra daug daugiau darbo.“ Ši mintis suprantama, bet ne visai ideali. Sprendžiant sudėtingas problemas, rekursinę funkciją kartais lengviau, greičiau ir paprasčiau sukurti bei programuoti.&lt;br /&gt;
&lt;br /&gt;
Pagalvokite apie šias dvi „taisykles“:&lt;br /&gt;
* Jei galiu išspręsti problemą dabar, be rekursijos, funkcija tiesiog grąžina reikšmę.&lt;br /&gt;
* Jei negaliu išspręsti problemos dabar be rekursijos, funkcija sumažina problemą iki mažesnio ir panašaus ir pakviečia pati save, kad išspręstų problemą.&lt;br /&gt;
&lt;br /&gt;
Taikyk tai naudojant bendrą matematinę sąvoką – faktorialus. Jei nesi susipažinęs su matematikos faktoriais, skaityk: [https://lt.wikipedia.org/wiki/Faktorialas Faktorialas]&lt;br /&gt;
 &lt;br /&gt;
Skaičiaus faktorialas &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;, yra žymimas kaip &amp;lt;i&amp;gt;n!&amp;lt;/i&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Štai keletas pagrindinių faktorialų taisyklių:&lt;br /&gt;
&lt;br /&gt;
Jei n = 0 tai n! = 1&lt;br /&gt;
&lt;br /&gt;
Jei n &amp;gt; 0 tai n! = 1 x 2 x 3 x ... x n&lt;br /&gt;
&lt;br /&gt;
Pavyzdžiui, pažiūrėk į skaičiaus 9 faktorialą.&lt;br /&gt;
&lt;br /&gt;
9! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į programą, kuri rekursijos metodu apskaičiuoja bet kurio vartotojo įvesto skaičiaus faktorialą.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    sk = int(input(&amp;quot;Įvesk neneigiamą sveikąjį skaičių.\n&amp;quot;))&lt;br /&gt;
    fact = factorialas(sk)&lt;br /&gt;
    print(&amp;quot;Skaičiaus &amp;quot;,sk,&amp;quot; faktorialas yra &amp;quot;,fact)&lt;br /&gt;
&lt;br /&gt;
def factorialas(sk):&lt;br /&gt;
    if sk== 0:&lt;br /&gt;
        return  1&lt;br /&gt;
    else:&lt;br /&gt;
        return sk* factorialas(sk- 1)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rekursija taip pat naudinga išplėstinėje temoje, vadinamoje generatoriais. Norint sugeneruoti serijas 1,2,1,3,1,2,1,4,1,2... reikės šio kodo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def beprotiškas(min_):&lt;br /&gt;
    yield min_&lt;br /&gt;
    g=beprotiškas(min_+1)&lt;br /&gt;
    while True:&lt;br /&gt;
        yield next(g)&lt;br /&gt;
        yield min_&lt;br /&gt;
&lt;br /&gt;
i=beprotiškas(1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
norint gauti kitą elementą, iškiviestum next(i)&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Susidorojimas su netobulumu |next=Įvadas į objektinį programavimą Python 3}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Suskai%C4%8Diuoti_iki_10&amp;diff=3693</id>
		<title>Python Vadovėlis/Suskaičiuoti iki 10</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Suskai%C4%8Diuoti_iki_10&amp;diff=3693"/>
		<updated>2021-12-14T16:25:23Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ciklai kol (While loops) ===&lt;br /&gt;
Šiame skyriuje susipažinsi su ciklu &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; lietuviškas atitikmuo būtų ciklas kol. Kaip jau sužinojai praeitame skyriuje, tai kompiuteris įprastai programą pradeda skaityti ir vykdyti nuo pirmos eilutės ir taip eilutė po eilutės keliauja žemyn per visas duoto kodo eilutes. Tačiau ciklas &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; šią tvarką pakeičia ir dėl to kompiuteris priėjęs šią kodo vietą eilutes skaito iki galo, pagal šio ciklo nustatytą tvarką. Štai čia yra programos su ciklo &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; pavyzdžiu:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 0            # PIRMA, nustatome pradinio kintamojo a reikšmę 0 (nuliui).&lt;br /&gt;
while a &amp;lt; 10:    # Kol kintamojo a vertė yra mažesnė nei 10, programa atlieka šiuos veiksmus:&lt;br /&gt;
    a = a + 1    # Padidina kintamojo a reikšmę 1 (vienu), visai taip kaip nurodyta: a = a + 1! &lt;br /&gt;
    print(a)     # Tuomet nurodome, kad spausdintų. Viskas tam, kad pamatytumėte, kokia yra dabartinė kintamojo a vertė.&lt;br /&gt;
                 # Ir visą šitą ciklą programa vykdo tol, kol kintamojo a reikšmė bus lygi 9!? Žr. Pastabą.&lt;br /&gt;
                 &lt;br /&gt;
                 # PASTABA:&lt;br /&gt;
                 # Kintamojo a vertė padidės 1&lt;br /&gt;
                 # su kiekvienu pakartojimu ar ciklu, kol pasieks nustatytą sąlygą ir sustos.&lt;br /&gt;
                 # pvz. a = 1, tada a = 2, tada a = 3 ir t.t., kol a bus lygus 9 (a = 9), tada...&lt;br /&gt;
                 # kodas baigs pridėjinėti po 1 prie a, nes taps lygus 10 (a = 10) kaip ir numatyta mūsų parašytoje sąlygoje. &lt;br /&gt;
                 # O kai mūsų nurodyta sąlyga yra patenkinama, programa atspausdina rezultatą.&lt;br /&gt;
                 #              --&lt;br /&gt;
                 # While a &amp;lt; 10: |&lt;br /&gt;
                 #     a = a + 1 |&amp;lt;--[ Ciklo Kol sąlygos blokas ]&lt;br /&gt;
                 #     print (a) |&lt;br /&gt;
                 #              --&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na, o jeigu paleidžiame programą, tai turime štai tokį įdomų rezultatą: &lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 3&lt;br /&gt;
 4&lt;br /&gt;
 5&lt;br /&gt;
 6&lt;br /&gt;
 7&lt;br /&gt;
 8&lt;br /&gt;
 9&lt;br /&gt;
 10&lt;br /&gt;
&lt;br /&gt;
(Tikriausiai iki šios pamokos net nesusimąstei, kad kompiuterį gali paversti pigiu skaičiuotuvu...)&lt;br /&gt;
&lt;br /&gt;
Na, o dabar pasiaiškinkime kaip veikia ši programa. Pirmiausia kompiuteris mato eilutę &amp;lt;code&amp;gt;a = 0&amp;lt;/code&amp;gt; ir nustato &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmę lygią nuliui. Tada programa mato sąlygą &amp;lt;code&amp;gt;while a &amp;lt; 10:&amp;lt;/code&amp;gt;, todėl kompiuteris patikrina, ar &amp;lt;code&amp;gt;a &amp;lt; 10&amp;lt;/code&amp;gt;. Kompiuteriui pirmą kartą matant šį teiginį, &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; yra lygus 0, ir akivaizdu, kad turima reikšmė yra mažesnė nei. Kitaip tariant, kol &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; yra mažesnis skaičius nei dešimt, tol kompiuteris tikrins teiginį ir kartos jį (t.y. pridėjinės po 1), kol &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; bus lygus dešimčiai. Kai pasieks šią nustatytą reikšmę programa nustos skaityti eilutes ir prie kitų kodo eilučių. Kadangi šiame kode daugiau nieko nėra, tai programa sustoja.&lt;br /&gt;
&lt;br /&gt;
ĮSIDĖMĖK: Nepamiršk parašyti dvitaškio &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; eilutės pabaigoje, tik taip kompiuteris supras, kad čia yra teiginys!&lt;br /&gt;
&lt;br /&gt;
Kitas ciklo &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
s = 0&lt;br /&gt;
print('Įvesk skaičius, kuriuos nori pridėti prie sumos.')&lt;br /&gt;
print('Norint išeiti, įvesk 0.')&lt;br /&gt;
while a != 0:                           &lt;br /&gt;
    print('Dabartinė suma:', s)            &lt;br /&gt;
    a = float(input('Skaičius? '))        &lt;br /&gt;
    s = s + a                            &lt;br /&gt;
print('Galutinė suma =', s)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galimas programos scenarijus: &lt;br /&gt;
&lt;br /&gt;
 Įvesk skaičius, kuriuos nori pridėti prie sumos.&lt;br /&gt;
 Norint išeiti, įveskite 0.&lt;br /&gt;
 Dabartinė suma: 0&lt;br /&gt;
 Skaičius? '''200'''&lt;br /&gt;
 Dabartinė suma: 200.0&lt;br /&gt;
 Skaičius? '''-15.25'''&lt;br /&gt;
 Dabartinė suma: 184.75&lt;br /&gt;
 Skaičius? '''-151.85'''&lt;br /&gt;
 Dabartinė suma: 32.9&lt;br /&gt;
 Skaičius? '''10.00'''&lt;br /&gt;
 Dabartinė suma: 42.9&lt;br /&gt;
 Skaičius? '''0'''&lt;br /&gt;
 Galutinė suma = 42.9&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad &amp;lt;code&amp;gt;print('Galutinė suma =', s)&amp;lt;/code&amp;gt; yra paleidžiama tik pačiame gale. Teiginys &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; veikia tik tas eilutes, kurios yra atitrauktos nuo krašto ir priklauso ciklo &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; blokui. &amp;lt;code&amp;gt;! =&amp;lt;/code&amp;gt; reiškia nelygu, taigi &amp;lt;code&amp;gt;while a! = 0:&amp;lt;/code&amp;gt; reiškia tol, kol &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; nėra nulis, programa vykdo kodą.&lt;br /&gt;
&lt;br /&gt;
Ar pastebėjai, kad šiuo atveju &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; yra skaičius su reikšme po kablelio ir ne visi tokie skaičiai gali būti tiksliai atvaizduoti, kai naudojamas &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;. Pabandyk paleidęs programą įvesti 1.1&lt;br /&gt;
&lt;br /&gt;
==== Begaliniai ciklai (infinitive loops) arba niekada nesibaigaintys ciklai (Never Ending Loop)====&lt;br /&gt;
Dabar, kai jau išsiaiškinome, kas yra ciklas &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;, pasižiūrėkime kaip atrodo niekada nesibaigiantys ciklai, kaip kad ir šis:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
while True:&lt;br /&gt;
   print(&amp;quot;Padėk! Užstrigau cikle!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Operatorius &amp;lt;code&amp;gt;== &amp;lt;/code&amp;gt; naudojamas abiejų operatoriaus pusių išraiškų lygybei patikrinti, kaip ir &amp;lt;code&amp;gt; &amp;amp; lt; &amp;lt;/code&amp;gt; buvo naudojami norint pasakyt „mažiau nei“ (kitame skyriuje rasi išsamų visų palyginimo operatorių sąrašą). &lt;br /&gt;
&lt;br /&gt;
Ši mūsų sukurta programa spausdins &amp;lt;code&amp;gt;Padėk! Užstrigau cikle!&amp;lt;/code&amp;gt; visą amžinybę... Tol, kol pats ją sustabdysi, todėl kad ji visą laiką yra &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; (visada atitinka teigiamą reikšmę) arba kitaip tariant 1 reikšmės. Kaip programaą sustabdyti? Paprasčiausiai paspausk ctrl + c mygtukus.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
==== Fibonačio seka ====&lt;br /&gt;
'''Fibonacci-metodas1.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa skaičiuoja Fibonačio seką&lt;br /&gt;
a = 0&lt;br /&gt;
b = 1&lt;br /&gt;
pradinis_skačius = 0&lt;br /&gt;
maksimalus_skaičius = 20&lt;br /&gt;
&lt;br /&gt;
while pradinis_skačius &amp;lt; maksimalus_skaičius:&lt;br /&gt;
    pradinis_skačius = pradinis_skačius + 1&lt;br /&gt;
    print(a, pabaiga=&amp;quot; &amp;quot;)  # Atkreipkite dėmesį į pabaiga=&amp;quot; &amp;quot; spausdinimo funkcijos argumentuose  &lt;br /&gt;
                       # tai neleidžia sukurti naujos eilutės.&lt;br /&gt;
    senas_a = a    # turime sekti, nes mes jį keičiame.&lt;br /&gt;
    a = b&lt;br /&gt;
    b = senas_a + b&lt;br /&gt;
print()  # gauna naują (tuščią) eilutę.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Išvestis :&lt;br /&gt;
 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181&lt;br /&gt;
&lt;br /&gt;
Įsidėmėk, kad išvestis yra vienoje eilutėje dėl papildomų argumentų &amp;lt;code&amp;gt;pabaiga=&amp;quot; &amp;quot;&amp;lt;/code&amp;gt; argumentuose &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Fibonacci-metodas2.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Supaprastintas ir greitesnis Fibonačio sekos apskaičiavimo metodas&lt;br /&gt;
a = 0&lt;br /&gt;
b = 1&lt;br /&gt;
pradinis_skačius = 0&lt;br /&gt;
maksimalus_skaičius = 10&lt;br /&gt;
&lt;br /&gt;
while pradinis_skačius &amp;lt; maksimalus_skaičius:&lt;br /&gt;
    pradinis_skačius = pradinis_skačius + 1&lt;br /&gt;
    print(a, b, pabaiga=&amp;quot; &amp;quot;)  # Įsidėmėk pabaiga=&amp;quot; &amp;quot;&lt;br /&gt;
    a = a + b    &lt;br /&gt;
    b = a + b&lt;br /&gt;
print()  # gauna naują (tuščią) eilutę.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Išvestis:&lt;br /&gt;
 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181&lt;br /&gt;
&lt;br /&gt;
'''Fibonacci-metodas3.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 0&lt;br /&gt;
b = 1&lt;br /&gt;
pradinis_skačius = 0&lt;br /&gt;
maksimalus_skaičius = 20&lt;br /&gt;
&lt;br /&gt;
#kai ciklas prasideda, mes jame pasiliekame&lt;br /&gt;
while pradinis_skačius &amp;lt; maksimalus_skaičius:&lt;br /&gt;
    pradinis_skačius += 1&lt;br /&gt;
    senas_a = a&lt;br /&gt;
    a = a + b&lt;br /&gt;
    b = senas_a&lt;br /&gt;
    print(senas_a,pabaiga=&amp;quot; &amp;quot;)&lt;br /&gt;
print()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Išvestis:&lt;br /&gt;
 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181&lt;br /&gt;
&lt;br /&gt;
==== Įvesk slaptažodį ====&lt;br /&gt;
'''Slaptaždis.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Laukia, kol bus įvestas slaptažodis. Naudok „ctrl+ C“, kad sustabdytum programą&lt;br /&gt;
# be slaptažodžio&lt;br /&gt;
&lt;br /&gt;
#atkreipk dėmesį, kad tai neturi būti slaptažodis, kad&lt;br /&gt;
# ciklas while turi prasisukti bent kartą.&lt;br /&gt;
slaptažodis= str()&lt;br /&gt;
&lt;br /&gt;
# įsidėmėk != reiškia nelygu&lt;br /&gt;
while slaptažodis!= &amp;quot;Angis&amp;quot;:&lt;br /&gt;
    slaptažodis = input(&amp;quot;Slaptažodis: &amp;quot;)&lt;br /&gt;
print(&amp;quot;Prisijungimas sėkmingas&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kaip programa veikia:&lt;br /&gt;
 Slaptažodis: '''auo'''&lt;br /&gt;
 Slaptažodis: '''y22'''&lt;br /&gt;
 Slaptažodis: '''slaptažodis'''&lt;br /&gt;
 Slaptažodis: '''Sezamai atsiverk''&lt;br /&gt;
 Slaptažodis: '''Angis'''&lt;br /&gt;
 Prisijungimas sėkmingas&lt;br /&gt;
&lt;br /&gt;
=== Užduotis===&lt;br /&gt;
Parašyk programą, kuri prašo: vartotojo prisijungimo vardo ir slaptažodžio. Tada, kai vartotojas įveda „užrakinti“, jis turi įvesti savo vardą ir slaptažodį, kad atrakintų programą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas= input(&amp;quot;Koks tavo prisijungimo vardas?: &amp;quot;)&lt;br /&gt;
slaptažodis = input(&amp;quot;Koks tavo slaptažodis: &amp;quot;)&lt;br /&gt;
print(&amp;quot;print(&amp;quot;Kad užrakintum kompiuterį, parašyk: užrakinti&amp;quot;))&lt;br /&gt;
įvesta_komanda = None&lt;br /&gt;
input1 = None&lt;br /&gt;
input2 = None&lt;br /&gt;
while komanda!= &amp;quot;užrakinti&amp;quot;:&lt;br /&gt;
    įvesta_komanda = input(&amp;quot;Kokia tavo komanda: &amp;quot;)&lt;br /&gt;
while input1 != vardas:&lt;br /&gt;
    input1 = input(&amp;quot;Tavo prisijungimo vardas: &amp;quot;)&lt;br /&gt;
while input2 != slaptažodis:&lt;br /&gt;
    input2 = input(&amp;quot;Tavo slaptažodis: &amp;quot;)&lt;br /&gt;
print(&amp;quot;Prisijungimas sėkmingas&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei nori, kad programa veiktų nepertraukiamai, tiesiog pridėk &amp;lt;code&amp;gt;while 1 == 1: &amp;lt;/code&amp;gt;prieš visą programą. Tik nepamiršk, kad reikia visą likusią programos dalį, t.y. ciklo bloką reikia atitraukti nuo krašto.&lt;br /&gt;
&lt;br /&gt;
Kitas sprendimo būdas&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = input('Nustatyti vardą: ')&lt;br /&gt;
slaptažodis = input('Nustatyti slaptažodį: ')&lt;br /&gt;
while 1 == 1:&lt;br /&gt;
    vardospėjimas=&amp;quot;&amp;quot;&lt;br /&gt;
    slaptažodžiospėjimas=&amp;quot;&amp;quot;&lt;br /&gt;
    raktas=&amp;quot;&amp;quot;&lt;br /&gt;
    while (vardospėjimas!= vardas) or (slaptažodžiospėjimas!= slaptažodis):&lt;br /&gt;
        vardospėjimas = input('Vardas? ')&lt;br /&gt;
        slaptažodžiospėjimas= input('Slaptažodis? ')&lt;br /&gt;
    print(&amp;quot;Labas,&amp;quot;, vardas, &amp;quot;. Parašyk užrakinti, kad užrakintum.&amp;quot;)&lt;br /&gt;
    while raktas != &amp;quot;užrakinti&amp;quot;:&lt;br /&gt;
        raktas = input(&amp;quot;&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt;, kuris yra prie &amp;lt;code&amp;gt;(vardospėjimas!= vardas) or (slaptažodžiospėjimas!= slaptažodis)&amp;lt;/code&amp;gt;, kurių dar neįvedėme. Pabandyk suprasti šią logiką ir kaip ji veikia.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Kas čia eina? |next=Pasirinkimai}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Pasirinkimai&amp;diff=3692</id>
		<title>Python Vadovėlis/Pasirinkimai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Pasirinkimai&amp;diff=3692"/>
		<updated>2021-12-14T16:12:00Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== &amp;lt;code&amp;gt;If&amp;lt;/code&amp;gt; sakinys ===&lt;br /&gt;
Aš manau, kad kiekvieną skyrių turėčiau pradėti nuo apšilimo pratimo. Taigi, žemiau turime trumpą programą, kuri apskaičiuoja absoliučią sveikojo skaičiaus reikšmę:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
n = int(input(&amp;quot;Skaičius? &amp;quot;))&lt;br /&gt;
if n &amp;lt; 0:&lt;br /&gt;
   print(&amp;quot;Absoliuti&amp;quot;, n, &amp;quot;reikšmė yra&amp;quot;, -n)&lt;br /&gt;
else:&lt;br /&gt;
   print(&amp;quot;Absoliuti&amp;quot;, n, &amp;quot;reikšmė yra&amp;quot;, n)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai rezultatas po dviejų programos vykdymų:&lt;br /&gt;
&lt;br /&gt;
 Skaičius? '''-34'''&lt;br /&gt;
 Absoliuti -34 reikšmė yra 34&lt;br /&gt;
&lt;br /&gt;
 Skaičius? '''1'''&lt;br /&gt;
 Absoliuti 1 reikšmė yra 1&lt;br /&gt;
&lt;br /&gt;
Taigi, ką kompiuteris daro, kai pamato šį kodą? Visų pirma, jis kviečia įvesti skaičių su šiuo sakiniu &amp;lt;code&amp;gt;n = int(input(&amp;quot;Skaičius? &amp;quot;))&amp;lt;/code&amp;gt;. Tada jis skaito eilutę &amp;lt;code&amp;gt;if n &amp;lt; 0:&amp;lt;/code&amp;gt;. Jei &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; yra mažiau už nulį, Python'as vykdo eilutę &amp;lt;code&amp;gt;print(&amp;quot;Absoliuti&amp;quot;, n, &amp;quot;reikšmė yra&amp;quot;, -n)&amp;lt;/code&amp;gt;. Kitu atveju, jis vykdo eilutę &amp;lt;code&amp;gt;print(&amp;quot;Absoliuti&amp;quot;, n, &amp;quot;reikšmė yra&amp;quot;, n)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Kalbant formaliau, Python'as tikrina, ar „reiškinio“ &amp;lt;code&amp;gt;n &amp;lt; 0&amp;lt;/code&amp;gt; reikšmė yra teisinga ar klaidinga. Sakinys &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; yra lydimas įtraukto sakinių „bloko“, kuris vykdomas tik jei reiškinio reikšmė yra teisinga. Pasirinktinai, po &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakinio gali būti &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; sakinys ir dar vienas įtrauktas sakinių „blokas“. Antrasis sakinių blokas yra vykdomas tik jei reiškinio reikšmė yra klaidinga.&lt;br /&gt;
&lt;br /&gt;
Reiškinys gali turėti įvairių testų. Žemiau yra visų jų lentelė:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!operatorius &lt;br /&gt;
!funkcija&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;&amp;lt;/code&amp;gt; &lt;br /&gt;
|mažiau nei&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;=&amp;lt;/code&amp;gt; &lt;br /&gt;
|mažiau nei arba lygu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
|daugiau nei&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;gt;=&amp;lt;/code&amp;gt; &lt;br /&gt;
|daugiau nei arba lygu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; &lt;br /&gt;
|lygu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt; &lt;br /&gt;
|nelygu&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dar viena sakinio &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; ypatybė yra &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; dalis. Tai &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt; sutrumpinimas ir reiškia, kad jei originali &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakinio reikšmė yra klaidinga, bet &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; dalis yra teisinga, yra vykdoma &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; kodo dalis. Ir jei nei &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, nei &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; reiškiniai nėra tiesa, tada vykdomas &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; blokas. Pavyzdžiui:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 0&lt;br /&gt;
while a &amp;lt; 10:&lt;br /&gt;
    a = a + 1&lt;br /&gt;
    if a &amp;gt; 5:&lt;br /&gt;
        print(a, &amp;quot;&amp;gt;&amp;quot;, 5)&lt;br /&gt;
    elif a &amp;lt;= 3:&lt;br /&gt;
        print(a, &amp;quot;&amp;lt;=&amp;quot;, 3)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Nei vienas iš testų nėra teisingas&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ir išvestis:&lt;br /&gt;
&lt;br /&gt;
 1 &amp;lt;= 3&lt;br /&gt;
 2 &amp;lt;= 3&lt;br /&gt;
 3 &amp;lt;= 3&lt;br /&gt;
 Nei vienas iš testų nėra teisingas&lt;br /&gt;
 Nei vienas iš testų nėra teisingas&lt;br /&gt;
 6 &amp;gt; 5&lt;br /&gt;
 7 &amp;gt; 5&lt;br /&gt;
 8 &amp;gt; 5&lt;br /&gt;
 9 &amp;gt; 5&lt;br /&gt;
 10 &amp;gt; 5&lt;br /&gt;
&lt;br /&gt;
Gali pastebėti, kad &amp;lt;code&amp;gt;elif a &amp;lt;= 3&amp;lt;/code&amp;gt; dalis yra tikrinama tik tada, jei &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakinys nėra tiesa. Galima rašyti daugiau nei vieną &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; reiškinį, tokiu būdu leidžiant vykdyti kelis testus viename &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakinyje.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa parodo, kaip galima naudoti == operatorių&lt;br /&gt;
# naudojant numerius&lt;br /&gt;
print(5 == 6)&lt;br /&gt;
# naudojant kintamuosius&lt;br /&gt;
x = 5&lt;br /&gt;
y = 8&lt;br /&gt;
print(x == y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir išvestis&lt;br /&gt;
&lt;br /&gt;
 False&lt;br /&gt;
 False&lt;br /&gt;
&lt;br /&gt;
'''daugiau_maziau.py'''&amp;lt;!--\label{firsthighlow}--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Žaidžia spėlionių žaidimą daugiau mažiau&lt;br /&gt;
&lt;br /&gt;
# Iš tiesų, čia turėtų būti naudojami pusiau atsitiktiniai skaičiai,&lt;br /&gt;
# pavyzdžiui paskutinis laiko skaitmuo, ar kažkas panašaus. Bet tai&lt;br /&gt;
# palauks iki vėlesnės dalies. (Papildoma užduotis: po Modulių dalies, pakeisk šį kodą,&lt;br /&gt;
# kad būtų naudojami atsitiktiniai skaičiai)&lt;br /&gt;
skaicius = 7&lt;br /&gt;
spejimas = -1&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Atspėk skaičių!&amp;quot;)&lt;br /&gt;
while spejimas != skaicius:&lt;br /&gt;
    spejimas = int(input(&amp;quot;Ar tai yra... &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    if spejimas == skaicius:&lt;br /&gt;
        print(&amp;quot;Valio! Atspėjai teisingai!&amp;quot;)&lt;br /&gt;
    elif spejimas &amp;lt; skaicius:&lt;br /&gt;
        print(&amp;quot;Skaičius yra didesnis...&amp;quot;)&lt;br /&gt;
    elif spejimas &amp;gt; skaicius:&lt;br /&gt;
        print(&amp;quot;Skaičius yra ne toks didelis.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdinis vykdymas:&lt;br /&gt;
&lt;br /&gt;
 Atspėk skaičių!&lt;br /&gt;
 Ar tai yra... '''2'''&lt;br /&gt;
 Skaičius yra didesnis...&lt;br /&gt;
 Ar tai yra... '''5'''&lt;br /&gt;
 Skaičius yra didesnis...&lt;br /&gt;
 Ar tai yra... '''10'''&lt;br /&gt;
 Skaičius yra ne toks didelis.&lt;br /&gt;
 Ar tai yra... '''7'''&lt;br /&gt;
 Valio! Atspėjai teisingai!&lt;br /&gt;
&lt;br /&gt;
'''lyginis.py'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Prašo įvesti skaičių.&lt;br /&gt;
# Išveda, ar skaičius yra lyginis, ar ne&lt;br /&gt;
 &lt;br /&gt;
skaicius = float(input(&amp;quot;Pasakyk man skaičių: &amp;quot;))&lt;br /&gt;
if skaicius % 2 == 0:&lt;br /&gt;
    print(int(skaicius), &amp;quot;yra lyginis.&amp;quot;)&lt;br /&gt;
elif skaicius % 2 == 1:&lt;br /&gt;
    print(int(skaicius), &amp;quot;yra nelyginis.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(skaicius, &amp;quot;yra labai keistas.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdiniai vykdymai:&lt;br /&gt;
&lt;br /&gt;
 Pasakyk man skaičių: '''3'''&lt;br /&gt;
 3 yra nelyginis.&lt;br /&gt;
&lt;br /&gt;
 Pasakyk man skaičių: '''2'''&lt;br /&gt;
 2 yra lyginis.&lt;br /&gt;
&lt;br /&gt;
 Pasakyk man skaičių: '''3.4895'''&lt;br /&gt;
 3.4895 yra labai keistas.&lt;br /&gt;
&lt;br /&gt;
'''vidurkis1.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Prašo įvesti skaičių iki tol, kol įvedamas 0&lt;br /&gt;
# Išveda skaičių vidurkį&lt;br /&gt;
&lt;br /&gt;
kiekis = 0&lt;br /&gt;
suma = 0.0&lt;br /&gt;
skaicius = 1 # nurodomas tam, kad nebūtų iškart išeinama iš ciklo.&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Įvesk 0, kad sustabdytum ciklą&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
while skaicius != 0:&lt;br /&gt;
    skaicius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
    if skaicius != 0:&lt;br /&gt;
        kiekis = kiekis + 1&lt;br /&gt;
        suma = suma + skaicius &lt;br /&gt;
    if skaicius == 0:&lt;br /&gt;
        print(&amp;quot;Skaičių vidurkis yra:&amp;quot;, suma / kiekis)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdiniai vykdymai:&lt;br /&gt;
&lt;br /&gt;
 Įvesk 0, kad sustabdytum ciklą&lt;br /&gt;
 Įvesk skaičių: '''3'''&lt;br /&gt;
 Įvesk skaičių: '''5'''&lt;br /&gt;
 Įvesk skaičių: '''0'''&lt;br /&gt;
 Skaičių vidurkis yra: 4.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk 0, kad sustabdytum ciklą&lt;br /&gt;
 Įvesk skaičių: '''1'''&lt;br /&gt;
 Įvesk skaičių: '''4'''&lt;br /&gt;
 Įvesk skaičių: '''3'''&lt;br /&gt;
 Įvesk skaičių: '''0'''&lt;br /&gt;
 Skaičių vidurkis yra: 2.66666666667&lt;br /&gt;
&lt;br /&gt;
'''vidurkis2.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Prašo įvesti skaičių iki tol, kol bus įvestas tam tikras kiekis skaičių&lt;br /&gt;
# Išveda skaičių vidurkį.&lt;br /&gt;
&lt;br /&gt;
# Gali pastebėti, kad naudojame sveikąjį skaičių sekti, kiek numerių&lt;br /&gt;
# buvo įvesta, bet slankiojo kablelio skaičių, kiekvienam įvestam&lt;br /&gt;
# skaičiui sekti&lt;br /&gt;
suma = 0.0&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Ši programa paprašys įvesti kelis skaičius ir suskaičiuos jų vidurkį&amp;quot;)&lt;br /&gt;
kiekis = int(input(&amp;quot;Kelių skaičių vidurkį norėtum suskaičiuoti: &amp;quot;))&lt;br /&gt;
esamasis_kiekis = 0&lt;br /&gt;
&lt;br /&gt;
while esamasis_kiekis &amp;lt; kiekis:&lt;br /&gt;
    esamasis_kiekis = esamasis_kiekis + 1&lt;br /&gt;
    print(&amp;quot;Skaičius&amp;quot;, esamasis_kiekis)&lt;br /&gt;
    skaicius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
    suma = suma + skaicius &lt;br /&gt;
    &lt;br /&gt;
print(&amp;quot;Skaičių vidurkis yra:&amp;quot;, suma / kiekis)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdiniai vykdymai:&lt;br /&gt;
&lt;br /&gt;
 Ši programa paprašys įvesti kelis skaičius ir suskaičiuos jų vidurkį&lt;br /&gt;
 Kelių skaičių vidurkį norėtum suskaičiuoti: '''2'''&lt;br /&gt;
 Skaičius 1&lt;br /&gt;
 Įvesk skaičių: '''3'''&lt;br /&gt;
 Skaičius 2&lt;br /&gt;
 Įvesk skaičių: '''5'''&lt;br /&gt;
 Skaičių vidurkis yra: 4.0&lt;br /&gt;
&lt;br /&gt;
 Ši programa paprašys įvesti kelis skaičius ir suskaičiuos jų vidurkį&lt;br /&gt;
 Kelių skaičių vidurkį norėtum suskaičiuoti: '''3'''&lt;br /&gt;
 Skaičius 1&lt;br /&gt;
 Įvesk skaičių: '''1'''&lt;br /&gt;
 Skaičius 2&lt;br /&gt;
 Įvesk skaičių: '''4'''&lt;br /&gt;
 Skaičius 3&lt;br /&gt;
 Įvesk skaičių: '''3'''&lt;br /&gt;
 Skaičių vidurkis yra: 2.66666666667&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Parašyk programą, kuri prašo naudotojo įvesti savo vardą. Jei jis įveda tavo vardą, išvesk „Tai puikus vardas“. Jei jie įveda &amp;quot;Jonas Jonaitis“ arba „Petras Petraitis“, išvesk kokį nors juokingą tekstą. Kitu atveju, išvesk „Tavo vardas yra labai gražus“.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = input(&amp;quot;Tavo vardas: &amp;quot;)&lt;br /&gt;
if vardas == 'Lukas':&lt;br /&gt;
    print(&amp;quot;Tai puikus vardas.&amp;quot;)&lt;br /&gt;
elif vardas == 'Jonas Jonaitis':&lt;br /&gt;
    print(&amp;quot;... juokingas tekstas apie Joną.&amp;quot;)&lt;br /&gt;
elif vardas == 'Petras Petraitis':&lt;br /&gt;
    print(&amp;quot;... juokingas tekstas apie Petrą.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Tavo vardas yra labai gražus.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Pakeisk aukščiau esančią „daugiau_maziau.py“ programą, kad ji papildomai skaičiuotų, kiek kartų naudotojas įvedė neteisingą skaičių. Jei taip nutiko daugiau, nei tris kartus, programos pabaigoje išvesk „Tai buvo sudėtinga.“, o kitu atveju - „Gerai padirbėjai!“&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaicius = 7&lt;br /&gt;
spejimas = -1&lt;br /&gt;
kiekis = 0&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Atspėk skaičių!&amp;quot;)&lt;br /&gt;
while spejimas != skaicius:&lt;br /&gt;
    spejimas = int(input(&amp;quot;Ar tai yra... &amp;quot;))&lt;br /&gt;
    kiekis = kiekis + 1&lt;br /&gt;
    if spejimas == skaicius:&lt;br /&gt;
        print(&amp;quot;Valio! Atspėjai teisingai!&amp;quot;)&lt;br /&gt;
    elif spejimas &amp;lt; skaicius:&lt;br /&gt;
        print(&amp;quot;Skaičius yra didesnis...&amp;quot;)&lt;br /&gt;
    elif spejimas &amp;gt; skaicius:&lt;br /&gt;
        print(&amp;quot;Skaičius yra ne toks didelis.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if kiekis &amp;gt; 3:&lt;br /&gt;
    print(&amp;quot;Tai buvo sudėtinga.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Gerai padirbėjai!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Parašyk programą, kuri prašo įvesti du skaičius. Jei skaičių suma yra didesnė nei 100, išvesk „Tai yra didelis skaičius“.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaicius1 = float(input(&amp;quot;Pirmas skaičius: &amp;quot;))&lt;br /&gt;
skaicius2 = float(input(&amp;quot;Antras skaičius: &amp;quot;))&lt;br /&gt;
if skaicius1 + skaicius2 &amp;gt; 100:&lt;br /&gt;
    print(&amp;quot;Skaičių suma yra didelis skaičius.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Suskaičiuoti iki 10 |next=Derinimas}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Loginiai_rei%C5%A1kiniai&amp;diff=3690</id>
		<title>Python Vadovėlis/Loginiai reiškiniai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Loginiai_rei%C5%A1kiniai&amp;diff=3690"/>
		<updated>2021-12-14T15:35:18Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Šiame skyriuje padėsiu tau išsiaiškinti, kas yra loginiai reiškiniai. Sugalvojau nedidelį programos pavyzdį, kurio tau įvedinėti nebūtina: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 6&lt;br /&gt;
b = 7&lt;br /&gt;
c = 42&lt;br /&gt;
print(1, a == 6)&lt;br /&gt;
print(2, a == 7)&lt;br /&gt;
print(3, a == 6 and b == 7)&lt;br /&gt;
print(4, a == 7 and b == 7)&lt;br /&gt;
print(5, not a == 7 and b == 7)&lt;br /&gt;
print(6, a == 7 or b == 7)&lt;br /&gt;
print(7, a == 7 or b == 6)&lt;br /&gt;
print(8, not (a == 7 and b == 6))&lt;br /&gt;
print(9, not a == 7 and b == 6)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šios programos išvestis yra:&lt;br /&gt;
&lt;br /&gt;
 1 True&lt;br /&gt;
 2 False&lt;br /&gt;
 3 True&lt;br /&gt;
 4 False&lt;br /&gt;
 5 True&lt;br /&gt;
 6 True&lt;br /&gt;
 7 False&lt;br /&gt;
 8 True&lt;br /&gt;
 9 False&lt;br /&gt;
&lt;br /&gt;
Galvoje, turbūt, jau sukasi mintis: kas čia ką tik įvyko? Paaiškinsiu, kaip veikia kiekviena eilutė, kad mintys susidėliotų į savas vietas. Mano programoje gausu &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; sakinių, iš kurių kiekvienas išspausdina skaičių ir loginę reikšmę. Skaičius man padeda suprasti, kurio &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; sakinio rezultatas tai yra. Atkreipk dėmesį, kad kiekvienoje išvesties eilutėje yra žodis &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;, o Python'e kiekviena loginė reikšmė &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; gali būti užrašoma skaičiumi 0, o &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; 1.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;!-- Pavyzdžiui: --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;gt;&amp;gt;&amp;gt; if 1: --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ...     print &amp;quot;true&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ... else: --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ...     print &amp;quot;false&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ...  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- true --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;gt;&amp;gt;&amp;gt; if 0: --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ...     print &amp;quot;true&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ... else: --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ...     print &amp;quot;false&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ...  --&amp;gt;&lt;br /&gt;
&amp;lt;!-- false --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;/syntaxhighlight&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eilučių:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(1, a == 6)&lt;br /&gt;
print(2, a == 7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rezultatas atitinkamai yra &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;, kadangi pirmasis reiškinys yra teisingas, o antrasis yra klaidingas. Trečioji eilutė: &amp;lt;code&amp;gt;print(3, a == 6 and b == 7)&amp;lt;/code&amp;gt; - šiek tiek skiriasi nuo prieš tai buvusių - joje yra naudojamas operatorius &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt;. Loginis operatorius &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; grąžina rezultatą &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; tik tada, kai reiškiniai iš abiejų &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; pusių yra teisingi, kitu atveju visas reiškinys bus klaidingas ir grąžins &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;. Ketvirtoje eilutėje: print(4, a == 7 and b == 7) tik vienas iš reiškinių yra teisingas, dėl to eilutės rezultatas yra &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;. Operatoriaus &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; galimi rezultatai gali būti apibrėžti tokia lentele:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Reiškinys&lt;br /&gt;
!Rezultatas&lt;br /&gt;
|-  &lt;br /&gt;
|true &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; true &lt;br /&gt;
|true &lt;br /&gt;
|-&lt;br /&gt;
|true &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; false &lt;br /&gt;
|false &lt;br /&gt;
|-&lt;br /&gt;
|false &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; true &lt;br /&gt;
|false&lt;br /&gt;
|-&lt;br /&gt;
|false &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; false &lt;br /&gt;
|false&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, jei pirmas reiškinys yra klaidingas, tai Python’as nebetikrins antrojo, kadangi jis žino, jog visas reiškinys yra klaidingas. Parašyk šias eilutes ir paleisk programą: &amp;lt;code&amp;gt;False and print(&amp;quot;Labas&amp;quot;)&amp;lt;/code&amp;gt; ir palygink rezultatą su šios eilutės &amp;lt;code&amp;gt;True and print(&amp;quot;Labas&amp;quot;)&amp;lt;/code&amp;gt; rezultatu. Techniškai tai yra vadinama [[w:Short-circuit evaluation|short-circuit evaluation]].&lt;br /&gt;
Penktoje eilutėje, &amp;lt;code&amp;gt;print(5, not a == 7 and b == 7)&amp;lt;/code&amp;gt;, yra naudojamas &amp;lt;code&amp;gt;not&amp;lt;/code&amp;gt; operatorius. &amp;lt;code&amp;gt;not&amp;lt;/code&amp;gt; suteikia priešingą reikšmę reiškiniui (reiškinys taip pat galėtų būti užrašomas taip: &amp;lt;code&amp;gt; print(5, a != 7 and b == 7)&amp;lt;/code&amp;gt;). Štai lentelė apibrėžianti operatoriaus &amp;lt;code&amp;gt;not&amp;lt;/code&amp;gt; rezultatus:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Reiškinys&lt;br /&gt;
!Rezultatas&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;not&amp;lt;/code&amp;gt; true &lt;br /&gt;
|false &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;not&amp;lt;/code&amp;gt; false &lt;br /&gt;
|true&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dvi toliau pateiktos eilutės: &amp;lt;code&amp;gt;print(6, a == 7 or b == 7)&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;print(7, a == 7 or b == 6)&amp;lt;/code&amp;gt; naudoja operatorių &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt;. Pastarasis operatorius grąžina &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; jei pirmasis reiškinys yra teisingas arba, jei antrasis reiškinys yra teisingas, arba, jei abu reiškiniai yra teisingi. Jei nei vienas iš reiškinių nėra teisingas, tuomet yra grąžinamas false. Štai lentelė apibrėžianti operatoriaus &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; rezultatus:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Reiškinys&lt;br /&gt;
!Rezultatas&lt;br /&gt;
|-  &lt;br /&gt;
|true &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; true &lt;br /&gt;
| true&lt;br /&gt;
|-&lt;br /&gt;
|true &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; false &lt;br /&gt;
|true&lt;br /&gt;
|-&lt;br /&gt;
|false &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; true &lt;br /&gt;
| true  &lt;br /&gt;
|-&lt;br /&gt;
|false &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; false &lt;br /&gt;
| false &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Turėk omeny, jei pirmasis reiškinys yra teisingas Python’as nebetikrins antrojo, kadangi jis žino, jog visas reiškinys bus teisingas. Kaip jau minėjau anksčiau, naudojant operatorių &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt;, jei bent vienas iš reiškinių yra teisingas, tuomet viso reiškinio galutinis rezultatas bus teisingas. Pirmoji dalis yra teisinga, todėl antroji dalis gali būti klaidinga arba teisinga, tačiau visa išraiška vis dar teisinga.&lt;br /&gt;
&lt;br /&gt;
Aštuntoje: &amp;lt;code&amp;gt;print(8, not (a == 7 and b == 6))&amp;lt;/code&amp;gt; ir devintoje: &amp;lt;code&amp;gt;print(9, not a == 7 and b == 6)&amp;lt;/code&amp;gt; eilutėse yra atvaizduojamas reiškinių grupavimo pavyzdys. Reiškinius Python’e galima sugrupuoti naudojant skliaustelius. Sugrupavę reiškinius, mes priverčiame Python’ą iš pradžių įvertinti reiškinius skliaustuose ir tik tada likusias reiškinio dalis. Atkreipk dėmesį, kad skliausteliai pakeitė reiškinį iš neteisingo į teisingą. Taip nutiko dėl to, kad operatorius &amp;lt;code&amp;gt;not&amp;lt;/code&amp;gt; buvo pritaikytas reiškiniui skliausteliuose, vietoj to, kad būtų pritaikytas tik &amp;lt;code&amp;gt;a == 7&amp;lt;/code&amp;gt; daliai. &lt;br /&gt;
Parodysiu pavyzdį, kaip rašant kodą galima pritaikyti loginius operatorius:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
sąrašas = [&amp;quot;Gyvenimas&amp;quot;, &amp;quot;Visata&amp;quot;, &amp;quot;Viskas&amp;quot;, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;, &amp;quot;Gyvenimas&amp;quot;, &amp;quot;Liepa&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
# kuriama sąrašo kopija. Peržiūrėk skyrių Daugiau apie sąrašus, kuriame sužinosi ką reiškia [:].&lt;br /&gt;
kopija = sąrašas[:]&lt;br /&gt;
# surūšiuoti sąrašą&lt;br /&gt;
kopija.sort()&lt;br /&gt;
ankstesnis = kopija[0]&lt;br /&gt;
del kopija[0]&lt;br /&gt;
&lt;br /&gt;
kiekis = 0&lt;br /&gt;
&lt;br /&gt;
# sąraše surask vienodus elementus&lt;br /&gt;
while kiekis &amp;lt; len(kopija) and kopija[kiekis] != ankstesnis:&lt;br /&gt;
    ankstesnis = kopija[kiekis]&lt;br /&gt;
    kiekis = kiekis + 1&lt;br /&gt;
&lt;br /&gt;
# Jei nėra atitikmens tuomet kiekis negali būti &amp;lt; len&lt;br /&gt;
# kadangi ciklas kol bus vykdomas tol, kol kiekis &amp;lt; len&lt;br /&gt;
# ir nėra rastas atitikmuo&lt;br /&gt;
&lt;br /&gt;
if kiekis &amp;lt; len(kopija):&lt;br /&gt;
    print(&amp;quot;Pirmasis atitikmuo:&amp;quot;, ankstesnis)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šios programos rezultatas:&lt;br /&gt;
Pirmasis atitikmuo: Liepa&lt;br /&gt;
&lt;br /&gt;
Programa ieško vienodų elementų, tikrindama šią sąlygą: &amp;lt;code&amp;gt; while kiekis &amp;lt; len(kopija) ir kopija[kiekis] nėra lygus ankstesnis &amp;lt;/code&amp;gt;. Kai &amp;lt;code&amp;gt;kiekis&amp;lt;/code&amp;gt; yra didesnis už paskutinio &amp;lt;code&amp;gt;kopija&amp;lt;/code&amp;gt; sąrašo elemento indeksą arba, kai atsiranda sutampantis elementas, operatorius &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; nebėra tiesa, todėl ciklas pasibaigia. &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakinys patikrina ar ciklas &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; pasibaigė dėl to, kad buvo rastas sutampantis elementas.&lt;br /&gt;
&lt;br /&gt;
Šioje programoje yra panaudotas dar vienas &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; operatoriaus „triukas“. Jei dar kartą pažiūrėsi į operatoriaus &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; lentelę pamatysi, jog trečioje eilutėje yra netiesa ir netiesa. Jei &amp;lt;code&amp;gt;kiekis &amp;gt;= len(kopija)&amp;lt;/code&amp;gt; (kitais žodžiais, jei &amp;lt;code&amp;gt;kiekis &amp;lt; len(kopija)&amp;lt;/code&amp;gt; yra &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;), tada kodo dalis &amp;lt;code&amp;gt;kopija[kiekis]&amp;lt;/code&amp;gt; nebus tikrinama. Taip yra todėl, kad Python’as žino, jei pirmasis teiginys yra klaidingas, tai abu jie nebegali būti teisingi. Šis „short circuit“  triukas yra naudingas tuomet, kai antrasis &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; operatoriaus teiginys gali sukelti klaidą. Aš panaudojau pirmąjį teiginį (&amp;lt;code&amp;gt;kiekis &amp;lt; len(kopija)&amp;lt;/code&amp;gt;), kad patikrinčiau ar kintamasis &amp;lt;code&amp;gt;kiekis&amp;lt;/code&amp;gt; yra validus sąrašo &amp;lt;code&amp;gt;kopija&amp;lt;/code&amp;gt; indeksas. Jei manimi netiki, tuomet ištrink iš sąrašo elementus „Liepa“ ir „Gyvenimas“, sukeisk vietomis sąlygas &amp;lt;code&amp;gt;kiekis &amp;lt; len(kopija) and kopija[kiekis] != ankstesnis&amp;lt;/code&amp;gt; (rašyk: &amp;lt;code&amp;gt;kopija[kiekis] != ankstesnis and kiekis &amp;lt; len(kopija)&amp;lt;/code&amp;gt;) ir patikrink ar programa vis dar veikia, kaip turėtų. &lt;br /&gt;
&lt;br /&gt;
Loginės išraiškos gali būti naudojamos, kai mes norime patikrinti dvi arba daugiau skirtingų sąlygų vienu metu.&lt;br /&gt;
&lt;br /&gt;
=== Pastaba apie loginius operatorius ===&lt;br /&gt;
Dažna pradedančiųjų programuotojų klaida yra neteisingas supratimas, kaip veikia loginiai operatoriai ir kaip juos „skaito“ Python'o interpretatorius. Pavyzdžiui: vos tik sužinojus apie operatorius &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt;, galima pagalvoti, kad išraiška &amp;lt;code&amp;gt;x == ('a' or 'b')&amp;lt;/code&amp;gt; patikrins, ar kintamasis &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; yra lygus &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;  arba kintamasis &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; lygus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, tačiau taip nėra. Norint suprasti, apie ką kalbu, pradėk interaktyvią sesiją su interpretatoriumi ir įvesk šias išraiškas:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; 'a' == ('a' or 'b')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; 'b' == ('a' or 'b')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; 'a' == ('a' and 'b')&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; 'b' == ('a' and 'b')&lt;br /&gt;
&lt;br /&gt;
Štai yra rezultatai, kurie nėra intuityvūs:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'a' == ('a' or 'b')'''&lt;br /&gt;
 True&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'b' == ('a' or 'b')'''&lt;br /&gt;
 False&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'a' == ('a' and 'b')'''&lt;br /&gt;
 False &lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'b' == ('a' and 'b')'''&lt;br /&gt;
 True&lt;br /&gt;
&lt;br /&gt;
Šiuo momentu gali pasirodyti, jog operatoriai &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; veikia klaidingai. Neatrodo logiška, jog pirmuose reiškiniuose &amp;lt;code&amp;gt;'a'&amp;lt;/code&amp;gt;  yra lygu &amp;lt;code&amp;gt;'a'&amp;lt;/code&amp;gt;  arba &amp;lt;code&amp;gt;'b'&amp;lt;/code&amp;gt;, tačiau &amp;lt;code&amp;gt;'b'&amp;lt;/code&amp;gt; nėra lygu &amp;lt;code&amp;gt;'a'&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;'b'&amp;lt;/code&amp;gt;. Taip pat yra ir su paskutiniu reiškiniu - jis neatrodo teisingas, nes &amp;lt;code&amp;gt;'b'&amp;lt;/code&amp;gt; yra lygus &amp;lt;code&amp;gt;'a'&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;'b'&amp;lt;/code&amp;gt;. Išsiaiškinus, kaip veikia Python’o interpretatorius pasidaro aišku, kodėl gavome būtent tokius rezultatus.&lt;br /&gt;
&lt;br /&gt;
Kai Python’o interpretatorius „pamato“ reiškinį, kuriame yra naudojamas &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt;, jis paima pirmąjį teiginį ir patikrina ar jo rezultatas yra &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;. Jei pirmasis teiginys yra &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;, tuomet Python’as grąžina to teiginio rezultatą, netikrindamas antrojo. Kaip jau minėjau anksčiau, naudojant operatorių &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; užtenka patikrinti ar pirmasis teiginys yra teisingas, nes tada mes jau žinome, kad visas reiškinys yra teisingas ir programai nebereikia papildomai tikrinti antrojo. Iš kitos pusės, jei pirmasis teiginys grąžina &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;, tada Python’as turi patikrinti ir antrojo teiginio rezultatą bei grąžinti jo reikšmę. Antrasis teiginys nusako visos išraiškos rezultatą, kadangi pirmoji pusė buvo klaidinga. Šis interpretatoriaus „tingus“ įvertinimas vadinamas &amp;quot;short circuiting&amp;quot; ir yra įprastas būdas įvertinti logines išraiškas daugelyje programavimo kalbų.&lt;br /&gt;
&lt;br /&gt;
Panašiai veikia ir operatorius &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt;: Python’as naudoja, &amp;quot;short circuit&amp;quot; techniką, kad pagreitintų išraiškos įvertinimą. Jei pirmasis teiginys yra klaidingas, tada visas reiškinys yra klaidingas. Kitu atveju, jei pirmasis teiginys yra teisingas, tada Python’as patikrina antrąjį ir grąžina galutinę reikšmę.&lt;br /&gt;
&lt;br /&gt;
Reiktų atkreiptį dėmesį į vieną niuansą: ne tik loginių išraiškų rezultatai gali būti apibrėžiami &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt; reikšmėmis. Norėdami patikrinti bet kurio objekto &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; loginę reikšmę, galite naudoti funkciją &amp;lt;code&amp;gt;bool(x)&amp;lt;/code&amp;gt;.  Žemiau yra pateikiama lentelė, kurioje yra pavyzdžiai, kokiems objektams Python’as priskiria &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!True !!False&lt;br /&gt;
|-&lt;br /&gt;
|True ||False&lt;br /&gt;
|-&lt;br /&gt;
|1 ||0&lt;br /&gt;
|-&lt;br /&gt;
|Skaičiai kitokie nei nulis ||Tekstinė eilutė 'None'&lt;br /&gt;
|-&lt;br /&gt;
|Ne tuščios tekstinės eilutės ||Tuščios tekstinės eilutės&lt;br /&gt;
|-&lt;br /&gt;
|Sąrašai (lists) turintys elementų ||Sąrašai (lists) neturintys elementų&lt;br /&gt;
|-&lt;br /&gt;
|Žodynai (dictionaries) turintys elementų ||Žodynai (dictionaries) neturintys elementų&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabar galime suprasti gluminančius rezultatus, kuriuos gavome, kai anksčiau išbandėme logines išraiškas. Pažiūrėkime, ką Python'o interpretatorius „mato“, eidamas per šį kodą:&lt;br /&gt;
&lt;br /&gt;
'''Pirmasis atvejis:'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'a' == ('a' or 'b')'''  # Iš pradžių žiūrėk į reiškinį skliaustuose: &amp;quot;('a' or 'b')&amp;quot;&lt;br /&gt;
                            # 'a' yra netuščia teksto eilutė, todėl reiškinio rezultatas yra True&lt;br /&gt;
                            # Grąžink tą pirmą reikšmę: 'a'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'a' == 'a' '''          # teksto eilutė 'a' yra lygi teksto eilutei 'a', todėl reiškinio rezultatas yra True&lt;br /&gt;
 True&lt;br /&gt;
&lt;br /&gt;
'''Antrasis atvejis:'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'b' == ('a' or 'b')'''  # Iš pradžių žiūrėk į reiškinį skliaustuose: &amp;quot;('a' or 'b')&amp;quot;&lt;br /&gt;
                            # 'a' yra netuščia teksto eilutė, todėl reiškinio rezultatas yra True&lt;br /&gt;
                            # Grąžink tą pirmą reikšmę: 'a'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'b' == 'a' '''          # teksto eilutė 'b' nėra lygi teksto eilutei 'a', todėl reiškinio rezultatas yra False&lt;br /&gt;
 False &lt;br /&gt;
&lt;br /&gt;
'''Trečiasis atvejis:'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'a' == ('a' and 'b')''' # Iš pradžių žiūrėk į reiškinį skliaustuose: &amp;quot;('a' and 'b')&amp;quot;&lt;br /&gt;
                            # 'a' yra netuščia teksto eilutė, todėl reiškinio rezultatas yra True, patikrinkime antrąją reikšmę&lt;br /&gt;
                            # 'b' yra netuščia teksto eilutė, todėl antrojo reiškinio rezultatas yra True&lt;br /&gt;
                            # Grąžink antrąją reikšmę kaip viso reiškinio rezultatą: 'b'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'a' == 'b' '''          # teksto eilutė 'a' nėra lygi teksto eilutei 'b', todėl reiškinio rezultatas yra False&lt;br /&gt;
 False&lt;br /&gt;
&lt;br /&gt;
'''Ketvirtasis atvejis:'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'b' == ('a' and 'b')''' # Iš pradžių žiūrėk į reiškinį skliaustuose:&lt;br /&gt;
                            # 'a' yra netuščia teksto eilutė, todėl reiškinio rezultatas yra True, patikrinkime antrąją reikšmę&lt;br /&gt;
                            # 'b' yra netuščia teksto eilutė, todėl antrojo reiškinio rezultatas yra True&lt;br /&gt;
                            # Grąžink antrąją reikšmę kaip viso reiškinio rezultatą: 'b'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'b' == 'b' '''          # teksto eilutė 'b' yra lygi teksto eilutei 'b', todėl reiškinio rezultatas yra True&lt;br /&gt;
 True &lt;br /&gt;
&lt;br /&gt;
Taigi, Python’as tikrai teisingai įvertino duotuosius reiškinius, kurių rezultatai iš pradžių neatrodė akivaizdūs. Kaip minėjau anksčiau, svarbu atpažinti, kokį rezultatą tavo loginė išraiška grąžins ir kodėl.&lt;br /&gt;
&lt;br /&gt;
Grįžtant prie pradinių reiškinių, štai kaip juos turėtum aprašyti, kad jie grąžintų reikšmes, kurių tikiesi:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'a' == 'a' or 'a' == 'b' '''&lt;br /&gt;
 True&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'b' == 'a' or 'b' == 'b' '''&lt;br /&gt;
 True&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'a' == 'a' and 'a' == 'b' '''&lt;br /&gt;
 False&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;''' 'b' == 'a' and 'b' == 'b' '''&lt;br /&gt;
 False&lt;br /&gt;
&lt;br /&gt;
Įvertinus šiuos reiškinius yra gaunamos logines reikšmes &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;, o ne teksto eilutės, kad galėtume gauti teisingus palyginimo rezultatus.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
'''slaptazodis1.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
## Ši programa prašo vartotojo prisijungimo vardo ir slaptažodžio.&lt;br /&gt;
# Kai vartotojas juos įveda, programa įvertina ar jis gali prisijungti.&lt;br /&gt;
&lt;br /&gt;
vardas = input(&amp;quot;Koks tavo vardas? &amp;quot;)&lt;br /&gt;
slaptažodis = input(&amp;quot;Koks tavo slaptažodis? &amp;quot;)&lt;br /&gt;
if vardas == &amp;quot;Benas&amp;quot; and slaptažodis == &amp;quot;Penktadienis&amp;quot;:&lt;br /&gt;
    print(&amp;quot;Sveikas, Benai!&amp;quot;)&lt;br /&gt;
elif vardas == &amp;quot;Jonas&amp;quot; and slaptažodis == &amp;quot;Kietas&amp;quot;:&lt;br /&gt;
    print(&amp;quot;Sveikas, Jonai!&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Aš tavęs nepažįstu.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdiniai rezultatai:&lt;br /&gt;
&lt;br /&gt;
Koks tavo vardas? '''Benas'''&lt;br /&gt;
&lt;br /&gt;
Koks tavo slaptažodis? '''Penktadienis'''&lt;br /&gt;
&lt;br /&gt;
Sveikas, Benai!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Koks tavo vardas? '''Andrius'''&lt;br /&gt;
&lt;br /&gt;
Koks tavo slaptažodis? '''Pinigai'''&lt;br /&gt;
&lt;br /&gt;
Aš tavęs nepažįstu.&lt;br /&gt;
&lt;br /&gt;
=== Užduotys ===&lt;br /&gt;
Parašyk programą, kurioje vartotojas turi atspėti tavo vardą, tačiau jie turės tik 3 spėjimus tai padaryti iki kol programa bus uždaryta.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Pabandyk atspėti mano vardą!&amp;quot;)&lt;br /&gt;
kiekis = 1&lt;br /&gt;
vardas = &amp;quot;gilbertas&amp;quot;&lt;br /&gt;
spėjimas = input(&amp;quot;Koks mano vardas? &amp;quot;)&lt;br /&gt;
while kiekis &amp;lt; 3 and spėjimas.lower() != vardas:    # .lower visas didžiąsias raides teksto eilutėje pakeičia į mažąsias, todėl net jei vartotojas įves Gilbertas, tai vis tiek bus teisingas atsakymas&lt;br /&gt;
    print(&amp;quot;Tu neteisus!&amp;quot;)&lt;br /&gt;
    spėjimas = input(&amp;quot;Koks mano vardas? &amp;quot;)&lt;br /&gt;
    kiekis = kiekis + 1&lt;br /&gt;
&lt;br /&gt;
if spėjimas.lower() != vardas:&lt;br /&gt;
    print(&amp;quot;Tu neteisus!&amp;quot;) # ši žinutė nėra atspausdinama trečiąjį bandymą, todėl mes tai padarome dabar&lt;br /&gt;
    print(&amp;quot;Tu nebegali spėti.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Taip! Mano vardas yra&amp;quot;, vardas + &amp;quot;!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Ciklai For |next=Žodynai}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Ciklai_For&amp;diff=3689</id>
		<title>Python Vadovėlis/Ciklai For</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Ciklai_For&amp;diff=3689"/>
		<updated>2021-12-14T15:16:55Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ir štai naujas šio skyriaus spausdinimo būdas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
nuo_vieno_iki_dešimt = range(1, 11)&lt;br /&gt;
for skaičius in nuo_vieno_iki_dešimt:&lt;br /&gt;
    print(skaičius)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ir kodo išvestis būtų tokia:&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 3&lt;br /&gt;
 4&lt;br /&gt;
 5&lt;br /&gt;
 6&lt;br /&gt;
 7&lt;br /&gt;
 8&lt;br /&gt;
 9&lt;br /&gt;
 10&lt;br /&gt;
&lt;br /&gt;
Išvestis atrodo labai pažįstama, tačiau programos kodas atrodo kitaip. Pirmoje eilutėje naudojama funkcija &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; naudoja du argumentus, tokius kaip šie &amp;lt;code&amp;gt;range(pradžia, pabaiga)&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;pradžia&amp;lt;/code&amp;gt; yra pirmasis atkuriamas skaičius. &amp;lt;code&amp;gt;pabaiga&amp;lt;/code&amp;gt; yra vienu didesnis nei paskutinis atkuriamas skaičius. Atkreipk dėmesį, kad šį kodą galima parašyti ir trumpiau:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for skaičius in range(1, 11):&lt;br /&gt;
    print(skaičius)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; funkcija grąžina iteraciją. Tai galima paversti sąrašu naudojant funkciją &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt;.&lt;br /&gt;
Štai keli pavyzdžiai, parodantys, kas nutinka su komanda &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''range(1, 10)'''&lt;br /&gt;
 range(1, 10)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list(range(1, 10))'''&lt;br /&gt;
 [1, 2, 3, 4, 5, 6, 7, 8, 9]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list(range(-32, -20))'''&lt;br /&gt;
 [-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list(range(5,21))'''&lt;br /&gt;
 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list(range(5))'''&lt;br /&gt;
 [0, 1, 2, 3, 4]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list(range(21, 5))'''&lt;br /&gt;
 []&lt;br /&gt;
&lt;br /&gt;
Eilutė &amp;lt;code&amp;gt;for skaičius in nuo_vieno_iki_dešimt:&amp;lt;/code&amp;gt; naudoja &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; valdymo struktūrą. &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; struktūra atrodo taip: &amp;lt;code&amp;gt;for elementas in sąrašas:&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;sąrašas&amp;lt;/code&amp;gt; pereinamas nuo pirmojo sąrašo elemento iki paskutinio. Kai &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; eina per kiekvieną sąrašo elementą, jis kiekvieną reikšmę priskiria &amp;lt;code&amp;gt;elementas&amp;lt;/code&amp;gt; kintamajam. Tai leidžia naudoti &amp;lt;code&amp;gt;elementas&amp;lt;/code&amp;gt; kiekvieną kartą, kai ciklas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; pereinamas iš eilės. Štai dar vienas pavyzdys (tau nereikia šito įvesti), kad būtų lengviau suprasti:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
demoSąrašas = [&amp;quot;gyvybė&amp;quot;, 42, &amp;quot;visata&amp;quot;, 6, &amp;quot;ir&amp;quot;, 9, &amp;quot;oras&amp;quot;]&lt;br /&gt;
for elementas in demoSąrašas:&lt;br /&gt;
    print(&amp;quot;Dabartinis elementas yra:&amp;quot;, elementas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas yra:&lt;br /&gt;
&lt;br /&gt;
 Dabartinis elementas yra: gyvybė&lt;br /&gt;
 Dabartinis elementas yra: 42&lt;br /&gt;
 Dabartinis elementas yra: visata&lt;br /&gt;
 Dabartinis elementas yra: 6&lt;br /&gt;
 Dabartinis elementas yra: ir&lt;br /&gt;
 Dabartinis elementas yra: 7&lt;br /&gt;
 Dabartinis elementas yra: oras&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kaip ciklas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; praeina ir nustato elemento reikšmę kiekvienam sąrašo elementui. Taigi, kam tinkamas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;? Pirmasis naudojimas yra peržiūrėti visus sąrašo elementus ir ką nors padaryti su kiekvienu iš jų. Štai greitas būdas sudėti visus elementus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
sąrašas = [2, 4, 6, 8]&lt;br /&gt;
suma = 0&lt;br /&gt;
for skaičius in sąrašas:&lt;br /&gt;
    suma = suma + skaičius&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Suma yra:&amp;quot;, suma)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o išvestis yra tiesiog:&lt;br /&gt;
&lt;br /&gt;
Suma yra: 20&lt;br /&gt;
&lt;br /&gt;
Arba gali parašyti programą, kad sužinotum, ar sąraše yra dublikatų. Pavyzdžiui kaip ši programa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
sąrašas = [4, 5, 7, 8, 9, 1, 0, 7, 10]&lt;br /&gt;
sąrašas.sort()&lt;br /&gt;
praeitas = None&lt;br /&gt;
for elementas in sąrašas:&lt;br /&gt;
    if praeitas == elementas:&lt;br /&gt;
        print(&amp;quot;Dublikatas&amp;quot;, praeitas, &amp;quot;rastas.&amp;quot;)&lt;br /&gt;
    praeitas = elementas&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ir turime rezultatą:&lt;br /&gt;
&lt;br /&gt;
 Dublikatas 7 rastas.&lt;br /&gt;
&lt;br /&gt;
Gerai, tai kaip gi tai veikia? Čia yra speciali derinimo versija, kuri turėtų tau padėti suprasti (tau to nereikia įvesti):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
l = [4, 5, 7, 8, 9, 1, 0, 7, 10]&lt;br /&gt;
print(&amp;quot;l = [4, 5, 7, 8, 9, 1, 0, 7, 10]&amp;quot;, &amp;quot;\t\tl:&amp;quot;, l)&lt;br /&gt;
l.sort()&lt;br /&gt;
print(&amp;quot;l.sort()&amp;quot;, &amp;quot;\t\tl:&amp;quot;, l)&lt;br /&gt;
praeitas = l[0]&lt;br /&gt;
print(&amp;quot;praeitas = l[0]&amp;quot;, &amp;quot;\t\tpraeitas:&amp;quot;, praeitas)&lt;br /&gt;
del l[0]&lt;br /&gt;
print(&amp;quot;del l[0]&amp;quot;, &amp;quot;\t\tl:&amp;quot;, l)&lt;br /&gt;
for elementas in l:&lt;br /&gt;
    if praeitas == elementas:&lt;br /&gt;
        print(&amp;quot;Dublikatas&amp;quot;, praeitas, &amp;quot;rastas.&amp;quot;)&lt;br /&gt;
    print(&amp;quot;if praeitas == elementas:&amp;quot;, &amp;quot;\t\tpraeitas:&amp;quot;, praeitas, &amp;quot;\telementas:&amp;quot;, elementas)&lt;br /&gt;
    praeitas = elementas&lt;br /&gt;
    print(&amp;quot;praeitas = elementas&amp;quot;, &amp;quot;\t\tpraeitas:&amp;quot;, praeitas, &amp;quot;\telementas:&amp;quot;, elementas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ir kodo išvestis būtų:&lt;br /&gt;
&lt;br /&gt;
 l = [4, 5, 7, 8, 9, 1, 0, 7, 10]        l: [4, 5, 7, 8, 9, 1, 0, 7, 10]&lt;br /&gt;
 l.sort()                l: [0, 1, 4, 5, 7, 7, 8, 9, 10]&lt;br /&gt;
 praeitas = l[0]             praeitas: 0&lt;br /&gt;
 del l[0]                l: [1, 4, 5, 7, 7, 8, 9, 10]&lt;br /&gt;
 if praeitas == elementas:        praeitas: 0         elementas: 1&lt;br /&gt;
 praeitas = elementas             praeitas: 1         elementas: 1&lt;br /&gt;
 if praeitas == elementas:        praeitas: 1         elementas: 4&lt;br /&gt;
 praeitas = elementas             praeitas: 4         elementas: 4&lt;br /&gt;
 if praeitas == elementas:        praeitas: 4         elementas: 5&lt;br /&gt;
 praeitas = elementas             praeitas: 5         elementas: 5&lt;br /&gt;
 if praeitas == elementas:        praeitas: 5         elementas: 7&lt;br /&gt;
 praeitas = elementas             praeitas: 7         elementas: 7&lt;br /&gt;
 Dublikatas 7 rastas.&lt;br /&gt;
 if praeitas == elementas:        praeitas: 7         elementas: 7&lt;br /&gt;
 praeitas = elementas             praeitas: 7         elementas: 7&lt;br /&gt;
 if praeitas == elementas:        praeitas: 7         elementas: 8&lt;br /&gt;
 praeitas = elementas             praeitas: 8         elementas: 8&lt;br /&gt;
 if praeitas == elementas:        praeitas: 8         elementas: 9&lt;br /&gt;
 praeitas = elementas             praeitas: 9         elementas: 9&lt;br /&gt;
 if praeitas == elementas:        praeitas: 9         elementas: 10&lt;br /&gt;
 praeitas = elementas             praeitas: 10        elementas: 10&lt;br /&gt;
&lt;br /&gt;
Priežastis, kodėl į kodą įdėjau tiek daug &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; teiginių, buvo ta, kad galėtum matyti, kas vyksta kiekvienoje eilutėje (beje, jei kažkada negalėsi suprasti, kodėl programa neveikia, pabandyk įdėti daug spausdintų teiginių tose vietose, kur nori sužinoti, kas vyksta). Pirmiausia programa prasideda nuobodžiu senu sąrašu. Toliau programa surūšiuoja sąrašą. Tai darome tam, kad visi dublikatai būtų dedami vienas šalia kito. Tada programa inicijuoja kintamąjį &amp;lt;code&amp;gt;praeitas&amp;lt;/code&amp;gt;. Tada pirmasis sąrašo elementas ištrinamas, kad pirmasis elementas nebūtų klaidingai laikomas dublikatu. Toliau inicijuojamas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklas. Kiekvienas sąrašo elementas tikrinamas, ar jis sutampa su ankstesniu. Jeigu sutampa - dublikatas rastas. Tada kintamasis &amp;lt;code&amp;gt;praeitas&amp;lt;/code&amp;gt; yra pakeičiamas taip, kad kitame &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; cikle kintamasis &amp;lt;code&amp;gt;praeitas&amp;lt;/code&amp;gt; būtų ankstesnis dabartinis elementas. Be abejo, nustatytome, kad 7 yra dublikatas.  (Atkreipk dėmesį, kaip &amp;lt;code&amp;gt;\t&amp;lt;/code&amp;gt; naudojamas spausdinant tabuliavimo žymę (tab'as).)  &lt;br /&gt;
&lt;br /&gt;
Kitas būdas naudoti &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklą yra norint ką nors padaryti tam tikrą skaičių kartų. Štai trumpas kodas, kaip atspausdinti pirmuosius 9 „Fibonacci“ serijos sakičius:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
b = 1&lt;br /&gt;
for c in range(1, 10):&lt;br /&gt;
    print(a, end=&amp;quot; &amp;quot;)&lt;br /&gt;
    n = a + b&lt;br /&gt;
    a = b&lt;br /&gt;
    b = n&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
su stebėtinu rezultatu:&lt;br /&gt;
&lt;br /&gt;
 1 1 2 3 5 8 13 21 34&lt;br /&gt;
&lt;br /&gt;
Viskas, ką galima padaryti naudojant &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklą, taip pat gali būti padaryta naudojant &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; ciklą, bet &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklas suteikia lengvą būdą pereiti per visus sąrašo elementus arba ką nors padaryti tam tikrą skaičių kartų.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Sąrašai |next=Loginiai reiškiniai}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Funkcij%C5%B3_apibr%C4%97%C5%BEimas&amp;diff=3688</id>
		<title>Python Vadovėlis/Funkcijų apibrėžimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Funkcij%C5%B3_apibr%C4%97%C5%BEimas&amp;diff=3688"/>
		<updated>2021-12-14T15:10:21Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Funkcijų kūrimas ===&lt;br /&gt;
Prieš pradėdami šį skyrių pateiksime tau pavyzdį, kurio gali nepersirašinėti:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=python&amp;gt;&lt;br /&gt;
a = 23&lt;br /&gt;
b = -23&lt;br /&gt;
&lt;br /&gt;
if a &amp;lt; 0:&lt;br /&gt;
    a = -a&lt;br /&gt;
if b &amp;lt; 0:&lt;br /&gt;
    b = -b&lt;br /&gt;
if a == b:&lt;br /&gt;
    print(&amp;quot;Absoliučios&amp;quot;, a, &amp;quot;ir&amp;quot;, b, &amp;quot;reikšmės yra lygios.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Absoliučios&amp;quot;, a, &amp;quot;ir&amp;quot;, b, &amp;quot;reikšmės yra skirtingos.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programos rezultatas:&lt;br /&gt;
 &lt;br /&gt;
 Absoliučios 23 ir 23 reikšmės yra lygios.&lt;br /&gt;
&lt;br /&gt;
Ar neatrodo, kad programa yra šiek tiek pasikartojanti?.. Ir tikriausiai jau numanai, programuotojai nemėgsta pasikartojančių dalykų, nes juk pasikartojantiems dalykams atlikti ir yra sukurti kompiuteriai!! Be to atkreipk dėmesį, kad radus absoliučią reikšmę pasikeitė kintamojo vertė, todėl programa spausdina 23, o ne -23. Mūsų laimei Python'as leidžia sukurti funkcijas, kurios šalina dubliavimą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=python&amp;gt;&lt;br /&gt;
a = 23&lt;br /&gt;
b = -23&lt;br /&gt;
&lt;br /&gt;
def absoliuti_reikšmė(n):&lt;br /&gt;
    if n &amp;lt; 0:&lt;br /&gt;
        n = -n&lt;br /&gt;
    return n&lt;br /&gt;
&lt;br /&gt;
if absoliuti_reikšmė(a) == absoliuti_reikšmė(b):&lt;br /&gt;
    print(&amp;quot;Absoliučios&amp;quot;, a, &amp;quot;ir&amp;quot;, b, &amp;quot;reikšmės yra lygios.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Absoliučios&amp;quot;, a, &amp;quot;ir&amp;quot;, b, &amp;quot;reikšmės yra lygios.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programos rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Absoliučios 23 ir -23 reikšmės yra lygios.&lt;br /&gt;
&lt;br /&gt;
Pagrindinis šios programos elementas yra žodis &amp;lt;code&amp;gt;def&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&amp;lt;code&amp;gt;def&amp;lt;/code&amp;gt; yra angliško žodžio &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt;, kuris reiškia apibrėžti, trumpinys, o juo pradedame apibrėžti savo kuriamą funkciją. Po &amp;lt;code&amp;gt;def&amp;lt;/code&amp;gt; eina funkcijos pavadinimas: &amp;lt;code&amp;gt;absoliuti_reikšmė&amp;lt;/code&amp;gt;. Vėliau skliausteliuose eina parametras n - &amp;lt;code&amp;gt;(n)&amp;lt;/code&amp;gt;, kurio reikšmė yra paimama iš programos, kai funkcija yra iškviečiama. Vėliau eina dvitaškis &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;, po kurio esantys teiginiai yra vykdomi naudojant šią funkciją. Teiginiai tęsiami tol, kol pasibaigia funkcijoje nurodyti veiksmai arba grąžinamas norimas rezultatas nurodytas po &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; teiginys grąžina reikšmę į vietą, kur buvo iškviesta funkcija, kaip pirmoje mūsų kurtoje programoje rezultatas buvo grąžintas, kur kvietėme &amp;lt;code&amp;gt;print()&amp;lt;/code&amp;gt; funkciją. Na, o dabar galime kurti naujas funkcijas.&lt;br /&gt;
&lt;br /&gt;
Ar pastebėjai, kad &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmės nepasikeitė?&lt;br /&gt;
&lt;br /&gt;
Funkcijos gali būti naudojamos kartojant užduotis, kurios negrąžina reikšmių. Štai keli pavyzdžiai:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def labas():&lt;br /&gt;
    print(&amp;quot;Labas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def plotas(plotis, aukštis):&lt;br /&gt;
    return plotis * aukštis&lt;br /&gt;
&lt;br /&gt;
def rašyk_mano_vardas(vardas):&lt;br /&gt;
    print(&amp;quot;Mano vardas&amp;quot;, vardas)&lt;br /&gt;
&lt;br /&gt;
labas()&lt;br /&gt;
labas()&lt;br /&gt;
&lt;br /&gt;
rašyk_labas(&amp;quot;Fredas&amp;quot;)&lt;br /&gt;
w = 4&lt;br /&gt;
h = 5&lt;br /&gt;
print(&amp;quot;plotis =&amp;quot;, w, &amp;quot; aukštis=&amp;quot;, h, &amp;quot; plotas=&amp;quot;, plotas(w, h))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
programos rezultatas&lt;br /&gt;
&lt;br /&gt;
 Labas&lt;br /&gt;
 Labas&lt;br /&gt;
 Mano vardas Fredas&lt;br /&gt;
 plotis = 4  aukštis = 5  plotas = 20&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys parodo ir daugiau dalykų, kuriuos galima padaryti su funkcijomis. Atkreipk dėmesį, kad galima nenaudoti argumentų arba galima naudoti du argumentus, ar daugiau. Šis pavyzdys rodo dar kelis svarbius dalykus, kuriuos gali padaryti naudojant funkcijas. Taip pat atkreipk dėmesį, kad funkcijai nereikia grąžinti vertės - grąžinimas yra neprivalomas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Funkcijos gali būti naudojamos pakartotiniam kodui pašalinti. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kintamieji funkcijose ===&lt;br /&gt;
Dažnai pasitaiko, kad pasikartojančiam kode yra kintamųjų, todėl į juos reikia atkreipti dėmesį, kai šaliname pakartotiną kodą. Iki šiol visi kintamieji, kuriuos matėme yra globalūs kintamieji, o funkcijose esantys kintamieji yra vadinami specialiu pavadinimu - lokalūs kintamieji. Šie kintamieji egzistuoja tik veikiant funkcijai. Kai lokalus kintamasis turi globalaus kintamojo pavadinimą, tai funkcijoje pirmenybė teikiama ir naudojamas lokalus kintamasis. Skamba painiai? Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 4&lt;br /&gt;
 &lt;br /&gt;
def manoFunkcija():&lt;br /&gt;
    a = 17&lt;br /&gt;
    print(&amp;quot;Mano funkcijoje a =&amp;quot;, a)&lt;br /&gt;
&lt;br /&gt;
manoFunkcija()&lt;br /&gt;
print(&amp;quot;a = &amp;quot;, a)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gaunamas rezultatas&lt;br /&gt;
 Mano funkcijoje a = 17&lt;br /&gt;
 a = 4&lt;br /&gt;
&lt;br /&gt;
Kaip matai pavyzdyje, funkcijos viduje esantis kintamasis nepaiso globalaus kintamojo, nes jis egzistuoja tik funkcijos viduje. Taip pat, turėjai pastebėti, kad funkcijos viduje kintamajam &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; buvo priskirta nauja reikšmė, bet ji buvo aktuali tik funkcijoje, o ne už jos ribų - globalus kintamasis &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; liko nepakitęs.&lt;br /&gt;
&lt;br /&gt;
Kitas kiek sudėtingesnis kodo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a_var = 10&lt;br /&gt;
b_var = 15&lt;br /&gt;
e_var = 25&lt;br /&gt;
&lt;br /&gt;
def funkcija(a_var):&lt;br /&gt;
    print(&amp;quot;funkcijoje a_var =&amp;quot;, a_var)&lt;br /&gt;
    b_var = 100 + a_var&lt;br /&gt;
    d_var = 2 * a_var&lt;br /&gt;
    print(&amp;quot;funkcijoje  b_var =&amp;quot;, b_var)&lt;br /&gt;
    print(&amp;quot;funkcijoje  d_var =&amp;quot;, d_var)&lt;br /&gt;
    print(&amp;quot;funkcijoje  e_var =&amp;quot;, e_var)&lt;br /&gt;
    return b_var + 10&lt;br /&gt;
&lt;br /&gt;
c_var = funkcija(b_var)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;a_var =&amp;quot;, a_var)&lt;br /&gt;
print(&amp;quot;b_var =&amp;quot;, b_var)&lt;br /&gt;
print(&amp;quot;c_var =&amp;quot;, c_var)&lt;br /&gt;
print(&amp;quot;d_var =&amp;quot;, d_var)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rezultatas:&lt;br /&gt;
&lt;br /&gt;
 funkcijoje  a_var =  15&lt;br /&gt;
 funkcijoje  b_var =  115&lt;br /&gt;
 funkcijoje  d_var =  30&lt;br /&gt;
 funkcijoje  e_var =  25&lt;br /&gt;
 a_var =  10&lt;br /&gt;
 b_var =  15&lt;br /&gt;
 c_var =  125&lt;br /&gt;
 d_var = &lt;br /&gt;
 &lt;br /&gt;
 Klaida (paskutinė aptikta klaida):&lt;br /&gt;
  File &amp;quot;C:\def2.py&amp;quot;, eilutė 19, in &amp;lt;module&amp;gt; (modulyje)&lt;br /&gt;
    print(&amp;quot;d_var = &amp;quot;, d_var)&lt;br /&gt;
 NameError: pavadinimas 'd_var' yra neapibrėžtas&lt;br /&gt;
&lt;br /&gt;
Šiame pavyzdyje kintamieji &amp;lt;code&amp;gt;a_var&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b_var&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;d_var&amp;lt;/code&amp;gt; yra lokalūs kintamieji priklausantys funkcijai &amp;lt;code&amp;gt;funkcija()&amp;lt;/code&amp;gt;. Po argumento &amp;lt;code&amp;gt;return b_var + 10&amp;lt;/code&amp;gt; visi jie nustoja egzistuoti. Kintamasis &amp;lt;code&amp;gt;a_var&amp;lt;/code&amp;gt; yra parametro pavadinimas, todėl tai jį automatiškai padaro lokaliu kintamuoju. Kintamieji &amp;lt;code&amp;gt;b_var&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;d_var&amp;lt;/code&amp;gt; yra lokalūs kintamieji, nes jie - rodomi funkcijos lygybės ženklo kairėje pusėje esančiuose teiginiuose &amp;lt;code&amp;gt;b_var = 100 + a_var&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;d_var = 2 * a_var&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Funkcijos &amp;lt;code&amp;gt;funkcija()&amp;lt;/code&amp;gt; viduje nėra jai priskirtos vertės. Kai funkcija iškviečiama naudojant &amp;lt;code&amp;gt;c_var = funkcija(b_var)&amp;lt;/code&amp;gt;, 15 priskiriama &amp;lt;code&amp;gt; a_var &amp;lt;/code&amp;gt;, nes tuo metu &amp;lt;code&amp;gt; _var&amp;lt;/code&amp;gt; yra 15, kai kviečiama funkcija &amp;lt;code&amp;gt;funkcija(15)&amp;lt;/code&amp;gt;. Galiausiai &amp;lt;code&amp;gt;a_var&amp;lt;/code&amp;gt; reikšmė nustatoma į 15, kai jis yra funkcijos &amp;lt;code&amp;gt;funkcija()&amp;lt;/code&amp;gt; viduje.&lt;br /&gt;
&lt;br /&gt;
Kaip matai, pasibaigus funkcijai, lokalūs kintamieji &amp;lt;code&amp;gt;a_var&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b_var&amp;lt;/code&amp;gt;, kurie buvo naudojami vietoj globalių kintamųjų dingo. Tada teiginys &amp;lt;code&amp;gt;print (&amp;quot;a_var =&amp;quot;, a_var)&amp;lt;/code&amp;gt; atspausdina reikšmę &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;, o ne reikšmę &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt; kai dingo lokalus kintamasis, kuris slėpė globalaus kintamojo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Taip pat, atkreipk dėmesį į klaidą &amp;lt;code&amp;gt; NameError &amp;lt;/code&amp;gt;, kuri atsiranda mūsų programos pabaigoje. Tai nutinka, nes kintamasis &amp;lt;code&amp;gt;d_var&amp;lt;/code&amp;gt; nebeegzistuoja nuo tada, kai baigėsi &amp;lt;code&amp;gt;funkcija()&amp;lt;/code&amp;gt;. Išjungus funkciją, visi lokalūs kintamieji ištrinami. Jeigu nori, ką nors gauti iš funkcijos, turėsi naudoti žodį &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Paskutinis dalykas, į kurį reikia atkreipti dėmesį, yra tai, kad funkcijos viduje &amp;lt;code&amp;gt;e_var&amp;lt;/code&amp;gt; vertė išlieka nepakitusi, nes tai nėra parametras ir jis niekada nerodomas kairėje funkcijos pusėje. &amp;lt;code&amp;gt;a_func&amp;lt;/code&amp;gt;. Kai funkcijos viduje pasiekiamas globalus kintamasis, tai yra išorinis kintamasis esantis už funkcijos ribų.&lt;br /&gt;
&lt;br /&gt;
Funkcijos naudoja lokalius kintamuosius, kurie egzistuoja tik funkcijos viduje, ir gali ignoruoti kitus kintamuosius, kurie yra už funkcijos ribų.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
'''temperatūra2.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#! /usr/bin/python&lt;br /&gt;
#-*-coding: utf-8 -*-&lt;br /&gt;
# konvertuoja temperatūrą į Farenheitus ar Celsijų&lt;br /&gt;
 &lt;br /&gt;
def spausdinti_pasirinkimus():&lt;br /&gt;
    print(&amp;quot;Pasirinkimai:&amp;quot;)&lt;br /&gt;
    print(&amp;quot; 'p' spausdinti pasirinkimus&amp;quot;)&lt;br /&gt;
    print(&amp;quot; 'c' konvertuoti iš Celsijaus&amp;quot;)&lt;br /&gt;
    print(&amp;quot; 'f' konvertuoti iš Farenheitų&amp;quot;)&lt;br /&gt;
    print(&amp;quot; 'q' išjungti programą&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
def celsijus_į_farenheitus(c_temp):&lt;br /&gt;
    return 9.0 / 5.0 * c_temp + 32&lt;br /&gt;
 &lt;br /&gt;
def farenheitai_į_celsijų(f_temp):&lt;br /&gt;
    return (f_temp - 32.0) * 5.0 / 9.0&lt;br /&gt;
 &lt;br /&gt;
pasirinkimas = &amp;quot;p&amp;quot;&lt;br /&gt;
while pasirinkimas != &amp;quot;q&amp;quot;:&lt;br /&gt;
    if pasirinkimas == &amp;quot;c&amp;quot;:&lt;br /&gt;
        c_temp = float(input(&amp;quot;Celsijaus temperatūra: &amp;quot;))&lt;br /&gt;
        print(&amp;quot;Farenheitai:&amp;quot;, celsijus_į_farenheitus(c_temp))&lt;br /&gt;
        pasirinkimas = input(&amp;quot;pasirinkimas: &amp;quot;)&lt;br /&gt;
    elif pasirinkimas == &amp;quot;f&amp;quot;:&lt;br /&gt;
        f_temp = float(input(&amp;quot;farenheitai_į_celsijų: &amp;quot;))&lt;br /&gt;
        print(&amp;quot;Celsijus:&amp;quot;, farenheitai_į_celsijų(f_temp))&lt;br /&gt;
        pasirinkimas= input(&amp;quot;pasirinkimas: &amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        pasirinkimas= &amp;quot;p&amp;quot;    #Arba pasirinkimas! = &amp;quot;q&amp;quot;: kad spausdintų&lt;br /&gt;
                        #kai įrašoma, kas nors netikėto&lt;br /&gt;
        spausdinti_pasirinkimus()&lt;br /&gt;
        pasirinkimas = input(&amp;quot;pasirinkimas: &amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kaip tai veikia?:&lt;br /&gt;
&lt;br /&gt;
 Pasirinkimai:&lt;br /&gt;
  'p' spausdinti pasirinkimus&lt;br /&gt;
  'c' konvertuoti iš Celsijaus&lt;br /&gt;
  'f' konvertuoti iš Farenheitų&lt;br /&gt;
  'q' išjungti programą&lt;br /&gt;
 pasirinkimas: '''c'''&lt;br /&gt;
 Celsijaus temperatūra: '''30''' &lt;br /&gt;
 Farenheitai: 86.0&lt;br /&gt;
 pasirinkimas: '''f'''&lt;br /&gt;
 Farenheitų temperatūra: '''60'''&lt;br /&gt;
 Celsijus: 15.5555555556&lt;br /&gt;
 pasirinkimas: '''q'''&lt;br /&gt;
&lt;br /&gt;
'''plotas2.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#! /usr/bin/python&lt;br /&gt;
#-*-coding: utf-8 -*-&lt;br /&gt;
# apskaičiuoja duotą stačiakampio plotą&lt;br /&gt;
&lt;br /&gt;
def pasisveikinimas():&lt;br /&gt;
    print('Labas!')&lt;br /&gt;
 &lt;br /&gt;
def plotas(plotis, aukštis):&lt;br /&gt;
    return plotis * aukštis&lt;br /&gt;
 &lt;br /&gt;
def mano_vardas(vardas):&lt;br /&gt;
    print('Mano vardas yra,', vardas)&lt;br /&gt;
 &lt;br /&gt;
def teigiama_įvestis(sugalvotas_skaičius):&lt;br /&gt;
    skaičius = float(input(sugalvotas_skaičius))&lt;br /&gt;
    while skaičius&amp;lt;= 0:&lt;br /&gt;
        print('Privalo būti teigiamas skaičius')&lt;br /&gt;
        skaičius = float(input(sugalvotas_skaičius))&lt;br /&gt;
    return skaičius&lt;br /&gt;
 &lt;br /&gt;
vardas = input('Tavo vardas: ')&lt;br /&gt;
pasisveikinimas()&lt;br /&gt;
mano_vardas(name)&lt;br /&gt;
print()&lt;br /&gt;
print('Kad rastum stačiakampio plotą,')&lt;br /&gt;
print('įrašyk plotį ir aukštį')&lt;br /&gt;
print()&lt;br /&gt;
w = teigiama_įvestis('Plotis: ')&lt;br /&gt;
h = teigiama_įvestis('Aukštis: ')&lt;br /&gt;
 &lt;br /&gt;
print('Plotis =', w, ' Aukštis =', h, ' Plotas =', area(w, h))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kaip veikia ši programa?&lt;br /&gt;
&lt;br /&gt;
 Tavo vardas: '''Jonas'''&lt;br /&gt;
 Labas!&lt;br /&gt;
 Mano vardas yra Jonas&lt;br /&gt;
 &lt;br /&gt;
 Kad rastum stačiakampio plotą,&lt;br /&gt;
 įrašyk plotį ir aukštį.&lt;br /&gt;
 &lt;br /&gt;
 Plotis: '''-4'''&lt;br /&gt;
 Privalo būti teigiamas skaičius&lt;br /&gt;
 Plotis: '''4'''&lt;br /&gt;
 Aukštis: '''3'''&lt;br /&gt;
 Plotis = 4  Aukštis = 3  Plotas = 12&lt;br /&gt;
&lt;br /&gt;
=== Užduotis ===&lt;br /&gt;
Perrašyk programą plotas2.py, kuri yra aukščiau pateiktame pavyzdyje, kad turėtum atskiras kvadrato, stačiakampio ir apskritimo ploto funkcijas ((&amp;lt;code&amp;gt;3.14 * spindulys**2&amp;lt;/code&amp;gt;). Taip pat šioje programoje turėtų būti sukurtas meniu:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def kvadratas(L):&lt;br /&gt;
    return L * L&lt;br /&gt;
&lt;br /&gt;
def stačiakampis(aukštis, plotis):&lt;br /&gt;
    return aukštis * plotis&lt;br /&gt;
&lt;br /&gt;
def apskritimas(spindulys):&lt;br /&gt;
    return 3.14159 * spindulys** 2&lt;br /&gt;
&lt;br /&gt;
def opcijos():&lt;br /&gt;
    print()&lt;br /&gt;
    print(&amp;quot;Pasirinkimai:&amp;quot;)&lt;br /&gt;
    print(&amp;quot;s = skaičiuoti kvadrato plotą.&amp;quot;)&lt;br /&gt;
    print(&amp;quot;c = skaičiuoti apskritimo plotą.&amp;quot;)&lt;br /&gt;
    print(&amp;quot;r = skaičiuoti stačiakampio plotą.&amp;quot;)&lt;br /&gt;
    print(&amp;quot;q = išeiti&amp;quot;)&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Ši programa apskaičiuos kvadrato, apskritimo ar stačiakampio plotą.&amp;quot;)&lt;br /&gt;
pasirinkimas = &amp;quot;x&amp;quot;&lt;br /&gt;
opcijos()&lt;br /&gt;
while pasirinkimas != &amp;quot;q&amp;quot;:&lt;br /&gt;
    choice = input(&amp;quot;Įrašyk savo pasirinkimą: &amp;quot;)&lt;br /&gt;
    if pasirinkimas== &amp;quot;s&amp;quot;:&lt;br /&gt;
        L = float(input(&amp;quot;Kvadrato kraštinės ilgis: &amp;quot;))&lt;br /&gt;
        print(&amp;quot;Šio kvadrato plotas&amp;quot;, kvadratas(L))&lt;br /&gt;
        opcijos()&lt;br /&gt;
    elif pasirinkimas == &amp;quot;c&amp;quot;:&lt;br /&gt;
        spindulys = float(input(&amp;quot;Apskritimo spindulys yra: &amp;quot;))&lt;br /&gt;
        print(&amp;quot;Apskritimo plotas yra&amp;quot;, apskritimas(spindulys))&lt;br /&gt;
        opcijos()&lt;br /&gt;
    elif pasirinkimas == &amp;quot;r&amp;quot;:&lt;br /&gt;
        plotis = float(input(&amp;quot;Stačiakampio plotis: &amp;quot;))&lt;br /&gt;
        aukštis = float(input(&amp;quot;Stačiakampio aukštis: &amp;quot;))&lt;br /&gt;
        print(&amp;quot;Stačiakampio plotas yra&amp;quot;, kvadratas(plotis, aukštis))&lt;br /&gt;
        opcijos()&lt;br /&gt;
    elif pasirinkimas == &amp;quot;q&amp;quot;:&lt;br /&gt;
        print(&amp;quot; &amp;quot;,end=&amp;quot;&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Neatpažintas pasirinkimas.&amp;quot;)&lt;br /&gt;
        opcijos()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Derinimas |next=Pažangių funkcijų pavyzdys}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3687</id>
		<title>Python Vadovėlis/Daugiau apie tekstines eilutes</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_tekstines_eilutes&amp;diff=3687"/>
		<updated>2021-12-14T15:00:47Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Šiame skyriuje pamatysi, kiek šaunių dalykų galime padaryti su tekstine reikšme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def rėk(tekstinė_reikšmė):&lt;br /&gt;
    for raidei in tekstinė_reikšmė:&lt;br /&gt;
        print(&amp;quot;Duok man &amp;quot; + raidė)&lt;br /&gt;
        print(&amp;quot;'&amp;quot; + raidė + &amp;quot;'&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
rėk(&amp;quot;Ačiū&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def vidurys(tekstas):&lt;br /&gt;
    print(&amp;quot;Raidė esanti viduryje yra:&amp;quot;, tekstas[len(tekstas) // 2])&lt;br /&gt;
&lt;br /&gt;
vidurys(&amp;quot;abcdefg&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;The Python Programming Language&amp;quot;)&lt;br /&gt;
vidurys(&amp;quot;Atlanta&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Duok man A&lt;br /&gt;
 'A'&lt;br /&gt;
 Duok man č&lt;br /&gt;
 'č'&lt;br /&gt;
 Duok man i&lt;br /&gt;
 'i'&lt;br /&gt;
 Duok man ū&lt;br /&gt;
 'ū'&lt;br /&gt;
 Raidė esanti viduryje yra: d&lt;br /&gt;
 Raidė esanti viduryje yra: r&lt;br /&gt;
 Raidė esanti viduryje yra: a&lt;br /&gt;
&lt;br /&gt;
Šios dvi programos rodo, kad tekstinė reikšmė(strings) yra keliais aspektais panaši į sąrašus (list). Funkcija &amp;lt;code&amp;gt;rėk()&amp;lt;/code&amp;gt; rodo, kad ciklas &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; gali būti naudojamas su tekstine reikšme lygiai taip pat kaip ir su sąrašais. Funkcija &amp;lt;code&amp;gt;vidurys()&amp;lt;/code&amp;gt; rodo, kad tekstinėje reikšmėje galima naudotis Python'o programavimo kalboje jau esančia funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt;, taip pat masyvų indeksavimu ir pjaustymu. Dauguma sąrašo (list) funkcijų veikia ir su tekstine reikšme.&lt;br /&gt;
&lt;br /&gt;
Kita šio skyriaus funkcija parodo tam tikras tekstinės reikšmės ypatybes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pavertimas_didžiosiomis_raidėmis(tekstas):&lt;br /&gt;
    ## Ši funkcija, tekstinę reikšmę užrašo didžiosiomis raidėmis&lt;br /&gt;
    didžiosios_raidės = &amp;quot;&amp;quot;&lt;br /&gt;
    for raidei in tekstas:&lt;br /&gt;
        if 'a' &amp;lt;= tekstas &amp;lt;= 'z':&lt;br /&gt;
            lokacija = ord(raidei) - ord('a')&lt;br /&gt;
            naujas_ascii = lokacija + ord('A')&lt;br /&gt;
            raidei= chr(naujas_ascii)&lt;br /&gt;
        didžiosios_raidės = pavertimas_didžiosiomis_raidėmis + raidei&lt;br /&gt;
    return didžiosios_raidės&lt;br /&gt;
&lt;br /&gt;
print(pavertimas_didžiosiomis_raidėmis(&amp;quot;Įrašytas tekstas&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 ĮRAŠYTAS TEKSTAS&lt;br /&gt;
&lt;br /&gt;
Tai veikia, nes kompiuteris tekstinės reikšmės simbolius šifruoja skaičiais nuo 0 iki 1 114 111. Visos šios tekstinės reikšmės turi savo unikalias unikodo reikšmes. Pavyzdžiui, simboliui „A“ yra priskirtas skaičius 65, simbolis „B“ kompiuterio suprantamas kaip 66, o simbolis א yra 1488. Python'o programavimo kalba turi funkciją, vadinamą &amp;lt;code&amp;gt;ord()&amp;lt;/code&amp;gt; (trumpinys angliško žodžio ordinal, kuris reiškia iš eilės), kuri grąžina simbolį kaip skaičių. Taip pat Python'o programavimo kalba turi ir atvirkščią funkciją, vadinamą &amp;lt;code&amp;gt;chr()&amp;lt;/code&amp;gt;, kuri skaičių paverčia simboliu. Supratus, kaip veikia šios funkcijos aukščiau užrašyta programa turėtų atrodyti logiška.&lt;br /&gt;
&lt;br /&gt;
Programos pirmoji eilutė &amp;lt;code&amp;gt;if 'a' &amp;lt;= simbolis &amp;lt;= 'z':&amp;lt;/code&amp;gt; patikrina, ar raidė yra mažoji. Jeigu taip, tada naudojamos kitos programos eilutės:&lt;br /&gt;
Pirmiausia eilutė &amp;lt;code&amp;gt;lokacija= ord(simbolis) - ord('a')&amp;lt;/code&amp;gt; nurodo simbolio vietą: a = 0, b = 1, c = 2 ir t.t. &lt;br /&gt;
Tada nauja reikšmė randama su kodo eilute &amp;lt;code&amp;gt;naujas_ascii = lokacija + ord ('A')&amp;lt;/code&amp;gt;. &lt;br /&gt;
Tada ši reikšmė paverčiama atgal į simbolį, kuris dabar yra didžioji raidė. &lt;br /&gt;
&lt;br /&gt;
Žinoma, tai tik programos pavyzdys, daug paprasčiau tai padaryti gali pasinaudodamas šiuo &amp;lt;code&amp;gt;metodu=var.upper()&amp;lt;/code&amp;gt;, kuris veikia su visomis kalbomis.&lt;br /&gt;
&lt;br /&gt;
O dabar pabandykime pasižiūrėti į šį pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''2'''&lt;br /&gt;
 2&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(2)'''&lt;br /&gt;
 '2'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''-123'''&lt;br /&gt;
 -123&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(-123)'''&lt;br /&gt;
 '-123'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot;'''&lt;br /&gt;
 '23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;)'''&lt;br /&gt;
 23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;23&amp;quot; * 2'''&lt;br /&gt;
 '2323'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(&amp;quot;23&amp;quot;) * 2'''&lt;br /&gt;
 46&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į tekstinę reikšmę'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1.23)'''&lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Skaičius po kablelio į skaičių'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''1.23'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(1.23)'''&lt;br /&gt;
 1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''int(-1.23)'''&lt;br /&gt;
 -1&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''# Tekstinė reikšmė į skaičių po kablelio'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;1.23&amp;quot;)'''&lt;br /&gt;
 1.23&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;1.23&amp;quot;''' &lt;br /&gt;
 '1.23'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''float(&amp;quot;123&amp;quot;)'''&lt;br /&gt;
 123.0&lt;br /&gt;
&lt;br /&gt;
Jeigu dar nesupratai, tai funkcija &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; konvertuoja skaičių į tekstinę reikšmę, o funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į skaičių. Funkcija &amp;lt;code&amp;gt;float()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę arba skaičių į skaičių po kablelio. Grįžtant prie funkcijos &amp;lt;code&amp;gt;str()&amp;lt;/code&amp;gt; - ji grąžina tekstinę įrašytos reikšmės versiją. Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(1)'''&lt;br /&gt;
 '1'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str(234.14)'''&lt;br /&gt;
 '234.14'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''str([4, 42, 10])'''&lt;br /&gt;
 '[4, 42, 10]'&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę (ar skaičių su reikšme po kablelio) į sveikąjį skaičių. Panaši funkcija &amp;lt;Code&amp;gt;float&amp;lt;/code&amp;gt; konvertuoja skaičių ar tekstinę reikšmę į skaičių su reikšme po kablelio. Taip pat Python'o programavimo kalba turi funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt;, kuri grąžina eilutės tipą. Pavyzdžiui:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
v = '123'&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = 645.123&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
v = [1, 2, 3]&lt;br /&gt;
print(type(v))&lt;br /&gt;
# &amp;lt;class 'list'&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu pamatai funkciją &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; tai pasitikrink, ar grąžinamas toks reikšmės tipas, kurio tikėjaisi.&lt;br /&gt;
&lt;br /&gt;
Taip pat naudingas ir dažnai paprastose užduotyse naudojamas metodas &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''&amp;quot;Čia yra tik ždožių kratinys&amp;quot;.split()'''&lt;br /&gt;
 ['Čia', 'yra', 'tik', 'žodžių', 'kratinys']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas= &amp;quot;Pirma partija, antra partija, trečia, ketvirta&amp;quot;'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 ['Pirma partija', ' antra partija', ' trečia', ' ketvirta']&lt;br /&gt;
&lt;br /&gt;
Ar pastebėjai kaip &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; konvertuoja tekstinę reikšmę į tekstinių reikšmių sąrašą (angl. list)? Pagal numatytus nustatymus tekstinė reikšmė padalijama pagal nurodytus tarpus, šiuo atveju pagal nurodytą argumentą - kablelį.&lt;br /&gt;
Taip pat galima pridėti ir kitą argumentą, kuris nurodo &amp;lt;code&amp;gt;split()&amp;lt;/code&amp;gt; funkcijai, kurioje sąrašo vietoje reikia atskirti tekstą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas= tekstas.split(&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(sąrašas)'''&lt;br /&gt;
 4&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' ketvirta'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''list = tekstas.split(&amp;quot;,&amp;quot;, 2)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''len(list)'''&lt;br /&gt;
 3&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''sąrašas[-1]'''&lt;br /&gt;
 ' trečia, ketvirta'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO add more on strings --&amp;gt;&lt;br /&gt;
=== Tekstinės (ir sąrašo) reikšmės pjaustymas (Slicing strings(and lists) ===&lt;br /&gt;
&lt;br /&gt;
Tekstinę reikšmę galima pjaustyti/skaidyti į skirtingas mažesnes reikšmes. Tą jau matei ankstesniame pavyzdyje, kai laužtiniuose skliaustuose &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; buvo nurodyta reikiama teksto vieta. Pjaustymo operatorius veikia taip: &amp;lt;code&amp;gt;tekstas[pradžios_indeksas:pabaigos_indeksas]&amp;lt;/code&amp;gt; (retais atvejais galime pridėti dar ir trečią argumentą, kaip apačioje esančiame pavyzdyje)&lt;br /&gt;
&lt;br /&gt;
Kad nesusipainiotum įrašydamas indekso skaičius, įsivaizduok, kad žirklėmis karpai tekstą, o programai nurodai, kurioje vietoje kirpti. Štai vienas pavyzdys, kaip tai viekia - geltonai pažymėtos kirpimo vietos, o raudonai ir mėlynai indekso numeris&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{| style=&amp;quot;text-align:center&amp;quot; cellspacing=&amp;quot;0px&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |0&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:red&amp;quot; |2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; | ...&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -2&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex;color:blue&amp;quot; | -1&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:2ex&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;darr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| tekstas = &lt;br /&gt;
|&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!S &lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!T&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!R&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!I&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!N&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
!G&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&lt;br /&gt;
|&lt;br /&gt;
| style=&amp;quot;background:#FFFF88&amp;quot; |&amp;amp;uarr;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[:&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|:]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Įsidėmėk, kad raudonai pažymėti indeksai skaičiuojami nuo pradžios, o mėlyni atvirkščiai nuo kito galo t.y. teksto pabaigos. Taip pat ar pastebėjai, kad skaičiuojant nuo galo nėra -0 reikšmės? Taip yra todėl, kad 0 visada priskiriamas tik reikšmės pradžiai:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[1:4] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;TRI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:5] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRIN&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[-4:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;RING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[2] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;R&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[:] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;STRING&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|tekstas[::-1] || style=&amp;quot;width:3em;text-align:center&amp;quot; | &amp;amp;rarr; || &amp;quot;GNIRTS&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;tekstas[1:4]&amp;lt;/tt&amp;gt; duoda visas &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; reikšmes tarp 1 ir 4, &amp;quot;&amp;lt;tt&amp;gt;TRI&amp;lt;/tt&amp;gt;&amp;quot;. Jei praleisi vieną iš argumentų [pradžios_indeksas:pabaigos indeksas], automatiškai gausi tekstinę reikšmę nuo pradžios ar pabaigos: &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt; atspausdina&amp;quot;&amp;lt;tt&amp;gt;STRIN&amp;lt;/tt&amp;gt;&amp;quot;. Taip pat, tiek su &amp;lt;tt&amp;gt;pradžios_indeksas&amp;lt;/tt&amp;gt;, tiek su &amp;lt;tt&amp;gt;pabaigos_indeksas&amp;lt;/tt&amp;gt; galime naudoti raudonai ir mėlynai pavaizduotą skaičiavimo schemą - t.y. galime skaičuoti nuo pradžios, arba nuo pabaigos: &amp;lt;tt&amp;gt;tekstas[:-1]&amp;lt;/tt&amp;gt; duoda tą patį rezultatą kaip &amp;lt;tt&amp;gt;tekstas[:5]&amp;lt;/tt&amp;gt;, todėl, kad indekas -1 šiame žodyje yra toje pačioje vietoje kaip indeksas 5. Jeigu nenaudojame argumento kartu su dvitaškiu, tai skaičius traktuojamas kitaip, pavyzdžiui: &amp;lt;tt&amp;gt;tekstas[2]&amp;lt;/tt&amp;gt; duoda vieną raidę, kuri yra nurodytoje vietoje, šiuo atveju &amp;quot;&amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt;&amp;quot;. Speciali pjaustymo operacija &amp;lt;tt&amp;gt;tekstas[:]&amp;lt;/tt&amp;gt; reiškia nuo pradžios iki pabaigos ir duodą visos tekstinės reikšmės ar sąrašo (list) kopiją. &lt;br /&gt;
&lt;br /&gt;
Na ir galiausiai, pjaustymo operacija gali turėti ir trečią argumentą, kuris suprantamas, kaip „žingsnio dydis“: &amp;lt;tt&amp;gt;tekstas[::-1]&amp;lt;/tt&amp;gt; yra &amp;lt;tt&amp;gt;tekstas&amp;lt;/tt&amp;gt; nuo pradžios iki pabaigos, kai nurodytas žingsnio dydis yra -1. Tai reiškia - kiekviena raidė, tik atvirkštine eilės tvarka. &amp;quot;&amp;lt;tt&amp;gt;STRING&amp;lt;/tt&amp;gt;&amp;quot; atvirkščiai yra &amp;quot;&amp;lt;tt&amp;gt;GNIRTS&amp;lt;/tt&amp;gt;&amp;quot; (jeigu nesupratai, tai pabandyk prasitestuoti įrašydamas kaip žingsnio ilgį skaičių 2).&lt;br /&gt;
&lt;br /&gt;
Visos šios pjaustymo operacijos veikia ir su sąrašais (lists). Šiuo atveju tekstinę reikšmę galime suprasti, kaip sąrašą, kai visi sąrašo elementai yra atskiros raidės. Iš šio skyriaus atsimink pagrindinį principą - į viską žiūrėk taip lyg karpytum, tai padės nesusipainioti įrašant indeksus.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa reikalauja dešimtainių skaičių supratimo.&lt;br /&gt;
def į_tekstą(į_skaičių):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja skaičių į tekstą&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    tekstas = &amp;quot;&amp;quot;&lt;br /&gt;
    prefiksas = &amp;quot;&amp;quot;&lt;br /&gt;
    if į_skaičių &amp;lt; 0:&lt;br /&gt;
        prefiksas = &amp;quot;-&amp;quot;&lt;br /&gt;
        į_skaičių = -į_skaičių&lt;br /&gt;
    while į_skaičių // 10 != 0:&lt;br /&gt;
        out_str = str(į_skaičių % 10) + tekstas&lt;br /&gt;
        į_skaičių= į_skaičių// 10&lt;br /&gt;
    tekstas = str(į_skaičių % 10) + tekstas&lt;br /&gt;
    return prefiksas + tekstas&lt;br /&gt;
&lt;br /&gt;
def į_skaičių(į_tekstą):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Konvertuoja tekstą į skaičių&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    skaičius = 0&lt;br /&gt;
    if į_tekstą[0] == &amp;quot;-&amp;quot;:&lt;br /&gt;
        daugiklis = -1&lt;br /&gt;
        į_tekstą = į_tekstą[1:]&lt;br /&gt;
    else:&lt;br /&gt;
        daugiklis = 1&lt;br /&gt;
    for c in į_tekstą:&lt;br /&gt;
        skaičius = skaičius* 10 + int(c)&lt;br /&gt;
    return skaičius * daugiklis&lt;br /&gt;
&lt;br /&gt;
print(į_tekstą(2))&lt;br /&gt;
print(į_tekstą(23445))&lt;br /&gt;
print(į_tekstą(-23445))&lt;br /&gt;
print(į_skaičių(&amp;quot;14234&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;12345&amp;quot;))&lt;br /&gt;
print(į_skaičių(&amp;quot;-3512&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 2&lt;br /&gt;
 23445&lt;br /&gt;
 -23445&lt;br /&gt;
 14234&lt;br /&gt;
 12345&lt;br /&gt;
 -3512&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Daugiau apie sąrašus |next=Failų IO}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Fail%C5%B3_tvarkymas&amp;diff=3686</id>
		<title>Python Vadovėlis/Failų tvarkymas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Fail%C5%B3_tvarkymas&amp;diff=3686"/>
		<updated>2021-12-14T14:48:21Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Failų I/O ===&lt;br /&gt;
&lt;br /&gt;
Štai paprastas failo I/O (ang. Input/Output, lt. Įvesties/Išvesties) pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Rašyti į failą&lt;br /&gt;
with open(&amp;quot;testas.txt&amp;quot;, &amp;quot;wt&amp;quot;) as rašomas_failas:&lt;br /&gt;
    rašomas_failas.write(&amp;quot;Šis tekstas bus išsiųstas į failą\nPažiūrėk ir pamatysi!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Skaityti failą&lt;br /&gt;
with open(&amp;quot;testas.txt&amp;quot;, &amp;quot;rt&amp;quot;) as skaitomas_failas:&lt;br /&gt;
    tekstas = skaitomas_failas.read()&lt;br /&gt;
&lt;br /&gt;
print(tekstas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Failo &amp;lt;code&amp;gt;testas.txt&amp;lt;/code&amp;gt; išvestis ir turinys yra:&lt;br /&gt;
&lt;br /&gt;
 Šis tekstas bus išsiųstas į failą&lt;br /&gt;
 Pažiūrėk ir pamatysi!&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad programa sukūrė failą pavadinimu &amp;lt;code&amp;gt;testas.txt&amp;lt;/code&amp;gt; kataloge, iš kurio paleidai programą.  Eilutėje esantis &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt; nurodo Python'ui įterpti ''n''aują eilutę toje vietoje.  &lt;br /&gt;
&lt;br /&gt;
Apžvelkime failų I/O:&lt;br /&gt;
* Gauk failo objektą su funkcija &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;&lt;br /&gt;
* Skaityk iš arba rašyk į failo objektą (priklausomai nuo to, kokiu režimu jis buvo atidarytas)&lt;br /&gt;
* Jeigu failui atidaryti nenaudojai funkcijos &amp;lt;code&amp;gt;with&amp;lt;/code&amp;gt;, turėsi jį uždaryti rankiniu būdu&lt;br /&gt;
&lt;br /&gt;
Pirmas žingsnis yra gauti failo objektą. Tai galima padaryti naudojant funkciją &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;. Formatas yra &amp;lt;code&amp;gt;failo_objektas = open(failo_pavadinimas, režimas)&amp;lt;/code&amp;gt;, kur &amp;lt;code&amp;gt;failo_objektas&amp;lt;/code&amp;gt; yra kintamasis, į kurį reikia įdėti failo objektą, &amp;lt;code&amp;gt;failo_pavadinimas&amp;lt;/code&amp;gt; yra eilutė su failo pavadinimu, o &amp;lt;code&amp;gt;režimas&amp;lt;/code&amp;gt; yra &amp;lt;code&amp;gt;&amp;quot;rt&amp;quot;&amp;lt;/code&amp;gt;, kad (ang. ''r''ead) skaityti failą kaip ''t''ekstą arba &amp;lt;code&amp;gt;&amp;quot;wt&amp;quot;&amp;lt;/code&amp;gt; (''w''rite) rašytį į failą kaip ''t''ekstą (ir keletą kitų režimų, kuriuos čia praleisime). Toliau galima iškviesti failų objektų funkcijas. Dvi dažniausiai naudojamos funkcijos yra &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; (skaityti) ir &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt; (rašyti). Funkcija &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt; prideda eilutę prie failo pabaigos. Funkcija &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; nuskaito kitą failo elementą ir grąžina jį kaip eilutę. Jei joks argumentas nepateiktas, funkcija grąžins visą failą (kaip padaryta pavyzdyje).&lt;br /&gt;
&lt;br /&gt;
O dabar čia yra nauja telefono numerių programos versija, kurią jau sukūrei anksčiau:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def spausdink_numerius(numeriai):&lt;br /&gt;
    print(&amp;quot;Telefono numeriai:&amp;quot;)&lt;br /&gt;
    for k, v in numeriai.items():&lt;br /&gt;
        print(&amp;quot;Vardas:&amp;quot;, k, &amp;quot;\tTelefono numeris:&amp;quot;, v)&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
def pridėk_numerį(numeriai, vardas, numeris):&lt;br /&gt;
    numeriai[vardas] = numeris&lt;br /&gt;
&lt;br /&gt;
def surask_numerį(numeriai, vardas):&lt;br /&gt;
    if vardas in numeriai:&lt;br /&gt;
        return &amp;quot;Telefono numeris yra &amp;quot; + numeriai[vardas]&lt;br /&gt;
    else:&lt;br /&gt;
        return vardas + &amp;quot; nebuvo rastas&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def pašalink_numerį(numeriai, vardas):&lt;br /&gt;
    if vardas in numeriai:&lt;br /&gt;
        del numeriai[vardas]&lt;br /&gt;
    else:&lt;br /&gt;
        print(vardas,&amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def įkelti_numerius(numeriai, failo_pavadinimas):&lt;br /&gt;
    skaitymo_failas = open(failo_pavadinimas, &amp;quot;rt&amp;quot;)&lt;br /&gt;
    while True:&lt;br /&gt;
        skaitoma_eilutė = skaitymo_failas.readline()&lt;br /&gt;
        if not skaitoma_eilutė:&lt;br /&gt;
            break&lt;br /&gt;
        skaitoma_eilutė = skaitoma_eilutė[:-1]&lt;br /&gt;
        vardas, numeris = skaitoma_eilutė.split(&amp;quot;,&amp;quot;)&lt;br /&gt;
        numeriai[vardas] = numeris&lt;br /&gt;
    skaitymo_failas.close()&lt;br /&gt;
&lt;br /&gt;
def išsaugoti_numerius(numeriai, failo_pavadinimas):&lt;br /&gt;
    išvesties_failas = open(failo_pavadinimas, &amp;quot;wt&amp;quot;)&lt;br /&gt;
    for k, v in numeriai.items():&lt;br /&gt;
        išvesties_failas.write(k + &amp;quot;,&amp;quot; + v + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    išvesties_failas.close()&lt;br /&gt;
&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print('1. Spausdink telefonų numerius')&lt;br /&gt;
    print('2. Pridėk telefono numerį')&lt;br /&gt;
    print('3. Pašalink telefono numerį')&lt;br /&gt;
    print('4. Ieškok telefono numerio')&lt;br /&gt;
    print('5. Įkelk telefono numerius')&lt;br /&gt;
    print('6. Išsaugok telefono numerius')&lt;br /&gt;
    print('7. Išeik')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
numeriai = {}&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
spausdink_meniu()&lt;br /&gt;
while True:&lt;br /&gt;
    meniu_pasirinkimas = int(input(&amp;quot;Įvesk skaičių (1-7): &amp;quot;))&lt;br /&gt;
    if meniu_pasirinkimas == 1:&lt;br /&gt;
        spausdink_numerius(numeriai)&lt;br /&gt;
    elif meniu_pasirinkimas == 2:&lt;br /&gt;
        print(&amp;quot;Pridėk vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        numeris = input(&amp;quot;Telefono numeris: &amp;quot;)&lt;br /&gt;
        pridėk_numerį(numeriai, vardas, numeris)&lt;br /&gt;
    elif meniu_pasirinkimas == 3:&lt;br /&gt;
        print(&amp;quot;Pašalink vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        pašalink_numerį(numeriai, vardas)&lt;br /&gt;
    elif meniu_pasirinkimas == 4:&lt;br /&gt;
        print(&amp;quot;Ieškok telefono numerio&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        print(surask_numerį(numeriai, vardas))&lt;br /&gt;
    elif meniu_pasirinkimas == 5:&lt;br /&gt;
        failo_pavadinimas = input(&amp;quot;Failo pavadinimas, kurį nori įkelti: &amp;quot;)&lt;br /&gt;
        įkelti_numerius(numeriai, failo_pavadinimas)&lt;br /&gt;
    elif meniu_pasirinkimas == 6:&lt;br /&gt;
        failo_pavadinimas = input(&amp;quot;Failo pavadinimas išsaugojimui: &amp;quot;)&lt;br /&gt;
        išsaugoti_numerius(numeriai, failo_pavadinimas)&lt;br /&gt;
    elif meniu_pasirinkimas == 7:&lt;br /&gt;
        break&lt;br /&gt;
    else:&lt;br /&gt;
        spausdink_meniu()&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Viso!&amp;quot;)  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gali pastebėti, kad dabar kodas papildomai išsaugo ir užkrauna failus. Štai dviejų programos vykdymų išvestis:&lt;br /&gt;
&lt;br /&gt;
 1. Spausdink telefonų numerius&lt;br /&gt;
 2. Pridėk telefono numerį&lt;br /&gt;
 3. Pašalink telefono numerį&lt;br /&gt;
 4. Ieškok telefono numerio&lt;br /&gt;
 5. Įkelk telefono numerius&lt;br /&gt;
 6. Išsaugok telefono numerius&lt;br /&gt;
 7. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-7): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Liepa'''&lt;br /&gt;
 Telefono numeris: '''1234'''&lt;br /&gt;
 Įvesk skaičių (1-7): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Benas'''&lt;br /&gt;
 Telefono numeris: '''4321'''&lt;br /&gt;
 Įvesk skaičių (1-7): '''1'''&lt;br /&gt;
 Telefono numeriai:&lt;br /&gt;
 Vardas: Liepa     Telefono numeris: 1234&lt;br /&gt;
 Vardas: Benas     Telefono numeris: 4321&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-7): '''6'''&lt;br /&gt;
 Failo pavadinimas išsaugojimui: '''numeriai.txt'''&lt;br /&gt;
 Įvesk skaičių (1-7): '''7'''&lt;br /&gt;
 Viso!&lt;br /&gt;
&lt;br /&gt;
 1. Spausdink telefonų numerius&lt;br /&gt;
 2. Pridėk telefono numerį&lt;br /&gt;
 3. Pašalink telefono numerį&lt;br /&gt;
 4. Ieškok telefono numerio&lt;br /&gt;
 5. Įkelk telefono numerius&lt;br /&gt;
 6. Išsaugok telefono numerius&lt;br /&gt;
 7. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-7): '''5'''&lt;br /&gt;
 Failo pavadinimas, kurį nori įkelti: '''numeriai.txt'''&lt;br /&gt;
 Įvesk skaičių (1-7): '''1'''&lt;br /&gt;
 Telefono numeriai:&lt;br /&gt;
 Vardas: Liepa     Telefono numeris: 1234&lt;br /&gt;
 Vardas: Benas     Telefono numeris: 4321&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-7): '''7'''&lt;br /&gt;
 Viso!&lt;br /&gt;
&lt;br /&gt;
Naujos šios programos dalys yra:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def įkelti_numerius(numeriai, failo_pavadinimas):&lt;br /&gt;
    skaitymo_failas = open(failo_pavadinimas, &amp;quot;rt&amp;quot;)&lt;br /&gt;
    while True:&lt;br /&gt;
        skaitoma_eilutė = skaitymo_failas.readline()&lt;br /&gt;
        if not skaitoma_eilutė:&lt;br /&gt;
            break&lt;br /&gt;
        skaitoma_eilutė = skaitoma_eilutė[:-1]&lt;br /&gt;
        vardas, numeris = skaitoma_eilutė.split(&amp;quot;,&amp;quot;)&lt;br /&gt;
        numeriai[vardas] = numeris&lt;br /&gt;
    skaitymo_failas.close()&lt;br /&gt;
&lt;br /&gt;
def išsaugoti_numerius(numeriai, failo_pavadinimas):&lt;br /&gt;
    išvesties_failas = open(failo_pavadinimas, &amp;quot;wt&amp;quot;)&lt;br /&gt;
    for k, v in numeriai.items():&lt;br /&gt;
        išvesties_failas.write(k + &amp;quot;,&amp;quot; + v + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    išvesties_failas.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pirmiausia pažiūrėk į programos išsaugojimo dalį. Visų pirma, sukuriamas failo objektas su komanda &amp;lt;code&amp;gt;open(failo_pavadinimas, &amp;quot;wt&amp;quot;)&amp;lt;/code&amp;gt;. Toliau ji eina ir sukuria eilutę kiekvienam telefono numeriui su komanda &amp;lt;code&amp;gt;išvesties_failas.write(k + &amp;quot;,&amp;quot; + v + &amp;quot;\n&amp;quot;)&amp;lt;/code&amp;gt;. Tai išrašo eilutę, kurioje yra vardas, kablelis, telefono numeris, o po jos rašoma nauja eilutė.&lt;br /&gt;
&lt;br /&gt;
Užkrovimo dalis yra šiek tiek sudėtingesnė. Ji prasideda failo objekto gavimu. Tada ji naudoja &amp;lt;code&amp;gt;while True:&amp;lt;/code&amp;gt; ciklą, kad tęstųsi ciklas tol, kol bus aptiktas &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; teiginys. Toliau nuskaitoma eilutė su kodu &amp;lt;code&amp;gt;skaitoma_eilutė = skaitymo_failas.readline()&amp;lt;/code&amp;gt;. Pasiekus failo pabaigą, funkcija &amp;lt;code&amp;gt;readline&amp;lt;/code&amp;gt; grąžins tuščią eilutę. Teiginys &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; tai patikrina ir panaudojant kodą &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; nutraukia &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; ciklą. Žinoma, jei funkcija &amp;lt;code&amp;gt;readline&amp;lt;/code&amp;gt; negrąžintų naujos eilutės eilutės pabaigoje, nebūtų jokio būdo pasakyti, ar tuščia eilutė yra tuščia eilutė, ar failo pabaiga, todėl nauja eilutė įtraukiama į tai ką grąžina funckoja &amp;lt;code&amp;gt;readline&amp;lt;/code&amp;gt;. Taigi turime atsikratyti tos naujos eilutės. Eilutė &amp;lt;code&amp;gt;skaitoma_eilutė = skaitoma_eilutė[:-1]&amp;lt;/code&amp;gt; tai padaro už mus, išmesdama paskutinį simbolį. Toliau eilutė &amp;lt;code&amp;gt;vardas, numeris = skaitoma_eilutė.split(&amp;quot;,&amp;quot;)&amp;lt;/code&amp;gt; padalija eilutę ties kableliu į pavadinimą ir telefono numerį. Tada tai įtraukiama į &amp;lt;code&amp;gt;numeriai&amp;lt;/code&amp;gt; žodyną&lt;br /&gt;
&lt;br /&gt;
=== Pažangesnis .txt failų naudojimas ===&lt;br /&gt;
&lt;br /&gt;
Galbūt tau kyla toks klausimas: „Aš žinau, kaip skaityti ir rašyti tekstinį failą, bet ką daryti, jei noriu atspausdinti failą neatidaręs kitos programos?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Yra keletas skirtingų būdų, kaip tai padaryti. Iš tikrųjų, lengviausias būdas atidaro kitą programą, tačiau viskuo pasirūpina Python'o kodas ir vartotojui nereikia nurodyti spausdinamo failo. Šis metodas apima kitos programos subproceso (arba antrinis procesas; biblioteka 'subprocess') iškvietimą. &lt;br /&gt;
&lt;br /&gt;
Prisimeni failą, į kurį įrašėme išvestį aukščiau esančioje programoje? Panaudokime tą failą.&lt;br /&gt;
Turėk omenyje, kad norint išvengti klaidų, ši programa naudoja sąvokas iš kito skyriaus. Nedvejodamas gali dar kartą peržiūrėti šį pavyzdį po kito skyriaus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Python&amp;quot;&amp;gt;&lt;br /&gt;
import subprocess&lt;br /&gt;
def pagrindinis():&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;Ši maža programa iškviečia spausdinimo funkciją Notepad programoje&amp;quot;)&lt;br /&gt;
        #Atspausdinkime failą, kurį sukūrėme aukščiau esančioje programoje&lt;br /&gt;
        subprocess.call(['notepad','/p','numeriai.txt'])&lt;br /&gt;
    except WindowsError:&lt;br /&gt;
        print(&amp;quot;Pakviesto subproceso nėra arba jo negalima iškviesti.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
pagrindinis()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;subprocess.call&amp;lt;/code&amp;gt; turi tris argumentus. Pirmasis argumentas šio pavyzdžio kontekste turėtų būti programos pavadinimas, iš kurios nori iškviesti spausdinimo subprocesą. Antrasis argumentas turėtų būti konkretus tos programos subprocesas. Kad būtų paprasčiau, tiesiog suprask, kad šioje programoje &amp;lt;code&amp;gt;'/p'&amp;lt;/code&amp;gt; yra subprocesas, naudojamas norint pasiekti spausdintuvą per nurodytą programą. Paskutinis argumentas turėtų būti failo pavadinimas, kurį norite siųsti į spausdinimo subprocesą. Šiuo atveju tai yra tas pats failas, naudotas anksčiau šiame skyriuje.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Dabar pakeisk pažymių programą iš skyriaus [[Vadovėlis/Žodynai|Žodynai]], kad ji naudotų failus mokinių pažymiams saugoti.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
užduotys = ['nd sk 1', 'nd sk 2', 'viktorina   ', 'nd sk 3', 'testas']&lt;br /&gt;
mokiniai = { }&lt;br /&gt;
&lt;br /&gt;
def įkelti_pažymius(pažymių_failas):&lt;br /&gt;
    įvesties_failas = open(pažymių_failas, &amp;quot;r&amp;quot;)&lt;br /&gt;
    pažymiai = [ ]&lt;br /&gt;
    while True:&lt;br /&gt;
        mokinys_ir_pažymys = įvesties_failas.readline()&lt;br /&gt;
        mokinys_ir_pažymys = mokinys_ir_pažymys[:-1]&lt;br /&gt;
        if not mokinys_ir_pažymys:&lt;br /&gt;
            break&lt;br /&gt;
        else:&lt;br /&gt;
            mokinio_vardas, mokinio_pažymiai = mokinys_ir_pažymys.split(&amp;quot;,&amp;quot;)&lt;br /&gt;
            mokinio_pažymiai = mokinio_pažymiai.split(&amp;quot; &amp;quot;)&lt;br /&gt;
            mokiniai[mokinio_vardas] = mokinio_pažymiai&lt;br /&gt;
    įvesties_failas.close()&lt;br /&gt;
    print(&amp;quot;Pažymiai įkelti.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def išsaugoti_pažymius(pažymių_failas):&lt;br /&gt;
    išvesties_failas = open(pažymių_failas, &amp;quot;w&amp;quot;)&lt;br /&gt;
    for k, v in mokiniai.items():&lt;br /&gt;
        išvesties_failas.write(k + &amp;quot;,&amp;quot;)&lt;br /&gt;
        for x in v:&lt;br /&gt;
            išvesties_failas.write(str(x) + &amp;quot; &amp;quot;)&lt;br /&gt;
        išvesties_failas.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
    išvesties_failas.close()&lt;br /&gt;
    print(&amp;quot;Pažymiai išsaugoti.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print(&amp;quot;1. Pridėk mokinį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;2. Pašalink mokinį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;3. Įkrauti pažymius&amp;quot;)&lt;br /&gt;
    print(&amp;quot;4. Įrašyk pažymį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;5. Spausdink pažymius&amp;quot;)&lt;br /&gt;
    print(&amp;quot;6. Įšsaugoti pažymius&amp;quot;)&lt;br /&gt;
    print(&amp;quot;7. Spausdink meniu&amp;quot;)&lt;br /&gt;
    print(&amp;quot;9. Išeik&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def spausdink_visus_pažymius():&lt;br /&gt;
    if mokiniai:&lt;br /&gt;
        raktai = sorted(mokiniai.keys())&lt;br /&gt;
        print('\t', end=' ')&lt;br /&gt;
        for x in užduotys:&lt;br /&gt;
            print(x, '\t', end=' ')&lt;br /&gt;
        print()&lt;br /&gt;
        for x in raktai:&lt;br /&gt;
            print(x, '\t', end=' ')&lt;br /&gt;
            pažymiai = mokiniai[x]&lt;br /&gt;
            spausdink_pažymius(pažymiai)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Neradau pažymių spausdinimui.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def spausdink_pažymius(pažymiai):&lt;br /&gt;
    for x in pažymiai:&lt;br /&gt;
        print(x, '\t', end=' ')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
spausdink_meniu()&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
while meniu_pasirinkimas != 9:&lt;br /&gt;
    print()&lt;br /&gt;
    meniu_pasirinkimas = int(input(&amp;quot;Meniu pasirinkimas: &amp;quot;))&lt;br /&gt;
    if meniu_pasirinkimas == 1:&lt;br /&gt;
        vardas = input(&amp;quot;Pridėk mokinį: &amp;quot;)&lt;br /&gt;
        mokiniai[vardas] = [0] * len(užduotys)&lt;br /&gt;
    elif meniu_pasirinkimas == 2:&lt;br /&gt;
        vardas = input(&amp;quot;Pašalink mokinį: &amp;quot;)&lt;br /&gt;
        if vardas in mokiniai:&lt;br /&gt;
            del mokiniai[vardas]&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Mokinys vardu:&amp;quot;, vardas, &amp;quot; nerastas.&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas == 3:&lt;br /&gt;
        pažymių_failas = input(&amp;quot;Įkrauti pažymius iš kokio failo? &amp;quot;)&lt;br /&gt;
        įkelti_pažymius(pažymių_failas)&lt;br /&gt;
    elif meniu_pasirinkimas == 4:&lt;br /&gt;
        print(&amp;quot;Įrašyk pažymį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Mokinys: &amp;quot;)&lt;br /&gt;
        if vardas in mokiniai:&lt;br /&gt;
            pažymiai = mokiniai[vardas]&lt;br /&gt;
            print(&amp;quot;Įrašyk mokinio pažymį&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Įrašyk 0 (nulį), kad išeitum&amp;quot;)&lt;br /&gt;
            for i,x in enumerate(užduotys):&lt;br /&gt;
                print(i + 1, x, '\t', end=' ')&lt;br /&gt;
            print()&lt;br /&gt;
            spausdink_pažymius(pažymiai)&lt;br /&gt;
            kuris = 1234&lt;br /&gt;
            while kuris != -1:&lt;br /&gt;
                kuris = int(input(&amp;quot;Pažymys, kurį nori pakeisti: &amp;quot;))&lt;br /&gt;
                kuris -= 1&lt;br /&gt;
                if 0 &amp;lt;= kuris &amp;lt; len(pažymiai):&lt;br /&gt;
                    pažymys = int(input(&amp;quot;Pažymys: &amp;quot;))&lt;br /&gt;
                    pažymiai[kuris] = pažymys&lt;br /&gt;
                elif kuris != -1:&lt;br /&gt;
                    print(&amp;quot;Klaidingas pažymys&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Mokinys nerastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas == 5:&lt;br /&gt;
        spausdink_visus_pažymius()&lt;br /&gt;
    elif meniu_pasirinkimas == 6:&lt;br /&gt;
        pažymių_failas = input(&amp;quot;Į kokį failą išsaugoti pažymius? &amp;quot;)&lt;br /&gt;
        išsaugoti_pažymius(pažymių_failas)&lt;br /&gt;
    elif meniu_pasirinkimas != 9:&lt;br /&gt;
        spausdink_meniu()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Daugiau apie tekstines eilutes |next=Susidorojimas su netobulumu}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Fail%C5%B3_tvarkymas&amp;diff=3613</id>
		<title>Python Vadovėlis/Failų tvarkymas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Fail%C5%B3_tvarkymas&amp;diff=3613"/>
		<updated>2021-12-13T13:08:18Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Failų I/O ===&lt;br /&gt;
&lt;br /&gt;
Štai paprastas failo I/O (ang. Input/Output, lt. Įvesties/Išvesties) pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Rašyti į failą&lt;br /&gt;
with open(&amp;quot;testas.txt&amp;quot;, &amp;quot;wt&amp;quot;) as rašomas_failas:&lt;br /&gt;
    rašomas_failas.write(&amp;quot;Šis tekstas bus išsiųstas į failą\nPažiūrėk ir pamatysi!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Skaityti failą&lt;br /&gt;
with open(&amp;quot;testas.txt&amp;quot;, &amp;quot;rt&amp;quot;) as skaitomas_failas:&lt;br /&gt;
    tekstas = skaitomas_failas.read()&lt;br /&gt;
&lt;br /&gt;
print(tekstas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Failo &amp;lt;code&amp;gt;testas.txt&amp;lt;/code&amp;gt; išvestis ir turinys yra:&lt;br /&gt;
&lt;br /&gt;
 Šis tekstas bus išsiųstas į failą&lt;br /&gt;
 Pažiūrėk ir pamatysi!&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad programa sukūrė failą pavadinimu &amp;lt;code&amp;gt;testas.txt&amp;lt;/code&amp;gt; kataloge, iš kurio paleidai programą.  Eilutėje esantis &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt; nurodo Python'ui įterpti ''n''aują eilutę toje vietoje.  &lt;br /&gt;
&lt;br /&gt;
Apžvelkime failų I/O:&lt;br /&gt;
* Gauk failo objektą su funkcija &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;&lt;br /&gt;
* Skaityk iš arba rašyk į failo objektą (priklausomai nuo to, kokiu režimu jis buvo atidarytas)&lt;br /&gt;
* Jeigu failui atidaryti nenaudojai funkcijos &amp;lt;code&amp;gt;with&amp;lt;/code&amp;gt;, turėsi jį uždaryti rankiniu būdu&lt;br /&gt;
&lt;br /&gt;
Pirmas žingsnis yra gauti failo objektą. Tai galima padaryti naudojant funkciją &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;. Formatas yra &amp;lt;code&amp;gt;failo_objektas = open(failo_pavadinimas, režimas)&amp;lt;/code&amp;gt;, kur &amp;lt;code&amp;gt;failo_objektas&amp;lt;/code&amp;gt; yra kintamasis, į kurį reikia įdėti failo objektą, &amp;lt;code&amp;gt;failo_pavadinimas&amp;lt;/code&amp;gt; yra eilutė su failo pavadinimu, o &amp;lt;code&amp;gt;režimas&amp;lt;/code&amp;gt; yra &amp;lt;code&amp;gt;&amp;quot;rt&amp;quot;&amp;lt;/code&amp;gt;, kad (ang. ''r''ead) skaityti failą kaip ''t''ekstą arba &amp;lt;code&amp;gt;&amp;quot;wt&amp;quot;&amp;lt;/code&amp;gt; (''w''rite) rašytį į failą kaip ''t''ekstą (ir keletą kitų režimų, kuriuos čia praleisime). Toliau galima iškviesti failų objektų funkcijas. Dvi dažniausiai naudojamos funkcijos yra &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; (skaityti) ir &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt; (rašyti). Funkcija &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt; prideda eilutę prie failo pabaigos. Funkcija &amp;lt;code&amp;gt;read&amp;lt;/code&amp;gt; nuskaito kitą failo elementą ir grąžina jį kaip eilutę. Jei joks argumentas nepateiktas, funkcija grąžins visą failą (kaip padaryta pavyzdyje).&lt;br /&gt;
&lt;br /&gt;
O dabar čia yra nauja telefono numerių programos versija, kurią jau sukūrei anksčiau:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def spausdink_numerius(numeriai):&lt;br /&gt;
    print(&amp;quot;Telefono numeriai:&amp;quot;)&lt;br /&gt;
    for k, v in numeriai.items():&lt;br /&gt;
        print(&amp;quot;Vardas:&amp;quot;, k, &amp;quot;\tTelefono numeris:&amp;quot;, v)&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
def pridėk_numerį(numeriai, vardas, numeris):&lt;br /&gt;
    numeriai[vardas] = numeris&lt;br /&gt;
&lt;br /&gt;
def surask_numerį(numeriai, vardas):&lt;br /&gt;
    if vardas in numeriai:&lt;br /&gt;
        return &amp;quot;Telefono numeris yra &amp;quot; + numeriai[vardas]&lt;br /&gt;
    else:&lt;br /&gt;
        return vardas + &amp;quot; nebuvo rastas&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def pašalink_numerį(numeriai, vardas):&lt;br /&gt;
    if vardas in numeriai:&lt;br /&gt;
        del numeriai[vardas]&lt;br /&gt;
    else:&lt;br /&gt;
        print(vardas,&amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def įkelti_numerius(numeriai, failo_pavadinimas):&lt;br /&gt;
    skaitymo_failas = open(failo_pavadinimas, &amp;quot;rt&amp;quot;)&lt;br /&gt;
    while True:&lt;br /&gt;
        skaitoma_eilutė = skaitymo_failas.readline()&lt;br /&gt;
        if not skaitoma_eilutė:&lt;br /&gt;
            break&lt;br /&gt;
        skaitoma_eilutė = skaitoma_eilutė[:-1]&lt;br /&gt;
        vardas, numeris = skaitoma_eilutė.split(&amp;quot;,&amp;quot;)&lt;br /&gt;
        numeriai[vardas] = numeris&lt;br /&gt;
    skaitymo_failas.close()&lt;br /&gt;
&lt;br /&gt;
def išsaugoti_numerius(numeriai, failo_pavadinimas):&lt;br /&gt;
    išvesties_failas = open(failo_pavadinimas, &amp;quot;wt&amp;quot;)&lt;br /&gt;
    for k, v in numeriai.items():&lt;br /&gt;
        išvesties_failas.write(k + &amp;quot;,&amp;quot; + v + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    išvesties_failas.close()&lt;br /&gt;
&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print('1. Spausdink telefonų numerius')&lt;br /&gt;
    print('2. Pridėk telefono numerį')&lt;br /&gt;
    print('3. Pašalink telefono numerį')&lt;br /&gt;
    print('4. Ieškok telefono numerio')&lt;br /&gt;
    print('5. Įkelk telefono numerius')&lt;br /&gt;
    print('6. Išsaugok telefono numerius')&lt;br /&gt;
    print('7. Išeik')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
numeriai = {}&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
spausdink_meniu()&lt;br /&gt;
while True:&lt;br /&gt;
    meniu_pasirinkimas = int(input(&amp;quot;Įvesk skaičių (1-7): &amp;quot;))&lt;br /&gt;
    if meniu_pasirinkimas == 1:&lt;br /&gt;
        spausdink_numerius(numeriai)&lt;br /&gt;
    elif meniu_pasirinkimas == 2:&lt;br /&gt;
        print(&amp;quot;Pridėk vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        numeris = input(&amp;quot;Telefono numeris: &amp;quot;)&lt;br /&gt;
        pridėk_numerį(numeriai, vardas, numeris)&lt;br /&gt;
    elif meniu_pasirinkimas == 3:&lt;br /&gt;
        print(&amp;quot;Pašalink vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        pašalink_numerį(numeriai, vardas)&lt;br /&gt;
    elif meniu_pasirinkimas == 4:&lt;br /&gt;
        print(&amp;quot;Ieškok telefono numerio&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
        print(surask_numerį(numeriai, vardas))&lt;br /&gt;
    elif meniu_pasirinkimas == 5:&lt;br /&gt;
        failo_pavadinimas = input(&amp;quot;Failo pavadinimas, kurį nori įkelti: &amp;quot;)&lt;br /&gt;
        įkelti_numerius(numeriai, failo_pavadinimas)&lt;br /&gt;
    elif meniu_pasirinkimas == 6:&lt;br /&gt;
        failo_pavadinimas = input(&amp;quot;Failo pavadinimas išsaugojimui: &amp;quot;)&lt;br /&gt;
        išsaugoti_numerius(numeriai, failo_pavadinimas)&lt;br /&gt;
    elif meniu_pasirinkimas == 7:&lt;br /&gt;
        break&lt;br /&gt;
    else:&lt;br /&gt;
        spausdink_meniu()&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Viso!&amp;quot;)  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gali pastebėti, kad dabar kodas papildomai išsaugo ir užkrauna failus. Štai dviejų programos vykdymų išvestis:&lt;br /&gt;
&lt;br /&gt;
 1. Spausdink telefonų numerius&lt;br /&gt;
 2. Pridėk telefono numerį&lt;br /&gt;
 3. Pašalink telefono numerį&lt;br /&gt;
 4. Ieškok telefono numerio&lt;br /&gt;
 5. Įkelk telefono numerius&lt;br /&gt;
 6. Išsaugok telefono numerius&lt;br /&gt;
 7. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-7): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Liepa'''&lt;br /&gt;
 Telefono numeris: '''1234'''&lt;br /&gt;
 Įvesk skaičių (1-7): '''2'''&lt;br /&gt;
 Pridėk vardą ir telefono numerį&lt;br /&gt;
 Vardas: '''Benas'''&lt;br /&gt;
 Telefono numeris: '''4321'''&lt;br /&gt;
 Įvesk skaičių (1-7): '''1'''&lt;br /&gt;
 Telefono numeriai:&lt;br /&gt;
 Vardas: Liepa     Telefono numeris: 1234&lt;br /&gt;
 Vardas: Benas     Telefono numeris: 4321&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-7): '''6'''&lt;br /&gt;
 Failo pavadinimas išsaugojimui: '''numeriai.txt'''&lt;br /&gt;
 Įvesk skaičių (1-7): '''7'''&lt;br /&gt;
 Viso!&lt;br /&gt;
&lt;br /&gt;
 1. Spausdink telefonų numerius&lt;br /&gt;
 2. Pridėk telefono numerį&lt;br /&gt;
 3. Pašalink telefono numerį&lt;br /&gt;
 4. Ieškok telefono numerio&lt;br /&gt;
 5. Įkelk telefono numerius&lt;br /&gt;
 6. Išsaugok telefono numerius&lt;br /&gt;
 7. Išeik&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-7): '''5'''&lt;br /&gt;
 Failo pavadinimas, kurį nori įkelti: '''numeriai.txt'''&lt;br /&gt;
 Įvesk skaičių (1-7): '''1'''&lt;br /&gt;
 Telefono numeriai:&lt;br /&gt;
 Vardas: Liepa     Telefono numeris: 1234&lt;br /&gt;
 Vardas: Benas     Telefono numeris: 4321&lt;br /&gt;
 &lt;br /&gt;
 Įvesk skaičių (1-7): '''7'''&lt;br /&gt;
 Viso!&lt;br /&gt;
&lt;br /&gt;
Naujos šios programos dalys yra:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def įkelti_numerius(numeriai, failo_pavadinimas):&lt;br /&gt;
    skaitymo_failas = open(failo_pavadinimas, &amp;quot;rt&amp;quot;)&lt;br /&gt;
    while True:&lt;br /&gt;
        skaitoma_eilutė = skaitymo_failas.readline()&lt;br /&gt;
        if not skaitoma_eilutė:&lt;br /&gt;
            break&lt;br /&gt;
        skaitoma_eilutė = skaitoma_eilutė[:-1]&lt;br /&gt;
        vardas, numeris = skaitoma_eilutė.split(&amp;quot;,&amp;quot;)&lt;br /&gt;
        numeriai[vardas] = numeris&lt;br /&gt;
    skaitymo_failas.close()&lt;br /&gt;
&lt;br /&gt;
def išsaugoti_numerius(numeriai, failo_pavadinimas):&lt;br /&gt;
    išvesties_failas = open(failo_pavadinimas, &amp;quot;wt&amp;quot;)&lt;br /&gt;
    for k, v in numeriai.items():&lt;br /&gt;
        išvesties_failas.write(k + &amp;quot;,&amp;quot; + v + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    išvesties_failas.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pirmiausia pažiūrėk į programos išsaugojimo dalį. Visų pirma, sukuriamas failo objektas su komanda &amp;lt;code&amp;gt;open(failo_pavadinimas, &amp;quot;wt&amp;quot;)&amp;lt;/code&amp;gt;. Toliau ji eina ir sukuria eilutę kiekvienam telefono numeriui su komanda &amp;lt;code&amp;gt;išvesties_failas.write(k + &amp;quot;,&amp;quot; + v + &amp;quot;\n&amp;quot;)&amp;lt;/code&amp;gt;. Tai išrašo eilutę, kurioje yra vardas, kablelis, telefono numeris, o po jos rašoma nauja eilutė.&lt;br /&gt;
&lt;br /&gt;
Užkrovimo dalis yra šiek tiek sudėtingesnė. Ji prasideda failo objekto gavimu. Tada ji naudoja &amp;lt;code&amp;gt;while True:&amp;lt;/code&amp;gt; ciklą, kad tęstųsi ciklas tol, kol bus aptiktas &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; teiginys. Toliau nuskaitoma eilutė su kodu &amp;lt;code&amp;gt;skaitoma_eilutė = skaitymo_failas.readline()&amp;lt;/code&amp;gt;. Pasiekus failo pabaigą, funkcija &amp;lt;code&amp;gt;readline&amp;lt;/code&amp;gt; grąžins tuščią eilutę. Teiginys &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; tai patikrina ir panaudojant kodą &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; nutraukia &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; ciklą. Žinoma, jei funkcija &amp;lt;code&amp;gt;readline&amp;lt;/code&amp;gt; negrąžintų naujos eilutės eilutės pabaigoje, nebūtų jokio būdo pasakyti, ar tuščia eilutė yra tuščia eilutė, ar failo pabaiga, todėl nauja eilutė įtraukiama į tai ką grąžina funckoja &amp;lt;code&amp;gt;readline&amp;lt;/code&amp;gt;. Taigi turime atsikratyti tos naujos eilutės. Eilutė &amp;lt;code&amp;gt;skaitoma_eilutė = skaitoma_eilutė[:-1]&amp;lt;/code&amp;gt; tai padaro už mus, išmesdama paskutinį simbolį. Toliau eilutė &amp;lt;code&amp;gt;vardas, numeris = skaitoma_eilutė.split(&amp;quot;,&amp;quot;)&amp;lt;/code&amp;gt; padalija eilutę ties kableliu į pavadinimą ir telefono numerį. Tada tai įtraukiama į &amp;lt;code&amp;gt;numeriai&amp;lt;/code&amp;gt; žodyną&lt;br /&gt;
&lt;br /&gt;
=== Pažangesnis .txt failų naudojimas ===&lt;br /&gt;
&lt;br /&gt;
Galbūt tau kyla toks klausimas: „Aš žinau, kaip skaityti ir rašyti tekstinį failą, bet ką daryti, jei noriu atspausdinti failą neatidaręs kitos programos?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Yra keletas skirtingų būdų, kaip tai padaryti. Iš tikrųjų, lengviausias būdas atidaro kitą programą, tačiau viskuo pasirūpina Python'o kodas ir vartotojui nereikia nurodyti spausdinamo failo. Šis metodas apima kitos programos subproceso (arba antrinis procesas; biblioteka 'subprocess') iškvietimą. &lt;br /&gt;
&lt;br /&gt;
Prisimeni failą, į kurį įrašėme išvestį aukščiau esančioje programoje? Panaudokime tą failą.&lt;br /&gt;
Turėk omenyje, kad norint išvengti klaidų, ši programa naudoja sąvokas iš kito skyriaus. Nedvejodamas gali dar kartą peržiūrėti šį pavyzdį po kito skyriaus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Python&amp;quot;&amp;gt;&lt;br /&gt;
import subprocess&lt;br /&gt;
def pagrindinis():&lt;br /&gt;
    try:&lt;br /&gt;
        print(&amp;quot;Ši maža programa iškviečia spausdinimo funkciją Notepad programoje&amp;quot;)&lt;br /&gt;
        #Atspausdinkime failą, kurį sukūrėme aukščiau esančioje programoje&lt;br /&gt;
        subprocess.call(['notepad','/p','numeriai.txt'])&lt;br /&gt;
    except WindowsError:&lt;br /&gt;
        print(&amp;quot;Pakviesto subproceso nėra arba jo negalima iškviesti.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
pagrindinis()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;subprocess.call&amp;lt;/code&amp;gt; turi tris argumentus. Pirmasis argumentas šio pavyzdžio kontekste turėtų būti programos pavadinimas, iš kurios nori iškviesti spausdinimo subprocesą. Antrasis argumentas turėtų būti konkretus tos programos subprocesas. Kad būtų paprasčiau, tiesiog suprask, kad šioje programoje &amp;lt;code&amp;gt;'/p'&amp;lt;/code&amp;gt; yra subprocesas, naudojamas norint pasiekti spausdintuvą per nurodytą programą. Paskutinis argumentas turėtų būti failo pavadinimas, kurį norite siųsti į spausdinimo subprocesą. Šiuo atveju tai yra tas pats failas, naudotas anksčiau šiame skyriuje.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Dabar pakeisk pažymių programą iš skyriaus [[../Vadovėlis/Dictionaries]], kad ji naudotų failus mokinių pažymiams saugoti.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
užduotys = ['nd sk 1', 'nd sk 2', 'viktorina   ', 'nd sk 3', 'testas']&lt;br /&gt;
mokiniai = { }&lt;br /&gt;
&lt;br /&gt;
def įkelti_pažymius(pažymių_failas):&lt;br /&gt;
    įvesties_failas = open(pažymių_failas, &amp;quot;r&amp;quot;)&lt;br /&gt;
    pažymiai = [ ]&lt;br /&gt;
    while True:&lt;br /&gt;
        mokinys_ir_pažymys = įvesties_failas.readline()&lt;br /&gt;
        mokinys_ir_pažymys = mokinys_ir_pažymys[:-1]&lt;br /&gt;
        if not mokinys_ir_pažymys:&lt;br /&gt;
            break&lt;br /&gt;
        else:&lt;br /&gt;
            mokinio_vardas, mokinio_pažymiai = mokinys_ir_pažymys.split(&amp;quot;,&amp;quot;)&lt;br /&gt;
            mokinio_pažymiai = mokinio_pažymiai.split(&amp;quot; &amp;quot;)&lt;br /&gt;
            mokiniai[mokinio_vardas] = mokinio_pažymiai&lt;br /&gt;
    įvesties_failas.close()&lt;br /&gt;
    print(&amp;quot;Pažymiai įkelti.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def išsaugoti_pažymius(pažymių_failas):&lt;br /&gt;
    išvesties_failas = open(pažymių_failas, &amp;quot;w&amp;quot;)&lt;br /&gt;
    for k, v in mokiniai.items():&lt;br /&gt;
        išvesties_failas.write(k + &amp;quot;,&amp;quot;)&lt;br /&gt;
        for x in v:&lt;br /&gt;
            išvesties_failas.write(str(x) + &amp;quot; &amp;quot;)&lt;br /&gt;
        išvesties_failas.write(&amp;quot;\n&amp;quot;)&lt;br /&gt;
    išvesties_failas.close()&lt;br /&gt;
    print(&amp;quot;Pažymiai išsaugoti.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print(&amp;quot;1. Pridėk mokinį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;2. Pašalink mokinį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;3. Įkrauti pažymius&amp;quot;)&lt;br /&gt;
    print(&amp;quot;4. Įrašyk pažymį&amp;quot;)&lt;br /&gt;
    print(&amp;quot;5. Spausdink pažymius&amp;quot;)&lt;br /&gt;
    print(&amp;quot;6. Įšsaugoti pažymius&amp;quot;)&lt;br /&gt;
    print(&amp;quot;7. Spausdink meniu&amp;quot;)&lt;br /&gt;
    print(&amp;quot;9. Išeik&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def spausdink_visus_pažymius():&lt;br /&gt;
    if mokiniai:&lt;br /&gt;
        raktai = sorted(mokiniai.keys())&lt;br /&gt;
        print('\t', end=' ')&lt;br /&gt;
        for x in užduotys:&lt;br /&gt;
            print(x, '\t', end=' ')&lt;br /&gt;
        print()&lt;br /&gt;
        for x in raktai:&lt;br /&gt;
            print(x, '\t', end=' ')&lt;br /&gt;
            pažymiai = mokiniai[x]&lt;br /&gt;
            spausdink_pažymius(pažymiai)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Neradau pažymių spausdinimui.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def spausdink_pažymius(pažymiai):&lt;br /&gt;
    for x in pažymiai:&lt;br /&gt;
        print(x, '\t', end=' ')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
spausdink_meniu()&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
while meniu_pasirinkimas != 9:&lt;br /&gt;
    print()&lt;br /&gt;
    meniu_pasirinkimas = int(input(&amp;quot;Meniu pasirinkimas: &amp;quot;))&lt;br /&gt;
    if meniu_pasirinkimas == 1:&lt;br /&gt;
        vardas = input(&amp;quot;Pridėk mokinį: &amp;quot;)&lt;br /&gt;
        mokiniai[vardas] = [0] * len(užduotys)&lt;br /&gt;
    elif meniu_pasirinkimas == 2:&lt;br /&gt;
        vardas = input(&amp;quot;Pašalink mokinį: &amp;quot;)&lt;br /&gt;
        if vardas in mokiniai:&lt;br /&gt;
            del mokiniai[vardas]&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Mokinys vardu:&amp;quot;, vardas, &amp;quot; nerastas.&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas == 3:&lt;br /&gt;
        pažymių_failas = input(&amp;quot;Įkrauti pažymius iš kokio failo? &amp;quot;)&lt;br /&gt;
        įkelti_pažymius(pažymių_failas)&lt;br /&gt;
    elif meniu_pasirinkimas == 4:&lt;br /&gt;
        print(&amp;quot;Įrašyk pažymį&amp;quot;)&lt;br /&gt;
        vardas = input(&amp;quot;Mokinys: &amp;quot;)&lt;br /&gt;
        if vardas in mokiniai:&lt;br /&gt;
            pažymiai = mokiniai[vardas]&lt;br /&gt;
            print(&amp;quot;Įrašyk mokinio pažymį&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Įrašyk 0 (nulį), kad išeitum&amp;quot;)&lt;br /&gt;
            for i,x in enumerate(užduotys):&lt;br /&gt;
                print(i + 1, x, '\t', end=' ')&lt;br /&gt;
            print()&lt;br /&gt;
            spausdink_pažymius(pažymiai)&lt;br /&gt;
            kuris = 1234&lt;br /&gt;
            while kuris != -1:&lt;br /&gt;
                kuris = int(input(&amp;quot;Pažymys kuri nori pakeisti: &amp;quot;))&lt;br /&gt;
                kuris -= 1&lt;br /&gt;
                if 0 &amp;lt;= kuris &amp;lt; len(pažymiai):&lt;br /&gt;
                    pažymys = int(input(&amp;quot;Pažymys: &amp;quot;))&lt;br /&gt;
                    pažymiai[kuris] = pažymys&lt;br /&gt;
                elif kuris != -1:&lt;br /&gt;
                    print(&amp;quot;Klaidingas pažymys&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Mokinys nerastas&amp;quot;)&lt;br /&gt;
    elif meniu_pasirinkimas == 5:&lt;br /&gt;
        spausdink_visus_pažymius()&lt;br /&gt;
    elif meniu_pasirinkimas == 6:&lt;br /&gt;
        pažymių_failas = input(&amp;quot;Į kokį failą išsaugoti pažymius? &amp;quot;)&lt;br /&gt;
        išsaugoti_pažymius(pažymių_failas)&lt;br /&gt;
    elif meniu_pasirinkimas != 9:&lt;br /&gt;
        spausdink_meniu()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Revenge of the Strings |next=Dealing with the imperfect}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_importuotas_bibliotekas_ir_kitas_funkcijas&amp;diff=3594</id>
		<title>Python Vadovėlis/Įvadas į importuotas bibliotekas ir kitas funkcijas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_importuotas_bibliotekas_ir_kitas_funkcijas&amp;diff=3594"/>
		<updated>2021-12-06T15:11:28Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Įvadas į importuotas bibliotekas ir kitas funkcijas ==&lt;br /&gt;
&lt;br /&gt;
Šiame skyriuje apžvelgsime kai kurias funkcijas iš įvairių importuotų bibliotekų, kurios yra dažniausiai naudojamos Python'e. Šis skyrius nėra būtinas norint visiškai suprasti Python'o pagrindus. Šis skyrius skirtas parodyti tolesnes Python'o galimybes, kurias galima panaudoti su tuo, ką jau žinote apie kalbą.&lt;br /&gt;
&lt;br /&gt;
=== math ===&lt;br /&gt;
&lt;br /&gt;
:Matematikos biblioteka aprėpia daug naudingų ir programoms reikalingų funkcijų, kurios atlieka įvarias matematines operacijas (kai neužtenka Python'o operatorių).&lt;br /&gt;
&lt;br /&gt;
:Šiame skyriuje daroma prielaida, kad turi matematikos žinias iki trigonometrijos kurso imtinai.&lt;br /&gt;
&lt;br /&gt;
Šiame sąraše išvardintos visos matematikos bibliotekos funkcijos:&lt;br /&gt;
*math.ceil&lt;br /&gt;
*math.copysign&lt;br /&gt;
*math.fabs&lt;br /&gt;
*math.factorial&lt;br /&gt;
*math.floor&lt;br /&gt;
*math.fmod (Nėra pati idealiausia funkcija su kuria galima pasiekti nurodytą tikslą. Šiame skyriuje nebus detaliau paaiškinta.)&lt;br /&gt;
*math.frexp (Už šios pamokos ribų. Šiame skyriuje nebus detaliau paaiškinta.)&lt;br /&gt;
*math.fsum&lt;br /&gt;
*math.isfinite&lt;br /&gt;
*math.isinf&lt;br /&gt;
*math.isnan&lt;br /&gt;
*math.ldexp&lt;br /&gt;
*math.modf  (Už šios pamokos srities ribų. Šiame skyriuje nebus detaliau paaiškinta.)&lt;br /&gt;
*math.trunc (Už šios pamokos srities ribų. Šiame skyriuje nebus detaliau paaiškinta.)&lt;br /&gt;
*math.exp&lt;br /&gt;
*math.expm1&lt;br /&gt;
*math.log&lt;br /&gt;
*math.log1p&lt;br /&gt;
*math.log10&lt;br /&gt;
*math.pow&lt;br /&gt;
*math.sqrt&lt;br /&gt;
*math.acos&lt;br /&gt;
*math.asin&lt;br /&gt;
*math.atan&lt;br /&gt;
*math.atan2&lt;br /&gt;
*math.cos&lt;br /&gt;
*math.hypot&lt;br /&gt;
*math.sin&lt;br /&gt;
*math.tan&lt;br /&gt;
*math.degrees&lt;br /&gt;
*math.radians&lt;br /&gt;
*math.acosh&lt;br /&gt;
*math.asinh&lt;br /&gt;
*math.atanh&lt;br /&gt;
*math.cosh&lt;br /&gt;
*math.sinh&lt;br /&gt;
*math.tanh&lt;br /&gt;
*math.erf&lt;br /&gt;
*math.erfc&lt;br /&gt;
*math.gamma&lt;br /&gt;
*math.lgamma&lt;br /&gt;
*math.pi&lt;br /&gt;
*math.e&lt;br /&gt;
&lt;br /&gt;
:Žinoma, neapimsime visų šių funkcijų, bet padengsime didelę jų dalį.&lt;br /&gt;
&lt;br /&gt;
Pradėkime nuo dviejų konstantų matematikos bibliotekoje. &amp;lt;code&amp;gt;math.pi&amp;lt;/code&amp;gt; yra matematinė konstanta „π“, tavo kompiuteryje pasiekiamu tikslumu. &amp;lt;code&amp;gt;math.e&amp;lt;/code&amp;gt; yra matematinė konstanta „e“, tavo kompiuteryje pasiekiamu tikslumu.&lt;br /&gt;
Štai yra abiejų konstantų, įvestų interaktyviuoju režimu Python'o terminale, pavyzdys:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import math&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.e&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2.718281828459045&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.pi&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;3.141592653589793&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šios konstantos gali būti saugomos kintamajame, kaip ir bet kuris kitas skaičius. Žemiau pateikiamas būtent toks pavyzdys ir parodytos paprastos šių kintamųjų operacijos:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; conste = math.e&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; (conste + 5 / 2) * 2.21&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;11.532402840894488&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; constpi = math.pi&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; (((7 /2.1) % constpi) * 2)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;0.38348135948707984&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabar pažvelk į funkcijas: pradėk nuo sąrašo viršaus ir judėk žemyn (kai kurios funkcijos bus praleistos).&lt;br /&gt;
Kai žiūrėsi kiekvieną iš pavyzdžių, pabandyk išsiaiškinti, ką kiekviena funkcija daro. Šalia bus pateiktas sakinys ar du, kurie turėtų tau padėti.&lt;br /&gt;
&lt;br /&gt;
Žemiau pateikiamas kiekvienos &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; modulio funkcijos pavyzdys ir kaip ji naudojama (išskyrus anksčiau nurodytas funkcijas, kurių nereikia paaiškinti)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import math&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.ceil(4.5) ** Suapvalina skaičių iki artimiausio skaičiaus po kablelio **&lt;br /&gt;
 5&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.ceil(4.1)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.copysign(4, -.4)  ** Grąžina absoliučią reikšmę &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; su ženklu, kurį turi skaičius &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;(x, y)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;-4.0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.copysign(-4, 4)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4.0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.fabs(-44)  ** Grąžina absoliučią skaičiaus reikšmę, kaip slankiojo kablelio reikšmę **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;44.0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.factorial(4)  **  Grąžina skaičiaus faktorialą **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;24&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.floor(4.3)  ** Grąžina didžiausią sveikąjį skaičių, mažesnį arba lygų duotajam skaičiui **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.floor(4.99999)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.fsum([.1,.2,5,45.2,-.054,.4]) **  Grąžina visų skliausteliuose esančių skaičių sumą. Funkcija ne visada tiksli **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;50.846000000000004&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.isfinite(3) ** Grąžina &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;, jei reikšmė nėra begalinė ar NaN. Kitu atveju, grąžina &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;. **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;True&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Intro to Object Oriented Programming in Python 3 |next=The End}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3593</id>
		<title>Python Vadovėlis/Terminai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3593"/>
		<updated>2021-12-06T15:10:24Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Computer - kompiuteris &lt;br /&gt;
&lt;br /&gt;
Container - konteineris&lt;br /&gt;
&lt;br /&gt;
Control strukture - valdymo struktūra&lt;br /&gt;
&lt;br /&gt;
Counter - skaitliukas &lt;br /&gt;
&lt;br /&gt;
Debugging - derinimas&lt;br /&gt;
&lt;br /&gt;
Directory - katalogas&lt;br /&gt;
&lt;br /&gt;
Exercise - pratimas&lt;br /&gt;
&lt;br /&gt;
Expression - reiškinys&lt;br /&gt;
&lt;br /&gt;
False - klaidinga&lt;br /&gt;
&lt;br /&gt;
Feature - ypatybė&lt;br /&gt;
&lt;br /&gt;
Floating point - slankusis kablelis&lt;br /&gt;
&lt;br /&gt;
Good practices - gerosios praktikos&lt;br /&gt;
&lt;br /&gt;
Hard-coded - įkoduotas/užprogramuotas&lt;br /&gt;
&lt;br /&gt;
IDLE - „IDLE“ kodo redaktorius/kodo redaktorius&lt;br /&gt;
&lt;br /&gt;
Indent - įtrauka&lt;br /&gt;
&lt;br /&gt;
Instance - objektas&lt;br /&gt;
&lt;br /&gt;
Item - elementas&lt;br /&gt;
&lt;br /&gt;
Iterable - iteruojamasis&lt;br /&gt;
&lt;br /&gt;
List - sąrašas&lt;br /&gt;
&lt;br /&gt;
Loop - ciklas&lt;br /&gt;
&lt;br /&gt;
Mouse - pelė&lt;br /&gt;
&lt;br /&gt;
Operator - operatorius&lt;br /&gt;
&lt;br /&gt;
Optional - pasirinktinas&lt;br /&gt;
&lt;br /&gt;
Output - išvestis/rezultatas&lt;br /&gt;
&lt;br /&gt;
Prepackaged - iš anksto paruošti paketai&lt;br /&gt;
&lt;br /&gt;
Prompt - kviesti&lt;br /&gt;
&lt;br /&gt;
Python - Python'as&lt;br /&gt;
&lt;br /&gt;
Run (daikt.) - vykdymas &lt;br /&gt;
&lt;br /&gt;
Shell - terminalas/konsolės langas&lt;br /&gt;
&lt;br /&gt;
Site-packages - svetainės paketai&lt;br /&gt;
&lt;br /&gt;
Solution - sprendimas&lt;br /&gt;
&lt;br /&gt;
Source code - pirminis programos tekstas&lt;br /&gt;
&lt;br /&gt;
Statement - sakinys&lt;br /&gt;
&lt;br /&gt;
String - eilutė&lt;br /&gt;
&lt;br /&gt;
Terminate - nutraukti darbą/stabdyti programą&lt;br /&gt;
&lt;br /&gt;
True - teisinga&lt;br /&gt;
&lt;br /&gt;
User - naudotojas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=FAQ |next=END}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_importuotas_bibliotekas_ir_kitas_funkcijas&amp;diff=3592</id>
		<title>Python Vadovėlis/Įvadas į importuotas bibliotekas ir kitas funkcijas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_importuotas_bibliotekas_ir_kitas_funkcijas&amp;diff=3592"/>
		<updated>2021-12-06T15:09:50Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Įvadas į importuotas bibliotekas ir kitas funkcijas ==&lt;br /&gt;
&lt;br /&gt;
Šiame skyriuje apžvelgsime kai kurias funkcijas iš įvairių importuotų bibliotekų, kurios yra dažniausiai naudojamos Python'e. Šis skyrius nėra būtinas norint visiškai suprasti Python'o pagrindus. Šis skyrius skirtas parodyti tolesnes Python'o galimybes, kurias galima panaudoti su tuo, ką jau žinote apie kalbą.&lt;br /&gt;
&lt;br /&gt;
=== math ===&lt;br /&gt;
&lt;br /&gt;
:Matematikos biblioteka aprėpia daug naudingų ir programoms reikalingų funkcijų, kurios atlieka įvarias matematines operacijas (kai neužtenka Python'o operatorių).&lt;br /&gt;
&lt;br /&gt;
:Šiame skyriuje daroma prielaida, kad turi matematikos žinias iki trigonometrijos kurso imtinai.&lt;br /&gt;
&lt;br /&gt;
Šiame sąraše išvardintos visos matematikos bibliotekos funkcijos:&lt;br /&gt;
*math.ceil&lt;br /&gt;
*math.copysign&lt;br /&gt;
*math.fabs&lt;br /&gt;
*math.factorial&lt;br /&gt;
*math.floor&lt;br /&gt;
*math.fmod (Nėra pati idealiausia funkcija su kuria galima pasiekti nurodytą tikslą. Šiame skyriuje nebus detaliau paaiškinta.)&lt;br /&gt;
*math.frexp (Už šios pamokos ribų. Šiame skyriuje nebus detaliau paaiškinta.)&lt;br /&gt;
*math.fsum&lt;br /&gt;
*math.isfinite&lt;br /&gt;
*math.isinf&lt;br /&gt;
*math.isnan&lt;br /&gt;
*math.ldexp&lt;br /&gt;
*math.modf  (Už šios pamokos srities ribų. Šiame skyriuje nebus detaliau paaiškinta.)&lt;br /&gt;
*math.trunc (Už šios pamokos srities ribų. Šiame skyriuje nebus detaliau paaiškinta.)&lt;br /&gt;
*math.exp&lt;br /&gt;
*math.expm1&lt;br /&gt;
*math.log&lt;br /&gt;
*math.log1p&lt;br /&gt;
*math.log10&lt;br /&gt;
*math.pow&lt;br /&gt;
*math.sqrt&lt;br /&gt;
*math.acos&lt;br /&gt;
*math.asin&lt;br /&gt;
*math.atan&lt;br /&gt;
*math.atan2&lt;br /&gt;
*math.cos&lt;br /&gt;
*math.hypot&lt;br /&gt;
*math.sin&lt;br /&gt;
*math.tan&lt;br /&gt;
*math.degrees&lt;br /&gt;
*math.radians&lt;br /&gt;
*math.acosh&lt;br /&gt;
*math.asinh&lt;br /&gt;
*math.atanh&lt;br /&gt;
*math.cosh&lt;br /&gt;
*math.sinh&lt;br /&gt;
*math.tanh&lt;br /&gt;
*math.erf&lt;br /&gt;
*math.erfc&lt;br /&gt;
*math.gamma&lt;br /&gt;
*math.lgamma&lt;br /&gt;
*math.pi&lt;br /&gt;
*math.e&lt;br /&gt;
&lt;br /&gt;
:Žinoma, neapimsime visų šių funkcijų, bet padengsime didelę jų dalį.&lt;br /&gt;
&lt;br /&gt;
Pradėkime nuo dviejų konstantų matematikos bibliotekoje. &amp;lt;code&amp;gt;math.pi&amp;lt;/code&amp;gt; yra matematinė konstanta „π“, tavo kompiuteryje pasiekiamu tikslumu. &amp;lt;code&amp;gt;math.e&amp;lt;/code&amp;gt; yra matematinė konstanta „e“, tavo kompiuteryje pasiekiamu tikslumu.&lt;br /&gt;
Štai yra abiejų konstantų, įvestų interaktyviuoju režimu Python'o apvalkale, pavyzdys:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import math&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.e&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;2.718281828459045&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.pi&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;3.141592653589793&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šios konstantos gali būti saugomos kintamajame, kaip ir bet kuris kitas skaičius. Žemiau pateikiamas būtent toks pavyzdys ir parodytos paprastos šių kintamųjų operacijos:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; conste = math.e&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; (conste + 5 / 2) * 2.21&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;11.532402840894488&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; constpi = math.pi&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; (((7 /2.1) % constpi) * 2)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;0.38348135948707984&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabar pažvelk į funkcijas: pradėk nuo sąrašo viršaus ir judėk žemyn (kai kurios funkcijos bus praleistos).&lt;br /&gt;
Kai žiūrėsi kiekvieną iš pavyzdžių, pabandyk išsiaiškinti, ką kiekviena funkcija daro. Šalia bus pateiktas sakinys ar du, kurie turėtų tau padėti.&lt;br /&gt;
&lt;br /&gt;
Žemiau pateikiamas kiekvienos &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; modulio funkcijos pavyzdys ir kaip ji naudojama (išskyrus anksčiau nurodytas funkcijas, kurių nereikia paaiškinti)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import math&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.ceil(4.5) ** Suapvalina skaičių iki artimiausio skaičiaus po kablelio **&lt;br /&gt;
 5&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.ceil(4.1)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.copysign(4, -.4)  ** Grąžina absoliučią reikšmę &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; su ženklu, kurį turi skaičius &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;(x, y)&amp;lt;/code&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;-4.0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.copysign(-4, 4)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4.0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.fabs(-44)  ** Grąžina absoliučią skaičiaus reikšmę, kaip slankiojo kablelio reikšmę **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;44.0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.factorial(4)  **  Grąžina skaičiaus faktorialą **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;24&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.floor(4.3)  ** Grąžina didžiausią sveikąjį skaičių, mažesnį arba lygų duotajam skaičiui **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.floor(4.99999)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.fsum([.1,.2,5,45.2,-.054,.4]) **  Grąžina visų skliausteliuose esančių skaičių sumą. Funkcija ne visada tiksli **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;50.846000000000004&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; math.isfinite(3) ** Grąžina &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt;, jei reikšmė nėra begalinė ar NaN. Kitu atveju, grąžina &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt;. **&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;True&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Intro to Object Oriented Programming in Python 3 |next=The End}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Siekiant_tobulumo&amp;diff=3591</id>
		<title>Python Vadovėlis/Siekiant tobulumo</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Siekiant_tobulumo&amp;diff=3591"/>
		<updated>2021-12-06T15:01:43Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ...arba, kaip kovoti su klaidomis ===&lt;br /&gt;
=== Klaidų „gaudymas“ su &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; ===&lt;br /&gt;
Tarkime, kad jau turi tobulą programą, ji vykdoma nepriekaištingai. Tik viena maža detalė: programa užstringa naudotojui įvedus klaidingą įvestį. Nesijaudink, Pithon'as turi specialią valdymo struktūrą, kuri tau padės. Ji vadinama &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; ir ji bando kažką padaryti. Programos su problema pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Norėdamas uždaryti programą, įvesk -1&amp;quot;)&lt;br /&gt;
skaicius = 1&lt;br /&gt;
while skaicius != -1:&lt;br /&gt;
   skaicius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
   print(&amp;quot;Tu įvedei:&amp;quot;, skaicius)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įvesi &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt;, programa išves kažką tokio:&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;bandyk.py&amp;quot;, line 4, in &amp;lt;module&amp;gt;&lt;br /&gt;
   skaicius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
 ValueError: invalid literal for int() with base 10: '\\@#&amp;amp;'&lt;br /&gt;
&lt;br /&gt;
Kaip gali pastebėti, &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; funkcija yra nepatenkinta skaičiumi &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt; (kaip ir turėtų būti). Paskutinė eilutė parodo, kokia yra problema: Python'as rado &amp;lt;code&amp;gt;ValueError&amp;lt;/code&amp;gt; klaidą. Kaip mūsų programa gali su tuo susitvarkyti? Visų pirma, tą kodo vietą, kurioje gali būti klaidų, turime apsupti &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; bloku. Antra, turime pasakyti Python'ui, kaip tvarkytis su &amp;lt;code&amp;gt;ValueError&amp;lt;/code&amp;gt; klaidomis. Tai daro žemiau esanti programa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Norėdamas uždaryti programą, įvesk -1&amp;quot;)&lt;br /&gt;
skaicius = 1&lt;br /&gt;
while skaicius != -1:&lt;br /&gt;
    try:&lt;br /&gt;
        skaicius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
        print(&amp;quot;Tu įvedei:&amp;quot;, skaicius)&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Tai buvo ne skaičius.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabar, kai vykdome programą ir įvedame &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt;, programa mums pasako, kad &amp;lt;code&amp;gt;Tai buvo ne skaičius.&amp;lt;/code&amp;gt; ir toliau vykdo tai, ką turėtų.&lt;br /&gt;
&lt;br /&gt;
Kai tavo programa vis susiduria su ta pačia klaida, kodą apsupk &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; bloku ir aprašyk būdą, kaip elgtis sutikus klaidą, &amp;lt;code&amp;gt;except&amp;lt;/code&amp;gt; bloke.&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Pataisyk telefono numerių programą ([[Vadovėlis/Dictionaries|Dictionaries]] skyriuje), kad ji neužstrigtų, jei naudotojas neįrašo jokios įvesties į meniu.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def spausdink_meniu():&lt;br /&gt;
    print('1. Spausdink telefonų numerius')&lt;br /&gt;
    print('2. Pridėk telefono numerį')&lt;br /&gt;
    print('3. Pašalink telefono numerį')&lt;br /&gt;
    print('4. Ieškok telefono numerio')&lt;br /&gt;
    print('5. Išeik')&lt;br /&gt;
    print()&lt;br /&gt;
&lt;br /&gt;
numeriai = {}&lt;br /&gt;
meniu_pasirinkimas = 0&lt;br /&gt;
spausdink_meniu ()&lt;br /&gt;
while meniu_pasirinkimas != 5:&lt;br /&gt;
    try:&lt;br /&gt;
        meniu_pasirinkimas = int(input(&amp;quot;Įvesk skaičių (1-5): &amp;quot;))&lt;br /&gt;
        if meniu_pasirinkimas == 1:&lt;br /&gt;
            print(&amp;quot;Telefono numeriai: &amp;quot;)&lt;br /&gt;
            for x in numeriai.keys():&lt;br /&gt;
                print(&amp;quot;Vardas: &amp;quot;, x, &amp;quot;\tTelefono numeris:&amp;quot;, numeriai[x])&lt;br /&gt;
            print()&lt;br /&gt;
        elif meniu_pasirinkimas == 2:&lt;br /&gt;
            print(&amp;quot;Pridėk vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
            vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
            numeris = input(&amp;quot;Telefono numeris: &amp;quot;)&lt;br /&gt;
            numeriai[vardas] = numeris &lt;br /&gt;
        elif meniu_pasirinkimas == 3:&lt;br /&gt;
            print(&amp;quot;Pašalink vardą ir telefono numerį&amp;quot;)&lt;br /&gt;
            vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
            if vardas in numeriai:&lt;br /&gt;
                del numeriai[vardas]&lt;br /&gt;
            else:&lt;br /&gt;
                print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
        elif meniu_pasirinkimas == 4:&lt;br /&gt;
            print(&amp;quot;Ieškok telefono numerio&amp;quot;)&lt;br /&gt;
            vardas = input(&amp;quot;Vardas: &amp;quot;)&lt;br /&gt;
            if vardas in numeriai:&lt;br /&gt;
                print(&amp;quot;Telefono numeris yra &amp;quot;, numeriai[vardas])&lt;br /&gt;
            else:&lt;br /&gt;
                print(vardas, &amp;quot; nebuvo rastas&amp;quot;)&lt;br /&gt;
        elif meniu_pasirinkimas  != 5:&lt;br /&gt;
            print_menu()&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Tai buvo ne skaičius.&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{navigation |previous=File IO |next=Recursion}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=3585</id>
		<title>Python Vadovėlis/Rekursinės funkcijos</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=3585"/>
		<updated>2021-12-01T15:19:25Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vieniems šis skyrius gali pasirodyti naudingas, o kitiems - painus. Jeigu tau informacija pasirodys paini, tai nesuk galvos ir praleisk,  prie šio skyriaus galėsi grįžti šiek tiek vėliau. O dabar pabandom pasižiūrėti į mūsų parašytą programą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def daug(a, b): # daug reiškia daugybą&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return 0&lt;br /&gt;
    lik = daug(a, b - 1) #lik reiškia likutį&lt;br /&gt;
    reiksme = a + lik&lt;br /&gt;
    return reiksme&lt;br /&gt;
resultas = daug(3, 2)&lt;br /&gt;
print(&amp;quot;3 * 2 = &amp;quot;, resultas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Iš esmės ši programa, tai teigiama sveikųjų skaičių daugybos funkcija (reik atkreipti dėmesį į tai, kad Python'o programavimo kalboje jau yra integruota funkcija dauginimui, čia mes patys parašėme lengvai suprantamą pavyzdį (jeigu kurtume tokią funkciją patys), kuris parodo kaip atrodo daugybos veiksmas. Šioje programoje gali pamatyti rekursijos naudojimą, tai yra iteracijos (kartojimo) forma, kai funkcija yra pakartotinai iškviečiama, kol bus įvykdyta sukurta išvesties sąlyga. Programa naudoja pakartotinius papildymus, kad gautų tą patį rezultatą kaip ir daugyba: pavyzdžiui 3 + 3 (sudėtis) duoda tą patį rezultatą kaip ir 3 * 2 (daugyba).&lt;br /&gt;
&lt;br /&gt;
; ''Klausimas:'' Ką pirmiausia daro programa?&lt;br /&gt;
: ''Atsakymas:'' Pirmiausia yra aprašyta funkcija daugink:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def daug(a, b):&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return 0&lt;br /&gt;
    lik = daug(a, b - 1)&lt;br /&gt;
    reiksme = a + lik &lt;br /&gt;
    return reiksme&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Tai sukuria funkciją, kuri paima du parametrus ir grąžina reikšmę, kai ji atitinka reikiamą rezultatą. Vėliau šią funkciją galima paleisti.&lt;br /&gt;
; Kas nutinka toliau?  &lt;br /&gt;
: Vykdoma kita eilutė einanti po funkcijos &amp;lt;code&amp;gt;resultas = daug(3, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Ši eilutė priskiria grąžinimo reikšmę &amp;lt;code&amp;gt;daug(3, 2)&amp;lt;/code&amp;gt; kintamajam &amp;lt;code&amp;gt;resultas&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Ką grąžina &amp;lt;code&amp;gt;daug(3, 2)&amp;lt;/code&amp;gt;?&lt;br /&gt;
: Norėdami tai išsiaiškinti, turime peržiūrėti funkciją &amp;lt;code&amp;gt;daug()&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kas vyksta su kodu?&lt;br /&gt;
: Kintamasis &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; gauna jam priskirtą reikšmę 3, o kintamasis &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; - jam priskirtą reikšmę 2.&lt;br /&gt;
; Kas nutinka tada?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;if b == 0:&amp;lt;/code&amp;gt;. Kadangi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmė yra 2, todėl eilutė &amp;lt;code&amp;gt;return 0&amp;lt;/code&amp;gt; praleidžiama.&lt;br /&gt;
; Kas vyksta toliau?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;lik = daug(a, b - 1)&amp;lt;/code&amp;gt;. Ši eilutė nustato lokalaus kintamojo &amp;lt;code&amp;gt;lik&amp;lt;/code&amp;gt; reikšmę į &amp;lt;code&amp;gt;daug(a, b - 1)&amp;lt;/code&amp;gt; reikšmę. &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmė yra 3, o &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; - 2, todėl funkcija kviečia funkciją&amp;lt;code&amp;gt;daug(3,1)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Taigi kokia yra &amp;lt;code&amp;gt;daug(3, 1)&amp;lt;/code&amp;gt; reikšmė?&lt;br /&gt;
: Turime paleisti funkciją &amp;lt;code&amp;gt;daug()&amp;lt;/code&amp;gt; su parametrais, kurie yra 3 ir 1.&lt;br /&gt;
; Kas nutinka toliau?&lt;br /&gt;
: Lokalūs kintamieji vėl pasileidus kodui jau yra nustatyti, todėl &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmė būtų 3, o &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmė -1. Kadangi jie yra lokalūs kintamieji, todėl jie neturi įtakos ankstesnėms &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmėms.&lt;br /&gt;
; Kas įvyksta toliau?&lt;br /&gt;
: Kadangi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; turi reikšmę 1, if teiginys yra neigiamas, todėl vykdoma kita eilutė &amp;lt;code&amp;gt;lik = daug(a, b - 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Ši eilutė &amp;lt;code&amp;gt;daug(3, 0)&amp;lt;/code&amp;gt; reikšmę priskiria kitiems.&lt;br /&gt;
; Ką daro ši reikšmė?&lt;br /&gt;
: Norėdami tai išsiaiškinti, turime dar kartą paleisti funkciją. Šį kartą &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmė yra 3, o &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; - 0.&lt;br /&gt;
; Kas vyksta toliau?&lt;br /&gt;
: Pirmoji vykdytinos funkcijos eilutė yra &amp;lt;code&amp;gt;if b == 0:&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmė 0, todėl kita vykdoma eilutė yra &amp;lt;code&amp;gt;return 0&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro &amp;lt;code&amp;gt;return 0&amp;lt;/code&amp;gt; eilutė?&lt;br /&gt;
: Ši eilutė grąžina funkcijos reikšmę lygią 0.&lt;br /&gt;
; Kas iš to?&lt;br /&gt;
: Dabar mes žinome, kad &amp;lt;code&amp;gt;daug(3, 0)&amp;lt;/code&amp;gt; turi reikšmę 0. Dar žinome, ką daro eilutė &amp;lt;code&amp;gt;lik = daug(a, b - 1)&amp;lt;/code&amp;gt;, nes paleidžiame funkciją &amp;lt;code&amp;gt;daug()&amp;lt;/code&amp;gt; su parametrais 3 ir 0. Baigiame vykdyti &amp;lt;code&amp;gt;daug(3, 0)&amp;lt;/code&amp;gt; ir dabar vėl pradedame vykdyti &amp;lt;code&amp;gt;daug(3, 1)&amp;lt;/code&amp;gt;. Kintamajam &amp;lt;code&amp;gt;lik&amp;lt;/code&amp;gt; priskiriama vertė 0.&lt;br /&gt;
; Kurią eilutę kompiuteris skaito po to?&lt;br /&gt;
: Toliau vykdoma eilutė &amp;lt;code&amp;gt;reiksme = a + lik&amp;lt;/code&amp;gt;. Žinome, kad &amp;lt;code&amp;gt;a = 3&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;lik = 0&amp;lt;/code&amp;gt; todėl dabar &amp;lt;code&amp;gt;reiksme = 3&amp;lt;/code&amp;gt;. &lt;br /&gt;
; Kas nutinka toliau?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;return reiksme&amp;lt;/code&amp;gt;, kuri grąžina reikšmę 3. Šis skaičius atsiranda iš funkcijos &amp;lt;code&amp;gt;daug (3, 1)&amp;lt;/code&amp;gt; vykdymo. Iškvietus &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;, grįžtame prie &amp;lt;code&amp;gt;daug(3, 2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kur yra &amp;lt;code&amp;gt;daug(3, 2)&amp;lt;/code&amp;gt;?&lt;br /&gt;
: Mes turėjome kintamuosius &amp;lt;code&amp;gt;a = 3&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b = 2&amp;lt;/code&amp;gt; ir nagrinėjome eilutę &amp;lt;code&amp;gt;lik = daug(a, b - 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kas įvyksta?&lt;br /&gt;
: Kintamajam &amp;lt;code&amp;gt;lik&amp;lt;/code&amp;gt; priskiriama reikšmė 3. Kita eilutė &amp;lt;code&amp;gt;reiksme = a + lik&amp;lt;/code&amp;gt; nustato &amp;lt;code&amp;gt;reiksme&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;3 + 3&amp;lt;/code&amp;gt; arba 6.  &lt;br /&gt;
; Kas įvyksta toliau?&lt;br /&gt;
: Pradeda veikti kita eilutė, kuri grąžina 6 iš funkcijos. Tuomet grįžtame prie eilutės &amp;lt;code&amp;gt;resultas = daug(3, 2)&amp;lt;/code&amp;gt;, kuriai dabar galima priskirti reikšmę 6 kintamajam &amp;lt;code&amp;gt;resultas&amp;lt;/code&amp;gt;&lt;br /&gt;
; Kas nutinka toliau?  &lt;br /&gt;
: Paleidžiama kita eilutė po funkcijos &amp;lt;code&amp;gt;print (&amp;quot;3 * 2 =&amp;quot;, resultas)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Ji spausdina &amp;lt;code&amp;gt;3 * 2 =&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;resultas&amp;lt;/code&amp;gt; reikšmę, kuri yra 6. Visa išspausdinta eilutė yra &amp;lt;code&amp;gt;3 * 2 = 6&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Taigi, kas čia įvyko apskritai?  &lt;br /&gt;
: Iš esmės panaudojome du skirtingus faktus, kad apskaičiuotume dviejų skaičių kartotinį. Pirmas, kad bet koks skaičius padauginus iš nulio yra nulis &amp;lt;code&amp;gt;(x * 0 = 0)&amp;lt;/code&amp;gt;. Antras, kad skaičius padaugintas iš kito skaičiaus yra lygus pirmam skaičiui ir pirmas skaičius yra  vienu skaitmeniu mažesnis už antrajį skaičių &amp;lt;code&amp;gt;(x * y = x + x * (y - 1))&amp;lt;/code&amp;gt;. Taigi ir čia &amp;lt;code&amp;gt;3 * 2&amp;lt;/code&amp;gt; pirmiausiai paverčiamas į &amp;lt;code&amp;gt;3 + 3 * 1&amp;lt;/code&amp;gt;. Tada &amp;lt;code&amp;gt;3 * 1&amp;lt;/code&amp;gt; paverčiamas į &amp;lt;code&amp;gt;3 + 3 * 0&amp;lt;/code&amp;gt;. Tuomet mes žinome, kad bet kuris skaičius padaugintas iš nulio yra nulis, todėl &amp;lt;code&amp;gt;3 * 0&amp;lt;/code&amp;gt; yra 0. Tuomet galime apskaičiuoti, kad &amp;lt;code&amp;gt;3 + 3 * 0&amp;lt;/code&amp;gt; yra &amp;lt;code&amp;gt;3 + 0&amp;lt;/code&amp;gt; arba kitaip tariant tiesiog &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Tuomet mes žinome, kas yra &amp;lt;code&amp;gt;3 * 1&amp;lt;/code&amp;gt;, todėl galime apskaičiuoti, kad &amp;lt;code&amp;gt;3 + 3 * 1&amp;lt;/code&amp;gt; yra &amp;lt;code&amp;gt;3 + 3&amp;lt;/code&amp;gt; arba kitaip tariant &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Štai kaip viskas veikia:&lt;br /&gt;
&lt;br /&gt;
 daug(3, 2)&lt;br /&gt;
 3 + daug(3, 1)&lt;br /&gt;
 3 + 3 + daug(3, 0)&lt;br /&gt;
 3 + 3 + 0&lt;br /&gt;
 3 + 3&lt;br /&gt;
 6&lt;br /&gt;
&lt;br /&gt;
==== Rekursija ====&lt;br /&gt;
Programavimo konstrukcijos, išsprendžiančios problemą išsprendžiant mažesnę tos pačios problemos versiją, vadinamos „rekursyviomis“. Šio skyriaus pavyzdžiuose rekursija realizuojama apibrėžiant funkciją, kuri pati save iškviečia. Tai palengvina programavimo užduočių spendimų įgyvendinimą, nes kartais pakanka apsvarstyti tik vieną problemos žingsnį, o ne visą problemą iš karto. Be to tai leidžia išreikšti kai kurias matematines sąvokas paprastu, lengvai skaitomu kodu.&lt;br /&gt;
&lt;br /&gt;
Bet kokią problemą, kurią galime išspręsti naudojant rekursiją, gali būti išspręsta naudojant ciklus. Jie veikia greičiau, bet kartais ciklus sunku atlikti teisingai.&lt;br /&gt;
&lt;br /&gt;
Turbūt intuityviausias „rekursijos“ apibrėžimas yra toks:&lt;br /&gt;
; Rekursija&lt;br /&gt;
: Jei vis dar nesupranti, tai skaityk: REKURSIJA.&lt;br /&gt;
Pabandyk perskaityti faktinį pavyzdį, jei nesupratai daugybos pavyzdžio.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
'''faktorialas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#apibrėžia funkciją, kuri apskaičiuoja koeficientą&lt;br /&gt;
&lt;br /&gt;
def faktorialas(n):&lt;br /&gt;
    if n == 0:&lt;br /&gt;
        return 1&lt;br /&gt;
    if n&amp;lt;0:&lt;br /&gt;
        return &amp;quot;Klaida, neigiami skaičiai neturi faktorialo reikšmių!!&amp;quot;&lt;br /&gt;
    return n * faktorialas(n - 1)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;2! =&amp;quot;, faktorialas(2))&lt;br /&gt;
print(&amp;quot;3! =&amp;quot;, faktorialas(3))&lt;br /&gt;
print(&amp;quot;4! =&amp;quot;, faktorialas(4))&lt;br /&gt;
print(&amp;quot;5! =&amp;quot;, faktorialas(5))&lt;br /&gt;
print(&amp;quot;-3! =&amp;quot;, faktorialas(-3))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
 &lt;br /&gt;
 2! = 2&lt;br /&gt;
 3! = 6&lt;br /&gt;
 4! = 24&lt;br /&gt;
 5! = 120&lt;br /&gt;
 -3! = Klaida, neigiami skaičiai neturi faktorialo reikšmių!!&lt;br /&gt;
&lt;br /&gt;
'''atgalinis_kaičiavimas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def atgalinis_kaičiavimas(n):&lt;br /&gt;
    print(n)&lt;br /&gt;
    if n &amp;gt; 0:&lt;br /&gt;
        return atgalinis_kaičiavimas(n-1)&lt;br /&gt;
&lt;br /&gt;
atgalinis_kaičiavimas(5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
 5&lt;br /&gt;
 4&lt;br /&gt;
 3&lt;br /&gt;
 2&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Dabar pabandyk žodį &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;(lietuviškai jei) pakeisti žodžiu &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; (lietuviškai kol). Pamatysi, kad kompiuteris pavirto skaičiuotuvu, kuris negali suskaičiuoti iki keturių. Iš esmės &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;(kol) veikia kaip &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; (jei) ir &amp;lt;code&amp;gt;repeat&amp;lt;/code&amp;gt;(angl. pakartok) kartu sudėjus.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Defining Functions |next=Lists}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Derinimas&amp;diff=3584</id>
		<title>Python Vadovėlis/Derinimas</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Derinimas&amp;diff=3584"/>
		<updated>2021-11-30T16:52:31Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Kas yra derinimas? ===&lt;br /&gt;
:„Kai tik pradėjome programuoti, mūsų nuostabai, supratome, kad nėra taip lengva kurti teisingai veikiančias programas, kaip manėme iš pradžių. Derinimas turėjo būti atrastas. Atsimenu tą akimirką, kai supratau, kad didelė mano gyvenimo dalis bus skirta klaidų ieškojimui savo sukurtose programose.“ &amp;amp;mdash; ''Maurice Wilkes atranda derinimą'', 1949&lt;br /&gt;
&lt;br /&gt;
Jei jau bandei parašyti kelias programas, turbūt pastebėjai, kad kartais programa daro ką nors, ko neturėtų daryti. Tai yra tikrai dažna situacija. Derinimas tai yra procesas, kuomet bandoma suprasti, ką kompiuteris daro ir kaip jį priversti daryti tai, ką norėtum, kad jis darytų. Tai gali būti sudėtinga. Vieną kartą aš praleidau beveik savaitę ieškodamas ir taisydamas klaidą, kurią sukėlė kitas žmogus, kode parašęs &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; vietoje &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ši dalis bus abstraktesnė, nei prieš tai buvusios dalys.&lt;br /&gt;
&lt;br /&gt;
=== Ką turėtų daryti programa? ===&lt;br /&gt;
&lt;br /&gt;
Pirmas dalykas, ką reikia padaryti (kad ir kaip akivaizdžiai tai skamba), tai suprasti, ką turėtų daryti teisingai veikianti programa. Sugalvok kelis tikrinimo scenarijus ir pažiūrėk, kas nutiks. Tarkime, kad aš noriu sukurti programą, kuri suskaičiuoja stačiakampio perimetrą (visų kraštinių sumą). Turiu tokius tikrinimo scenarijus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!aukštis !! plotis !!perimetras&lt;br /&gt;
|-&lt;br /&gt;
|3 ||4 ||14&lt;br /&gt;
|--&lt;br /&gt;
|2 ||3 ||10&lt;br /&gt;
|-&lt;br /&gt;
|4 ||4 ||16&lt;br /&gt;
|-&lt;br /&gt;
|2 ||2 ||8&lt;br /&gt;
|-&lt;br /&gt;
|5 ||1 ||12&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabar galiu vykdyti savo programą su visais tikrinimo scenarijais ir pamatyti, ar programa daro tai, ko tikiuosi. Jei ne, turiu suprasti, ką iš tiesų daro kompiuteris.&lt;br /&gt;
&lt;br /&gt;
Dažniausiai, dalis tikrinimo scenarijų veikia, dalis - ne. Jei toks yra ir tavo atvejis, turėtum bandyti suprasti, ką veikiantys scenarijai turi bendro. &lt;br /&gt;
Pavyzdžiui, apačioje yra perimetro programos išvestis (kodas bus pateiktas kiek vėliau):&lt;br /&gt;
&lt;br /&gt;
 Aukštis: '''3'''&lt;br /&gt;
 Plotis: '''4'''&lt;br /&gt;
 Perimetras = 15&lt;br /&gt;
&lt;br /&gt;
 Aukštis: '''2'''&lt;br /&gt;
 Plotis: '''3'''&lt;br /&gt;
 Perimetras = 11&lt;br /&gt;
&lt;br /&gt;
 Aukštis: '''4'''&lt;br /&gt;
 Plotis: '''4'''&lt;br /&gt;
 Perimetras = 16&lt;br /&gt;
&lt;br /&gt;
 Aukštis: '''2'''&lt;br /&gt;
 Plotis: '''2'''&lt;br /&gt;
 Perimetras = 8&lt;br /&gt;
&lt;br /&gt;
 Aukštis: '''5'''&lt;br /&gt;
 Plotis: '''1'''&lt;br /&gt;
 Perimetras = 8&lt;br /&gt;
&lt;br /&gt;
Gali pastebėti, kad programa neveikė su pirmomis dvejomis įvestimis, veikė su sekančiomis dvejomis ir vėl neveikė su paskutine. Pabandyk sugalvoti, kas yra bendro tarp veikiančių scenarijų. Kai supranti, kokia yra programos problema, atrasti jos priežastį yra daug lengviau. Jei reikia, savo programoms gali sugalvoti ir daugiau tikrinimo scenarijų.&lt;br /&gt;
&lt;br /&gt;
=== Ką daro programa? ===&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, ką reikia padaryti, tai peržiūrėti pirminį programos tekstą. Tai vienas iš svarbiausių dalykų programavime. Pagrindinis būdas, kaip tai daroma - tai kodo peržiūros.&lt;br /&gt;
&lt;br /&gt;
Kodo peržiūra prasideda pirma eilute ir tęsiasi iki programos galo. &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; ciklai ir &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakiniai reiškia, kad kai kurios eilutės gali būti nekviečiamos niekada, o kai kurios - vykdomos keletą kartų. Kiekvienoje eilutėje turi suprasti, ką daro Python'as.&lt;br /&gt;
&lt;br /&gt;
Pradėkime su paprasta parametro programa. Šios programos nerašyk. Tau reikės ją tik skaityti, ne vykdyti. Programos pirminis tekstas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
aukstis = int(input(&amp;quot;Aukštis: &amp;quot;))&lt;br /&gt;
plotis = int(input(&amp;quot;Plotis: &amp;quot;))&lt;br /&gt;
print(&amp;quot;perimetras =&amp;quot;, plotis + aukstis + plotis + plotis)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; ''Klausimas:'' Kuri eilutė vykdoma pirma?&lt;br /&gt;
: ''Atsakymas:'' Pirmoji kodo eilutė visada yra vykdoma pirma. Šiuo atveju tai: &amp;lt;code&amp;gt;aukstis = int(input(&amp;quot;Aukštis: &amp;quot;))&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Spausdina &amp;lt;code&amp;gt;Aukštis: &amp;lt;/code&amp;gt;, laukia, kol naudotojas įves teksto eilutę ir ją konvertuoja į sveikąjį kintamąjį &amp;lt;code&amp;gt;aukstis&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Bendrai, tai yra kita eilutė, kuri yra &amp;lt;code&amp;gt;plotis= int(input(&amp;quot;Plotis: &amp;quot;))&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Spausdina &amp;lt;code&amp;gt;Plotis: &amp;lt;/code&amp;gt;, laukia, kol naudotojas įves teksto eilutę ir ją konvertuoja į sveikąjį kintamąjį &amp;lt;code&amp;gt;plotis&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Kai kita eilutė nėra daugiau ar mažiau įtraukta, nei esama eilutė, ji ir yra vykdoma. Šiuo atveju tai: &amp;lt;code&amp;gt;print(&amp;quot;perimetras =&amp;quot;, plotis + aukstis + plotis + plotis)&amp;lt;/code&amp;gt; (Taip pat gali būti kviečiama funkcija esamoje eilutėje, bet tai bus paaiškinta tolimesniame skyriuje)                                                                       &lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Visų pirma, ji spausdina &amp;lt;code&amp;gt;perimetras = &amp;lt;/code&amp;gt;, o tada - sumą, sudarytą iš kintamųjų &amp;lt;code&amp;gt;plotis&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;aukstis&amp;lt;/code&amp;gt;, kuri užrašoma taip: &amp;lt;code&amp;gt;plotis + aukstis + plotis + plotis&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Ar kodas &amp;lt;code&amp;gt;plotis + aukstis + plotis + plotis&amp;lt;/code&amp;gt; skaičiuoja perimetrą teisingai?&lt;br /&gt;
: Pažiūrėk: stačiakampio perimetras yra apatinė kraštinė (plotis), plius kairė (aukstis), plius viršutinė (plotis), plius dešinė kraštinė (a?). Paskutinis kintamasis turėtų būti dešinės kraštinės ilgis, arba kitaip - aukštis.&lt;br /&gt;
; Ar supranti, kodėl, kai kuriais atvejais, skaičiuojant perimetrą buvo gaunamas teisingas atsakymas?                                                                             &lt;br /&gt;
: Teisingas atsakymas buvo gaunamas kai aukštis ir plotis buvo lygūs.&lt;br /&gt;
&lt;br /&gt;
Kita programa, kurios kodo peržiūrą darysime, tai programa, kuri turėtų ekrane išvesti 5 taškus. Tačiau, programos išvestis yra:&lt;br /&gt;
&lt;br /&gt;
 . . . . &lt;br /&gt;
&lt;br /&gt;
Programa:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaicius = 5&lt;br /&gt;
while skaicius &amp;gt; 1:&lt;br /&gt;
    print(&amp;quot;.&amp;quot;,pabaiga=&amp;quot; &amp;quot;)&lt;br /&gt;
    skaicius = skaicius - 1&lt;br /&gt;
print()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šios programos peržiūra bus kiek sudėtingesnė, nes joje yra įtrauktų kodo dalių. Pradėk.&lt;br /&gt;
; Kuri eilutė vykdoma pirma?&lt;br /&gt;
: Pirmoji kodo eilutė: &amp;lt;code&amp;gt;skaicius = 5&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Priskiria skaičių 5 kintamajam &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Kita eilutė yra: &amp;lt;code&amp;gt;while skaicius &amp;gt; 1:&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Na, &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; sakiniai žiūri į juose esančius reiškinius. Jei jie yra tesingi, vykdomas kitas įtrauktas blokas. Jei klaidingi - įtrauktas blokas yra praleidžiamas.&lt;br /&gt;
; Tai ką ji daro šiuo atveju?&lt;br /&gt;
: Jei &amp;lt;code&amp;gt;skaicius &amp;gt; 1&amp;lt;/code&amp;gt; yra teisinga, bus vykdomos kitos dvi eilutės.&lt;br /&gt;
; Taigi, ar &amp;lt;code&amp;gt;skaicius &amp;gt; 1&amp;lt;/code&amp;gt;?&lt;br /&gt;
: Paskutinė vertė, kuri buvo priskirta &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; buvo &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;5 &amp;gt; 1&amp;lt;/code&amp;gt;, taigi - taip.&lt;br /&gt;
; O kuri eilutė vykdoma po to?&lt;br /&gt;
: Kadangi &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; buvo teisinga, tai kita eilutė yra: &amp;lt;code&amp;gt;print(&amp;quot;.&amp;quot;,end=&amp;quot; &amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Spausdina vieną tašką. Kadangi funkcija turi papildomą argumentą &amp;lt;code&amp;gt;pabaiga=&amp;quot; &amp;quot;&amp;lt;/code&amp;gt;, toliau spausdinamas tekstas nebus pradedamas naujoje eilutėje.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: &amp;lt;code&amp;gt;skaicius = skaicius - 1&amp;lt;/code&amp;gt;, nes tai yra kita eilutė ir nėra jokių įtraukos pasikeitimų.&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Eilutė skaičiuoja &amp;lt;code&amp;gt;skaicius - 1&amp;lt;/code&amp;gt;: iš esamos &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; vertės (5) atimamas 1, ir tai tampa nauja kintamojo &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmė. Sutrumpintai, &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; vertė yra pakeičiama iš 5 į 4.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Įtraukos lygis keičiasi, todėl turi žiūrėti į tai, kokią valdymo struktūrą turime. Peržiūrėk &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; ciklą, taigi turi grįžti į &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; sąlygą, kuri yra &amp;lt;code&amp;gt;while skaicius &amp;gt; 1:&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Eilutė žiūri į &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę, kuri yra 4, ir lygina ją su 1. Kadangi &amp;lt;code&amp;gt;4 &amp;gt; 1&amp;lt;/code&amp;gt;, ciklas tęsiasi.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Kadangi ciklo sąlyga buvo teisinga, kita eilutė yra: &amp;lt;code&amp;gt;print(&amp;quot;.&amp;quot;,pabaiga=&amp;quot; &amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Ekrane išspausdina dar vieną tašką, po jo padėdama tarpą.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Nėra įtraukos pokyčio, todėl: &amp;lt;code&amp;gt;skaicius = skaicius - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ir ką ji daro?&lt;br /&gt;
: Ima dabartinę &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę (4), atima 1, kas yra lygu 3 ir priskiria 3 kaip naują &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Kadangi turime įtraukos pokytį dėl ciklo, kita eilutė yra: &amp;lt;code&amp;gt;while skaicius &amp;gt; 1:&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Palygina dabartinę &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę (3) su 1. &amp;lt;code&amp;gt;3 &amp;gt; 1&amp;lt;/code&amp;gt;, todėl ciklas tęsiasi.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Kadangi ciklo sąlyga yra teisinga, kita eilutė: &amp;lt;code&amp;gt;print(&amp;quot;.&amp;quot;,pabaiga=&amp;quot; &amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
; O ji daro?&lt;br /&gt;
: Trečias taškas yra spausdinamas eilutėje.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Tai: &amp;lt;code&amp;gt;skaicius = skaicius - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Ima dabartinę &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę (3), atima 1, kas yra lygu 2 ir priskiria 2 kaip naują &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Vėl grįžtame į ciklo pradžią: &amp;lt;code&amp;gt;while skaicius &amp;gt; 1:&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Palygina dabartinę &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę (2) su 1. &amp;lt;code&amp;gt;2 &amp;gt; 1&amp;lt;/code&amp;gt;, todėl ciklas tęsiasi.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Kadangi ciklas tęsiasi: &amp;lt;code&amp;gt;print(&amp;quot;.&amp;quot;,pabaiga=&amp;quot; &amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Atranda atsakymą gyvenimui, Visatai, ir viskam. Juokauju (turėjau patikrinti, kad dar neužmigai). Eilutė spausdina ketvirtą tašką ekrane.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Tai: &amp;lt;code&amp;gt;skaicius = skaicius - 1&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Ima dabartinę &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę (2), atima 1, kas yra lygu 1 ir priskiria 1 kaip naują &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Atgal į ciklo pradžią: &amp;lt;code&amp;gt;while skaicius &amp;gt; 1:&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Ji palygina &amp;lt;code&amp;gt;skaicius&amp;lt;/code&amp;gt; reikšmę (1) to 1. Kadangi &amp;lt;code&amp;gt;1 &amp;gt; 1&amp;lt;/code&amp;gt; yra klaidinga (vienas nėra daugiau nei vienas), ciklas baigiasi.&lt;br /&gt;
; Kuri eilutė vykdoma po to?&lt;br /&gt;
: Kadangi ciklo sąlyga buvo klaidinga, vykdoma kita eilutė esanti už ciklo. Tai yra: &amp;lt;code&amp;gt;print()&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Priverčia ekraną eiti į sekančią eilutę.&lt;br /&gt;
; Kodėl programa nespausdina 5 taškų?&lt;br /&gt;
: Ciklas baigiasi vienu tašku per anksti.&lt;br /&gt;
; Kaip tai sutvarkyti?&lt;br /&gt;
: Priversti ciklą baigtis vienu tašku vėliau.&lt;br /&gt;
; Ir kaip tai padaryti?&lt;br /&gt;
: Yra keli būdai. Vienas iš jų yra pakeisti ciklo sąlygą į: &amp;lt;code&amp;gt;while skaicius &amp;gt; 0:&amp;lt;/code&amp;gt;. Kitas būdas pakeisti sąlygą į: &amp;lt;code&amp;gt;skaicius &amp;gt;= 1&amp;lt;/code&amp;gt;. Yra ir daugiau būdų.&lt;br /&gt;
&lt;br /&gt;
=== Kaip turėčiau taisyti savo programą? ===&lt;br /&gt;
&lt;br /&gt;
Tau reikia suprasti, ką programa daro. Tau reikia suprasti, ką programa turėtų daryti. Suprasti, koks skirtumas tarp šių dviejų dalykų. Derinimas - tai įgūdis, kurį norint išmokti, reikia daug praktikos. Jei po valandos nepavyksta išspręsti problemos, pailsėk, pakalbėk su kuo nors apie tai. Po kurio laiko sugrįžk prie problemos ir greičiausiai turėsi naujų minčių, kaip ją įveikti. Sėkmės.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Decisions |next=Defining Functions}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=3583</id>
		<title>Python Vadovėlis/Rekursinės funkcijos</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=3583"/>
		<updated>2021-11-30T16:30:53Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vieniems šis skyrius gali pasirodyti naudingas, o kitiems - painus. Jeigu tau informacija pasirodys paini, tai nesuk galvos ir praleisk,  prie šio skyriaus galėsi grįžti šiek tiek vėliau. O dabar pabandom pasižiūrėti į mūsų parašytą programą:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def mult(a, b): #multiplication angliškai daugyba&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return 0&lt;br /&gt;
    rest= mult(a, b - 1) #rest angliškai likutis&lt;br /&gt;
    value= a + rest #value angliškai reikšmė&lt;br /&gt;
    return value&lt;br /&gt;
result = mult(3, 2) #result angliškai rezultatas&lt;br /&gt;
print(&amp;quot;3 * 2 = &amp;quot;, result)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Iš esmės ši programa, tai teigiama sveikųjų skaičių daugybos funkcija (reik atkreipti dėmesį į tai, kad Python'o programavimo kalboje jau yra integruota funkcija dauginimui, čia mes patys parašėme lengvai suprantamą pavyzdį (jeigu kurtume tokią funkciją patys), kuris parodo kaip atrodo daugybos veiksmas. Šioje programoje gali pamatyti rekursijos naudojimą, tai yra iteracijos (kartojimo) forma, kai funkcija yra pakartotinai iškviečiama, kol bus įvykdyta sukurta išvesties sąlyga. Programa naudoja pakartotinius papildymus, kad gautų tą patį rezultatą kaip ir daugyba: pavyzdžiui 3 + 3 (sudėtis) duoda tą patį rezultatą kaip ir 3 * 2 (daugyba).&lt;br /&gt;
&lt;br /&gt;
; ''Klausimas:'' Ką pirmiausia daro programa?&lt;br /&gt;
: ''Atsakymas:'' Pirmiausia yra aprašyta funkcija daugink:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def mult(a, b):&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return 0&lt;br /&gt;
    rest = mult(a, b - 1)&lt;br /&gt;
    value = a + rest&lt;br /&gt;
    return value&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Tai sukuria funkciją, kuri paima du parametrus ir grąžina reikšmę, kai ji atitinka reikiamą rezultatą. Vėliau šią funkciją galima paleisti.&lt;br /&gt;
; Kas nutinka toliau?  &lt;br /&gt;
: Vykdoma kita eilutė einanti po funkcijos &amp;lt;code&amp;gt;result = mult(3, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Ši eilutė priskiria grąžinimo reikšmę &amp;lt;code&amp;gt;mult(3, 2)&amp;lt;/code&amp;gt; kintamajam &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Ką grąžina &amp;lt;code&amp;gt;mult(3, 2)&amp;lt;/code&amp;gt;?&lt;br /&gt;
: Norėdami tai išsiaiškinti, turime peržiūrėti funkciją &amp;lt;code&amp;gt;mult()&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kas vyksta su kodu?&lt;br /&gt;
: Kintamasis &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; gauna jam priskirtą reikšmę 3, o kintamasis &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; - jam priskirtą reikšmę 2.&lt;br /&gt;
; Kas nutinka tada?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;if b == 0:&amp;lt;/code&amp;gt;. Kadangi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmė yra 2, todėl eilutė &amp;lt;code&amp;gt;return 0&amp;lt;/code&amp;gt; praleidžiama.&lt;br /&gt;
; Kas vyksta toliau?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;rest = mult (a, b - 1)&amp;lt;/code&amp;gt;. Ši eilutė nustato lokalaus kintamojo &amp;lt;code&amp;gt;rest&amp;lt;/code&amp;gt; reikšmę į &amp;lt;code&amp;gt;mult (a, b - 1)&amp;lt;/code&amp;gt; reikšmę. &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmė yra 3, o &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; - 2, todėl funkcija kviečia funkciją&amp;lt;code&amp;gt;mult (3,1)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Taigi kokia yra &amp;lt;code&amp;gt;mult (3, 1)&amp;lt;/code&amp;gt; reikšmė?&lt;br /&gt;
: Turime paleisti funkciją &amp;lt;code&amp;gt;mult()&amp;lt;/code&amp;gt; su parametrais, kurie yra 3 ir 1.&lt;br /&gt;
; Kas nutinka toliau?&lt;br /&gt;
: Lokalūs kintamieji vėl pasileidus kodui jau yra nustatyti, todėl &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmė būtų 3, o &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmė -1. Kadangi jie yra lokalūs kintamieji, todėl jie neturi įtakos ankstesnėms &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmėms.&lt;br /&gt;
; Kas įvyksta toliau?&lt;br /&gt;
: Kadangi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; turi reikšmę 1, if teiginys yra neigiamas, todėl vykdoma kita eilutė &amp;lt;code&amp;gt;rest = mult (a, b - 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Ši eilutė &amp;lt;code&amp;gt;mult (3, 0)&amp;lt;/code&amp;gt; reikšmę priskiria kitiems.&lt;br /&gt;
; Ką daro ši reikšmė?&lt;br /&gt;
: Norėdami tai išsiaiškinti, turime dar kartą paleisti funkciją. Šį kartą &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmė yra 3, o &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; - 0.&lt;br /&gt;
; Kas vyksta toliau?&lt;br /&gt;
: Pirmoji vykdytinos funkcijos eilutė yra &amp;lt;code&amp;gt;if b == 0:&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmė 0, todėl kita vykdoma eilutė yra &amp;lt;code&amp;gt;return 0&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro &amp;lt;code&amp;gt;return 0&amp;lt;/code&amp;gt; eilutė?&lt;br /&gt;
: Ši eilutė grąžina funkcijos reikšmę lygią 0.&lt;br /&gt;
; Kas iš to?&lt;br /&gt;
: Dabar mes žinome, kad &amp;lt;code&amp;gt;mult (3, 0)&amp;lt;/code&amp;gt; turi reikšmę 0. Dar žinome, ką daro eilutė &amp;lt;code&amp;gt;rest = mult (a, b - 1)&amp;lt;/code&amp;gt;, nes paleidžiame funkciją &amp;lt;code&amp;gt;mult()&amp;lt;/code&amp;gt; su parametrais 3 ir 0. Baigiame vykdyti &amp;lt;code&amp;gt;mult (3, 0)&amp;lt;/code&amp;gt; ir dabar vėl pradedame vykdyti &amp;lt;code&amp;gt;mult (3, 1)&amp;lt;/code&amp;gt;. Kintamajam &amp;lt;code&amp;gt;rest&amp;lt;/code&amp;gt; priskiriama vertė 0.&lt;br /&gt;
; Kurią eilutę kompiuteris skaito po to?&lt;br /&gt;
: Toliau vykdoma eilutė &amp;lt;code&amp;gt;value = a + rest&amp;lt;/code&amp;gt;. Žinome, kad &amp;lt;code&amp;gt;a = 3&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;rest = 0&amp;lt;/code&amp;gt; todėl dabar &amp;lt;code&amp;gt;value = 3&amp;lt;/code&amp;gt;. &lt;br /&gt;
; Kas nutinka toliau?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;return value&amp;lt;/code&amp;gt;, kuri grąžina reikšmę 3. Šis skaičius atsiranda iš funkcijos &amp;lt;code&amp;gt;mult (3, 1)&amp;lt;/code&amp;gt; vykdymo. Iškvietus &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;, grįžtame prie &amp;lt;code&amp;gt;mult (3, 2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kur yra &amp;lt;code&amp;gt;mult (3, 2)&amp;lt;/code&amp;gt;?&lt;br /&gt;
: Mes turėjome kintamuosius &amp;lt;code&amp;gt;a = 3&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b = 2&amp;lt;/code&amp;gt; ir nagrinėjome eilutę &amp;lt;code&amp;gt;rest = mult (a, b - 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kas įvyksta?&lt;br /&gt;
: Kintamajam &amp;lt;code&amp;gt;rest&amp;lt;/code&amp;gt; priskiriama reikšmė 3. Kita eilutė &amp;lt;code&amp;gt;value = a + rest&amp;lt;/code&amp;gt; nustato &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;3 + 3&amp;lt;/code&amp;gt; arba 6.  &lt;br /&gt;
; Kas įvyksta toliau?&lt;br /&gt;
: Pradeda veikti kita eilutė, kuri grąžina 6 iš funkcijos. Tuomet grįžtame prie eilutės &amp;lt;code&amp;gt;result = mult(3, 2)&amp;lt;/code&amp;gt;, kuriai dabar galima priskirti reikšmę 6 kintamajam &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt;&lt;br /&gt;
; Kas nutinka toliau?  &lt;br /&gt;
: Paleidžiama kita eilutė po funkcijos &amp;lt;code&amp;gt;print (&amp;quot;3 * 2 =&amp;quot;, result)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Ji spausdina &amp;lt;code&amp;gt;3 * 2 =&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; reikšmę, kuri yra 6. Visa išspausdinta eilutė yra &amp;lt;code&amp;gt;3 * 2 = 6&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Taigi, kas čia įvyko apskritai?  &lt;br /&gt;
: Iš esmės panaudojome du skirtingus faktus, kad apskaičiuotume dviejų skaičių kartotinį. Pirmas, kad bet koks skaičius padauginus iš nulio yra nulis &amp;lt;code&amp;gt;(x * 0 = 0)&amp;lt;/code&amp;gt;. Antras, kad skaičius padaugintas iš kito skaičiaus yra lygus pirmam skaičiui ir pirmas skaičius yra  vienu skaitmeniu mažesnis už antrajį skaičių &amp;lt;code&amp;gt;(x * y = x + x * (y - 1))&amp;lt;/code&amp;gt;. Taigi ir čia &amp;lt;code&amp;gt;3 * 2&amp;lt;/code&amp;gt; pirmiausiai paverčiamas į &amp;lt;code&amp;gt;3 + 3 * 1&amp;lt;/code&amp;gt;. Tada &amp;lt;code&amp;gt;3 * 1&amp;lt;/code&amp;gt; paverčiamas į &amp;lt;code&amp;gt;3 + 3 * 0&amp;lt;/code&amp;gt;. Tuomet mes žinome, kad bet kuris skaičius padaugintas iš nulio yra nulis, todėl &amp;lt;code&amp;gt;3 * 0&amp;lt;/code&amp;gt; yra 0. Tuomet galime apskaičiuoti, kad &amp;lt;code&amp;gt;3 + 3 * 0&amp;lt;/code&amp;gt; yra &amp;lt;code&amp;gt;3 + 0&amp;lt;/code&amp;gt; arba kitaip tariant tiesiog &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Tuomet mes žinome, kas yra &amp;lt;code&amp;gt;3 * 1&amp;lt;/code&amp;gt;, todėl galime apskaičiuoti, kad &amp;lt;code&amp;gt;3 + 3 * 1&amp;lt;/code&amp;gt; yra &amp;lt;code&amp;gt;3 + 3&amp;lt;/code&amp;gt; arba kitaip tariant &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Štai kaip viskas veikia:&lt;br /&gt;
&lt;br /&gt;
 mult(3, 2)&lt;br /&gt;
 3 + mult(3, 1)&lt;br /&gt;
 3 + 3 + mult(3, 0)&lt;br /&gt;
 3 + 3 + 0&lt;br /&gt;
 3 + 3&lt;br /&gt;
 6&lt;br /&gt;
&lt;br /&gt;
==== Rekursija ====&lt;br /&gt;
Programavimo konstrukcijos, išsprendžiančios problemą išsprendžiant mažesnę tos pačios problemos versiją, vadinamos „rekursyviomis“. Šio skyriaus pavyzdžiuose rekursija realizuojama apibrėžiant funkciją, kuri pati save iškviečia. Tai palengvina programavimo užduočių spendimų įgyvendinimą, nes kartais pakanka apsvarstyti tik vieną problemos žingsnį, o ne visą problemą iš karto. Be to tai leidžia išreikšti kai kurias matematines sąvokas paprastu, lengvai skaitomu kodu.&lt;br /&gt;
&lt;br /&gt;
Bet kokią problemą, kurią galime išspręsti naudojant rekursiją, gali būti išspręsta naudojant ciklus. Jie veikia greičiau, bet kartais ciklus sunku atlikti teisingai.&lt;br /&gt;
&lt;br /&gt;
Turbūt intuityviausias „rekursijos“ apibrėžimas yra toks:&lt;br /&gt;
; Rekursija&lt;br /&gt;
: Jei vis dar nesupranti, tai skaityk: REKURSIJA.&lt;br /&gt;
Pabandyk perskaityti faktinį pavyzdį, jei nesupratai daugybos pavyzdžio.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
'''faktorialas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#apibrėžia funkciją, kuri apskaičiuoja koeficientą&lt;br /&gt;
&lt;br /&gt;
def faktorialas(n):&lt;br /&gt;
    if n == 0:&lt;br /&gt;
        return 1&lt;br /&gt;
    if n&amp;lt;0:&lt;br /&gt;
        return &amp;quot;Klaida, neigiami skaičiai neturi faktorialo reikšmių!!&amp;quot;&lt;br /&gt;
    return n * faktorialas(n - 1)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;2! =&amp;quot;, faktorialas(2))&lt;br /&gt;
print(&amp;quot;3! =&amp;quot;, faktorialas(3))&lt;br /&gt;
print(&amp;quot;4! =&amp;quot;, faktorialas(4))&lt;br /&gt;
print(&amp;quot;5! =&amp;quot;, faktorialas(5))&lt;br /&gt;
print(&amp;quot;-3! =&amp;quot;, faktorialas(-3))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
 &lt;br /&gt;
 2! = 2&lt;br /&gt;
 3! = 6&lt;br /&gt;
 4! = 24&lt;br /&gt;
 5! = 120&lt;br /&gt;
 -3! = Klaida, neigiami skaičiai neturi faktorialo reikšmių!!&lt;br /&gt;
&lt;br /&gt;
'''atgalinis_kaičiavimas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def atgalinis_kaičiavimas(n):&lt;br /&gt;
    print(n)&lt;br /&gt;
    if n &amp;gt; 0:&lt;br /&gt;
        return atgalinis_kaičiavimas(n-1)&lt;br /&gt;
&lt;br /&gt;
atgalinis_kaičiavimas(5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
 5&lt;br /&gt;
 4&lt;br /&gt;
 3&lt;br /&gt;
 2&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Dabar pabandyk žodį &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;(lietuviškai jei) pakeisti žodžiu &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; (lietuviškai kol). Pamatysi, kad kompiuteris pavirto skaičiuotuvu, kuris negali suskaičiuoti iki keturių. Iš esmės &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;(kol) veikia kaip &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; (jei) ir &amp;lt;code&amp;gt;repeat&amp;lt;/code&amp;gt;(angl. pakartok) kartu sudėjus.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Defining Functions |next=Lists}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3582</id>
		<title>Python Vadovėlis/Įvadas į objektinį programavimą Python 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3582"/>
		<updated>2021-11-24T17:53:31Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Objektinis programavimas==&lt;br /&gt;
&lt;br /&gt;
Iki šiol rašei kodą pagal procedūrinio programavimo taisykles. Tačiau, yra daug programų, kurios - parašytos pagal objektinio programavimo taisykles. Žinoti abu programavimo tipus ir jų skirtumus yra labai svarbu. Informatikoje, daug svarbių kalbų kaip C++ ar Java dažnai naudoja objektinio programavimo taisykles.&lt;br /&gt;
&lt;br /&gt;
Pradedantiesiems ir mokiniams, neturintiems programavimo žinių, objektinis programavimas dažnai gali atrodyti painus ir tai yra visiškai normalu. Nesijausk blogai, jei nesiseka suprasti iš pat pradžių. Jei šis skyrius nepadės tau suprasti, yra ir daugiau informatyvių šaltinių, kurie padės atsakyti į visus klausimus.&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra padalintas į keletą pamokų. Kiekviena pamoka - skirta paaiškinti skirtingas objektinio programavimo dalis. &amp;lt;b&amp;gt;LABAI SVARBU&amp;lt;/b&amp;gt; suprasti jas visas. Nepamiršk prieš kiekvieną pamoką perskaityti įžangą, kuri paaiškins pagrindines idėjas, sąvokas ir kitas objektinio programavimo sritis.&lt;br /&gt;
&lt;br /&gt;
==Įžanga==&lt;br /&gt;
&lt;br /&gt;
Galvok apie procedūrą kaip apie funkciją. Funkcija turi konkrečią paskyrtį ir jų gali būti įvairių: rinkti įvestis, atlikti matematinius skaičiavimus, atvaizduoti ar manipuliuoti duomenis. Paprastai, procedūros manipuliuoja duomenis, kurie yra aprašyti atskirai. Šie duomenys yra dažnai perduodami iš vienos procedūros į kitą. Ir kai programa pasidaro per didelė, tai padaro duomenų perdavimą komplikuotą.&lt;br /&gt;
Pavyzdžiui, parašei programą, kuri kintamuosiuose išsaugo produkto duomenis. Kai klientas paprašo informacijos apie produktą, kintamieji, kurie turi visą informaciją, yra perduodami įvairioms funkcijoms su skirtingomis paskirtimis. Laikui bėgant ir saugant vis daugiau duomenų apie turimus produktus, tu sugalvoji išsaugoti turimą informaciją sąrašuose ar žodynuose. Norint, jog tavo programa veiktų, tu dabar turi redaguoti kiekvieną funkciją, kuri naudojo tuos kintamuosius, taip, kad dabar ji galėtų priimti ir manipuliuoti sąrašus ar žodynus. Įsivaizduok kiek laiko tau reikėtų norint peržiūrėti ir pakeisti šimtus failų. Tu išprotėtum! Nekalbant apie tai, jog klaidas daro net ir labiausiai patyrę programuotojai, tad taip pat reikėtų taisyti begalę klaidų. Toks programavimas yra pernelyg neoptimalus.&lt;br /&gt;
Procedūrinis programavimas yra paremtas procedūromis (funkcijomis). Objektinis programavimas yra paremtas objektais. Ar prisimeni, kaip procedūrinė programa atskyrė duomenis nuo kodo? Ar prisimeni programą, kuri turėjo šimtus failų ir norint kažką pakeisti reikėdavo ilgai joje narpstytis? &lt;br /&gt;
Galvok apie &amp;lt;i&amp;gt;objektą&amp;lt;/i&amp;gt; kaip apie minėtų failų ir duomenų „kombinaciją“ į vieną esybę. Technine prasme, objektas yra esybė, kuri savyje turi duomenis ir procedūras (kodą, funkcijas, t.t.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Duomenis objekto viduje vadiname &amp;lt;i&amp;gt;atributais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Funkcijas ar procedūras objekto viduje vadiname &amp;lt;i&amp;gt;metodais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;duomenų atributus&amp;lt;/b&amp;gt; kaip apie kintamuosius. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;metodus&amp;lt;/b&amp;gt; kaip apie funkcijas ar procedūras. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į paprastą, kasdienį pavyzdį. Lemputė ir jungiklis tavo kambaryje.&lt;br /&gt;
Atributai bus štai tokie.&lt;br /&gt;
&lt;br /&gt;
* šviesa_įjungta (True False)&lt;br /&gt;
* jungiklio_pozicija (Viršuje arba Apačioje)&lt;br /&gt;
* elektros_tekėjimas (True arba False)&lt;br /&gt;
&lt;br /&gt;
Metodai būtų štai tokie.&lt;br /&gt;
&lt;br /&gt;
* pakeisti_jungiklio_poziciją&lt;br /&gt;
* pakeisti_elektros_tekėjimą&lt;br /&gt;
&lt;br /&gt;
Atributai gali būti matomi ir nematomi. Pavyzdžiui, tu negali matyti elektros tekančios į lemputę. Tu tik žinai, kad elektra išties teka, nes ji tuo metu skleidžia šviesą. Nepaisant to, tu gali matyti jungiklio poziciją (jungiklio_pozicija) ir taip pat tu matai ar šviesa yra įjungta ar ne (šviesa_įjungta). Kai kurie metodai yra &amp;lt;i&amp;gt;privatūs&amp;lt;/i&amp;gt;. Tai reiškia, jog jų neišeina tiesiogiai pakeisti. Pavyzdžiui, nebent būtų nukerpami laidai (to nedaryk ir dėl šio pavyzdžio; manyk, jog laidai neegzistuoja), tu negalėtum pakeisti elektros tėkmės tiesiogiai. Tu taip pat negali tiesiogiai įtakoti lemputės šviesos (ne, tu negali atsukti lemputės ar jos sudaužyti!). Bet tu visada gali šiuos atributus įtakoti netiesiogiai naudojant objekto &amp;lt;i&amp;gt;metodus&amp;lt;/i&amp;gt;. Jeigu nesumokėsi mokesčių, metodas pavadinimu &amp;lt;code&amp;gt;pakeisti_elektros_tekėjimą&amp;lt;/code&amp;gt; pakeis &amp;lt;code&amp;gt;elektros_tekėjimas&amp;lt;/code&amp;gt; reikšmę į FALSE. Jei tu įjungsi jungiklį, &amp;lt;code&amp;gt;pakeisti_jungiklio_poziciją&amp;lt;/code&amp;gt; metodas pakeis &amp;lt;code&amp;gt;šviesa_įjungta&amp;lt;/code&amp;gt; atributo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Dabar jau tikriausiai galvoji, „Ką tai turi bendro su Piton'u?“ ar, „Aš nesuprantu, bet kaip man sukurti tą objektą?“. Na, beveik priėjai prie atsakymų! Tik turiu paaiškinti dar vieną dalyką prieš neriant į kodą.&lt;br /&gt;
&lt;br /&gt;
Piton'e objekto atributai ir metodai yra nurodomi &amp;lt;b&amp;gt;klasės&amp;lt;/b&amp;gt;. Galvok apie klasę kaip apie objekto techninį piešinį. Pavyzdžiui, tavo namai - objektas kuriame gyveni - taip pat jį gali vadinti butu, vasarnamiu, prakartėle ar bet kuo kitu, buvo pastatytas naudojant techinius piešinius. Šie techniniai piešiniai būtų vadinami klasėmis, kurios buvo panaudotos projektuojant tavo namus, butą, vasarnamį, na, supranti apie ką kalbu. &lt;br /&gt;
&lt;br /&gt;
Dar kartą, klasė pasako, kaip sukurti objektą. Techniniais terminais tariant, ir tai yra labai svarbu, klasė nusako naudojamus duomenų atributus ir metodus objekte.&lt;br /&gt;
&lt;br /&gt;
Norint sukurti klasę, mes suprogramuojame &amp;lt;i&amp;gt;klasės apibrėžimą&amp;lt;/i&amp;gt;. Klasės apibrėžimas, tai grupė pareiškimų, kurie nusako objekto atributus ir metodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Pirma pamoka&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apačioje yra procedūrinė programa, kuri atlieka paprastą matematinį veiksmą su vartotojo įvestu skaičiu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
&lt;br /&gt;
# Procedūra 1&lt;br /&gt;
def main():&lt;br /&gt;
    try:&lt;br /&gt;
        # Pasiimk skaičių, kurį manipuliuosi.&lt;br /&gt;
        sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su pasiimtu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 2&lt;br /&gt;
        pridėksk= pridėkpenkis(sk)&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su ankščiau išsaugotu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 3&lt;br /&gt;
        dauginksk= daugink(pridėksk)&lt;br /&gt;
        # Paduok skaičių procedūrai 4&lt;br /&gt;
        rodyk(dauginksk)&lt;br /&gt;
    # Susidorok su išimtimis, kurios gali atsirasti dėl netinkamo vartotojo skaičiaus įvedimo&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Privalai įvesti tinkamą skaičių.\n&amp;quot;)&lt;br /&gt;
        # Atstatyk kintamojo num reikšmę, kad ištrintum netinkamą vartotojo įvestį.&lt;br /&gt;
        sk = 0&lt;br /&gt;
        # Dar kartą iškviesk main.&lt;br /&gt;
        main()&lt;br /&gt;
&lt;br /&gt;
# Procedūra 2&lt;br /&gt;
def pridėkpenkis(sk):&lt;br /&gt;
    return sk + 5&lt;br /&gt;
&lt;br /&gt;
# Procedūra 3&lt;br /&gt;
def daugink(pridėksk):&lt;br /&gt;
    return pridėksk * 2.452&lt;br /&gt;
&lt;br /&gt;
# Procedūra 4&lt;br /&gt;
def rodyk(dauginksk):&lt;br /&gt;
    # Parodyk galutinį rezultatą.&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, dauginksk)&lt;br /&gt;
&lt;br /&gt;
# Kviesk procedūrą 1&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi skaitemnį &amp;quot;5&amp;quot;, gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 5&lt;br /&gt;
 Galutinis rezultatas yra 24.52&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi reikšmę &amp;quot;g&amp;quot;, tada pasitaisysi ir įrašysi skaitmenį &amp;quot;8&amp;quot;, tada gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 g&lt;br /&gt;
 Privalai įvesti tinkamą skaičių.&lt;br /&gt;
 &lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 8&lt;br /&gt;
 Galutinis rezultatas yra 31.875999999999998&lt;br /&gt;
&lt;br /&gt;
Žemiau matai klasę ir programą, kuri naudoja nurodytą klasę. Ši objektinio programavimo programavimo būdu parašyta programa daro tą patį, ką prieš tai darė procedūriniu programavimo būdu parašyta programa. Apžiūrėk keletą svarbių objektinio programavimo būdo konceptų prieš neriant į ankščiau minėtą klasę ir programą.&lt;br /&gt;
Norint sukurti klasę, naudok &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; raktažodį. Po raktažodžio rašyk pavadinimą, kurį norėtum, jog turėtų klasė. Dažnai naudojama praktika kuriant klasių pavadinimus yra &amp;lt;i&amp;gt;NaujųŽodžiųRašymasIšDidžiosiosRaidės&amp;lt;/i&amp;gt;.&lt;br /&gt;
Jei norėčiau sukurti klasę pavadinimu purvinoskojinės, kodas atrodytų taip:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class PurvinosKojinės&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iš pradžių pažiūrėk į klasę. Programa, kuri naudos šią klasę, bus parodyta paskui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Klasė&lt;br /&gt;
&lt;br /&gt;
class SkKeitimas:&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.__skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    def pridėkpenkis(self,sk):&lt;br /&gt;
        self.__skaičius = sk&lt;br /&gt;
        return self.__skaičius + 5&lt;br /&gt;
&lt;br /&gt;
    def padaugink(self,pridėtas):&lt;br /&gt;
        self.__pridėtas = pridėtas&lt;br /&gt;
        return self.__pridėtas * 2.452&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programa, kuri naudoja viršuje esančią klasę yra parašyta žemiau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Filename: ooppavyzdys.py&lt;br /&gt;
# Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Programa&lt;br /&gt;
&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&lt;br /&gt;
maths = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    pridėt = matkė.pridėkpenkis(sk)&lt;br /&gt;
&lt;br /&gt;
    daug = matkė.padaugink(pridėtas)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, daug )&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tikriausiai dabar esi pasimetęs. Tai visiškai suprantama. Iš pradžių, pasistenk suprasti klasę.&lt;br /&gt;
Klasė yra pavadinta &amp;quot;SkKeitimas&amp;quot;&lt;br /&gt;
Ši klasė turi tris metodus&lt;br /&gt;
* __init__&lt;br /&gt;
* pridėkpenkis&lt;br /&gt;
* padaugink&lt;br /&gt;
&lt;br /&gt;
Šie trys metodai savyje turi labai panašų kodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į tai, jog kiekvienas metodas turi parametrą pavadinimu „self“. Kiekvienas klasės metodas turi būtinai turėti šį parametrą. Šis parametras nebūtinai turi būti su pavadinimu „self“, bet tai yra priimta kaip gerosios praktikos, tad tikriausiai ir tu turėtum jį taip vadinti. Šis parametras yra reikalingas kiekviename metode nes, kai jis yra iškviečiamas, jis turi žinoti, su kuriuo objekto atributu turėtų atlikti operacijas. Net kai turi tik vieną objektą, turi pasirūpinti, kad programa žinotų, jog nori naudoti atributus aprašytus būtent toje klasėje. Todėl turi būti saugus ir naudoti „self“ parametrą.&lt;br /&gt;
&lt;br /&gt;
Peržiūrėk pirmą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dauguma Piton'o klasių turi &amp;lt;code&amp;gt;__init__&amp;lt;/code&amp;gt;, kuris yra paleidžiamas automatiškai kiekvieną kartą, kai atmintyje yra sukuriama tos klasės objektas (kai sukuriame nuorodą į klasę, yra sukuriama tos klasės &amp;lt;i&amp;gt;objektas&amp;lt;/i&amp;gt;). Šis metodas yra paprastai vadinamas &amp;lt;i&amp;gt;inicijavimo metodu&amp;lt;/i&amp;gt;. Kai šis metodas yra paleidžiamas, „self“ parametras yra automatiškai priskiriamas tariamam objektui. __init__ metodas inicijuoja klasės atributus, dėl šios priežasties jis yra pavadintas inicijavimo metodu. Po __init__ metodu, iš pradžių &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; atributui mes priskiriame 0.&lt;br /&gt;
Yra sukuriama nuorodą į turimo objekto atributą panaudojant taškinį žymėjimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
    self.__skaičius = 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kodas &amp;lt;code&amp;gt;self.__skaičius = 0&amp;lt;/code&amp;gt; reiškia, jog objekte esančio „skaičius“ atributo reikšmė yra 0.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į kitą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
    self.__skaičius = sk&lt;br /&gt;
    return self.__skaičius + 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „pridėkpenkis“. Jis priima parametrą pavadinimu „sk“. Metode esanti logika tada priskiria „sk“ reikšmę objekte esančiui atributui su pavadinimu „skaičius“. Tada metodas prideda 5 prie „skaičius“ ir jį grąžina jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į trečiajį metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
    self.__pridėtas= pridėtas&lt;br /&gt;
    return self.__pridėtas * 2.453&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „padaugink“. Jis priima parametrą pavadinimu „pridėtas“. Metodas priskiria priimtą reikšmę objekte esančiam atributui su pavadinimu „pridėtas“ ir grąžina „pridėtas“ atributo ir 2.452 sandaugą jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Ar atkreipei dėmesį į tai, jog kiekvienas metodo pavadinimas prasideda su dviem pabraukimais? Pabandyk tai suprasti.&lt;br /&gt;
Prieš tai buvo minėta, jog objektas, su metodų pagalba, dirba su atributais apibrėžtais jame pačiame. Būtų idealu, jei tuos atributus galėtum pakeisti TIK SU METODAIS ESANČIAIS PAČIAME OBJEKTE. Įmanoma turėti iššorinį kodą, kuris galėtų manipuliuoti tais pačiais atributais. Norint „paslėpti“ atributus, taip, kad juos matytų metodai aprašyti pačiame objekte, turi naudoti du pabraukimus prieš objekto pavadinimą, taip kaip ir buvo rodyta. Ištrynus abu pabraukimus nuo atributo pavadinimo tu juo galėsi manipuliuoti kodu, kuris yra parašytas objekto išorėje.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėki į programą, kuri naudoja aptartą klasę.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į pirmą eilutę, kuri nėra komentaras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši kodo eilutė importuoją klasę, kurią išsaugojai atskirame faile (modulyje). Klasės nebūtinai turi būti talpinamos atskiruose failuose, bet tai yra priimta kaip gerosios praktikos, tad yra verta jau nuo pat pradžių priprasti prie modulių importavimo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši eilutė sukuria SkKeitimas pavadinimu, „ooppavyzdys“ modulyje patalpintos klasės objektą, kuris yra priskiriamas „matkė“ kintamajam.&lt;br /&gt;
Sintaksė atrodo taip:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;i&amp;gt;moduliopavadinimas.Klasėspavadinimas()&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Apibrėžk main funkciją.&lt;br /&gt;
Pasiimk skaičių iš vartotojo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;pridėtas = matkė.pridėkpenkis(sk)&amp;lt;/code&amp;gt; nusiunčia „sk“ kintamojo reikšmę metodui pavadinimu „pridėkpenkis“. Metodas yra aprašytas klasėje, kurios objektą išsaugojai kintamajame pavadinimu „matkė“. „pridėkpenkis“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „pridėtas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;daug = matkė.daugink(pridėtas)&amp;lt;/code&amp;gt; nusiunčia „pridėtas“ kintamojo reikšmę metodui pavadinimu „daugink“. Metodas yra aprašytas klasėje, kurios objektą išsaugojome kintamajame pavadinimu „matkė“. „daugink“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „daug“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė atspausdina „Galutinis rezultatas yra &amp;lt;daug reikšmė&amp;gt;“. Paskutinė eilutė iškviečia main funkciją, kuri įvykdo žingsnius nurodytus viršuje.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Rekursija|next=Įvadas į importuotas bibliotekas ir kitas funkcijas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3581</id>
		<title>Python Vadovėlis/Terminai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3581"/>
		<updated>2021-11-24T17:48:54Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Computer - kompiuteris &lt;br /&gt;
&lt;br /&gt;
Container - konteineris&lt;br /&gt;
&lt;br /&gt;
Control strukture - valdymo struktūra&lt;br /&gt;
&lt;br /&gt;
Counter - skaitliukas &lt;br /&gt;
&lt;br /&gt;
Debugging - derinimas&lt;br /&gt;
&lt;br /&gt;
Directory - katalogas&lt;br /&gt;
&lt;br /&gt;
Exercise - pratimas&lt;br /&gt;
&lt;br /&gt;
Expression - reiškinys&lt;br /&gt;
&lt;br /&gt;
False - klaidinga&lt;br /&gt;
&lt;br /&gt;
Feature - ypatybė&lt;br /&gt;
&lt;br /&gt;
Floating point - slankusis kablelis&lt;br /&gt;
&lt;br /&gt;
Good practices - gerosios praktikos&lt;br /&gt;
&lt;br /&gt;
Hard-coded - įkoduotas/užprogramuotas&lt;br /&gt;
&lt;br /&gt;
IDLE - „IDLE“ kodo redaktorius/kodo redaktorius&lt;br /&gt;
&lt;br /&gt;
Indent - įtrauka&lt;br /&gt;
&lt;br /&gt;
Instance - objektas&lt;br /&gt;
&lt;br /&gt;
Item - elementas&lt;br /&gt;
&lt;br /&gt;
Iterable - iteruojamasis&lt;br /&gt;
&lt;br /&gt;
List - sąrašas&lt;br /&gt;
&lt;br /&gt;
Loop - ciklas&lt;br /&gt;
&lt;br /&gt;
Mouse - pelė&lt;br /&gt;
&lt;br /&gt;
Operator - operatorius&lt;br /&gt;
&lt;br /&gt;
Optional - pasirinktinas&lt;br /&gt;
&lt;br /&gt;
Output - išvestis/rezultatas&lt;br /&gt;
&lt;br /&gt;
Prepackaged - iš anksto paruošti paketai&lt;br /&gt;
&lt;br /&gt;
Prompt - kviesti&lt;br /&gt;
&lt;br /&gt;
Python - Python'as&lt;br /&gt;
&lt;br /&gt;
Run (daikt.) - vykdymas &lt;br /&gt;
&lt;br /&gt;
Shell - terminalas/kosolės langas&lt;br /&gt;
&lt;br /&gt;
Site-packages - svetainės paketai&lt;br /&gt;
&lt;br /&gt;
Solution - sprendimas&lt;br /&gt;
&lt;br /&gt;
Source code - pirminis programos tekstas&lt;br /&gt;
&lt;br /&gt;
Statement - sakinys&lt;br /&gt;
&lt;br /&gt;
String - eilutė&lt;br /&gt;
&lt;br /&gt;
Terminate - nutraukti darbą/stabdyti programą&lt;br /&gt;
&lt;br /&gt;
True - teisinga&lt;br /&gt;
&lt;br /&gt;
User - naudotojas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=FAQ |next=END}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3571</id>
		<title>Python Vadovėlis/Įvadas į objektinį programavimą Python 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3571"/>
		<updated>2021-11-23T17:27:33Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Objektinis programavimas==&lt;br /&gt;
&lt;br /&gt;
Iki šiol rašei kodą pagal procedūrinio programavimo taisykles. Tačiau, yra daug programų, kurios - parašytos pagal objektinio programavimo taisykles. Žinoti abu programavimo tipus ir jų skirtumus yra labai svarbu. Informatikoje, daug svarbių kalbų kaip C++ ar Java dažnai naudoja objektinio programavimo taisykles.&lt;br /&gt;
&lt;br /&gt;
Pradedantiesiems ir mokiniams, neturintiems programavimo žinių, objektinis programavimas dažnai gali atrodyti painus ir tai yra visiškai normalu. Nesijausk blogai, jei nesiseka suprasti iš pat pradžių. Jei šis skyrius nepadės tau suprasti, yra ir daugiau informatyvių šaltinių, kurie padės atsakyti į visus klausimus.&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra padalintas į keletą pamokų. Kiekviena pamoka - skirta paaiškinti skirtingas objektinio programavimo dalis. &amp;lt;b&amp;gt;LABAI SVARBU&amp;lt;/b&amp;gt; suprasti jas visas. Nepamiršk prieš kiekvieną pamoką perskaityti įžangą, kuri paaiškins pagrindines idėjas, sąvokas ir kitas objektinio programavimo sritis.&lt;br /&gt;
&lt;br /&gt;
==Įžanga==&lt;br /&gt;
&lt;br /&gt;
Galvok apie procedūrą kaip apie funkciją. Funkcija turi konkrečią paskyrtį ir jų gali būti įvairių: rinkti įvestis, atlikti matematinius skaičiavimus, atvaizduoti ar manipuliuoti duomenis. Paprastai, procedūros manipuliuoja duomenis, kurie yra aprašyti atskirai. Šie duomenys yra dažnai perduodami iš vienos procedūros į kitą. Ir kai programa pasidaro per didelė, tai padaro duomenų perdavimą komplikuotą.&lt;br /&gt;
Pavyzdžiui, parašei programą, kuri kintamuosiuose išsaugo produkto duomenis. Kai klientas paprašo informacijos apie produktą, kintamieji, kurie turi visą informaciją, yra perduodami įvairioms funkcijoms su skirtingomis paskirtimis. Laikui bėgant ir saugant vis daugiau duomenų apie turimus produktus, tu sugalvoji išsaugoti turimą informaciją sąrašuose ar žodynuose. Norint, jog tavo programa veiktų, tu dabar turi redaguoti kiekvieną funkciją, kuri naudojo tuos kintamuosius, taip, kad dabar ji galėtų priimti ir manipuliuoti sąrašus ar žodynus. Įsivaizduok kiek laiko tau reikėtų norint peržiūrėti ir pakeisti šimtus failų. Tu išprotėtum! Nekalbant apie tai, jog klaidas daro net ir labiausiai patyrę programuotojai, tad taip pat reikėtų taisyti begalę klaidų. Toks programavimas yra pernelyg neoptimalus.&lt;br /&gt;
Procedūrinis programavimas yra paremtas procedūromis (funkcijomis). Objektinis programavimas yra paremtas objektais. Ar prisimeni, kaip procedūrinė programa atskyrė duomenis nuo kodo? Ar prisimeni programą, kuri turėjo šimtus failų ir norint kažką pakeisti reikėdavo ilgai joje narpstytis? &lt;br /&gt;
Galvok apie &amp;lt;i&amp;gt;objektą&amp;lt;/i&amp;gt; kaip apie minėtų failų ir duomenų „kombinaciją“ į vieną esybę. Technine prasme, objektas yra esybė, kuri savyje turi duomenis ir procedūras (kodą, funkcijas, t.t.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Duomenis objekto viduje vadiname &amp;lt;i&amp;gt;atributais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Funkcijas ar procedūras objekto viduje vadiname &amp;lt;i&amp;gt;metodais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;duomenų atributus&amp;lt;/b&amp;gt; kaip apie kintamuosius. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;metodus&amp;lt;/b&amp;gt; kaip apie funkcijas ar procedūras. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į paprastą, kasdienį pavyzdį. Lemputė ir jungiklis tavo kambaryje.&lt;br /&gt;
Atributai bus štai tokie.&lt;br /&gt;
&lt;br /&gt;
* šviesa_įjungta (True False)&lt;br /&gt;
* jungiklio_pozicija (Viršuje arba Apačioje)&lt;br /&gt;
* elektros_tekėjimas (True arba False)&lt;br /&gt;
&lt;br /&gt;
Metodai būtų štai tokie.&lt;br /&gt;
&lt;br /&gt;
* pakeisti_jungiklio_poziciją&lt;br /&gt;
* pakeisti_elektros_tekėjimą&lt;br /&gt;
&lt;br /&gt;
Atributai gali būti matomi ir nematomi. Pavyzdžiui, tu negali matyti elektros tekančios į lemputę. Tu tik žinai, kad elektra išties teka, nes ji tuo metu skleidžia šviesą. Nepaisant to, tu gali matyti jungiklio poziciją (jungiklio_pozicija) ir taip pat tu matai ar šviesa yra įjungta ar ne (šviesa_įjungta). Kai kurie metodai yra &amp;lt;i&amp;gt;privatūs&amp;lt;/i&amp;gt;. Tai reiškia, jog jų neišeina tiesiogiai pakeisti. Pavyzdžiui, nebent būtų nukerpami laidai (to nedaryk ir dėl šio pavyzdžio; manyk, jog laidai neegzistuoja), tu negalėtum pakeisti elektros tėkmės tiesiogiai. Tu taip pat negali tiesiogiai įtakoti lemputės šviesos (ne, tu negali atsukti lemputės ar jos sudaužyti!). Bet tu visada gali šiuos atributus įtakoti netiesiogiai naudojant objekto &amp;lt;i&amp;gt;metodus&amp;lt;/i&amp;gt;. Jeigu nesumokėsi mokesčių, metodas pavadinimu &amp;lt;code&amp;gt;pakeisti_elektros_tekėjimą&amp;lt;/code&amp;gt; pakeis &amp;lt;code&amp;gt;elektros_tekėjimas&amp;lt;/code&amp;gt; reikšmę į FALSE. Jei tu įjungsi jungiklį, &amp;lt;code&amp;gt;pakeisti_jungiklio_poziciją&amp;lt;/code&amp;gt; metodas pakeis &amp;lt;code&amp;gt;šviesa_įjungta&amp;lt;/code&amp;gt; atributo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Dabar jau tikriausiai galvoji, „Ką tai turi bendro su Piton'u?“ ar, „Aš nesuprantu, bet kaip man sukurti tą objektą?“. Na, beveik priėjai prie atsakymų! Tik turiu paaiškinti dar vieną dalyką prieš neriant į kodą.&lt;br /&gt;
&lt;br /&gt;
Piton'e objekto atributai ir metodai yra nurodomi &amp;lt;b&amp;gt;klasės&amp;lt;/b&amp;gt;. Galvok apie klasę kaip apie objekto techninį piešinį. Pavyzdžiui, tavo namai - objektas kuriame gyveni - taip pat jį gali vadinti butu, vasarnamiu, prakartėle ar bet kuo kitu, buvo pastatytas naudojant techinius piešinius. Šie techniniai piešiniai būtų vadinami klasėmis, kurios buvo panaudotos projektuojant tavo namus, butą, vasarnamį, na, supranti apie ką kalbu. &lt;br /&gt;
&lt;br /&gt;
Dar kartą, klasė pasako, kaip sukurti objektą. Techniniais terminais tariant, ir tai yra labai svarbu, klasė nusako naudojamus duomenų atributus ir metodus objekte.&lt;br /&gt;
&lt;br /&gt;
Norint sukurti klasę, mes suprogramuojame &amp;lt;i&amp;gt;klasės apibrėžimą&amp;lt;/i&amp;gt;. Klasės apibrėžimas, tai grupė pareiškimų, kurie nusako objekto atributus ir metodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Pirma pamoka&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apačioje yra procedūrinė programa, kuri atlieka paprastą matematinį veiksmą su vartotojo įvestu skaičiu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
&lt;br /&gt;
# Procedūra 1&lt;br /&gt;
def main():&lt;br /&gt;
    try:&lt;br /&gt;
        # Pasiimk skaičių, kurį manipuliuosi.&lt;br /&gt;
        sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su pasiimtu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 2&lt;br /&gt;
        pridėksk= pridėkpenkis(sk)&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su ankščiau išsaugotu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 3&lt;br /&gt;
        dauginksk= daugink(pridėksk)&lt;br /&gt;
        # Paduok skaičių procedūrai 4&lt;br /&gt;
        rodyk(dauginksk)&lt;br /&gt;
    # Susidorok su išimtimis, kurios gali atsirasti dėl netinkamo vartotojo skaičiaus įvedimo&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Privalai įvesti tinkamą skaičių.\n&amp;quot;)&lt;br /&gt;
        # Atstatyk kintamojo num reikšmę, kad ištrintum netinkamą vartotojo įvestį.&lt;br /&gt;
        sk = 0&lt;br /&gt;
        # Dar kartą iškviesk main.&lt;br /&gt;
        main()&lt;br /&gt;
&lt;br /&gt;
# Procedūra 2&lt;br /&gt;
def pridėkpenkis(sk):&lt;br /&gt;
    return sk + 5&lt;br /&gt;
&lt;br /&gt;
# Procedūra 3&lt;br /&gt;
def daugink(pridėksk):&lt;br /&gt;
    return pridėksk * 2.452&lt;br /&gt;
&lt;br /&gt;
# Procedūra 4&lt;br /&gt;
def rodyk(dauginksk):&lt;br /&gt;
    # Parodyk galutinį rezultatą.&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, dauginksk)&lt;br /&gt;
&lt;br /&gt;
# Kviesk procedūrą 1&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi skaitemnį &amp;quot;5&amp;quot;, gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 5&lt;br /&gt;
 Galutinis rezultatas yra 24.52&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi reikšmę &amp;quot;g&amp;quot;, tada pasitaisysi ir įrašysi skaitmenį &amp;quot;8&amp;quot;, tada gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 g&lt;br /&gt;
 Privalai įvesti tinkamą skaičių.&lt;br /&gt;
 &lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 8&lt;br /&gt;
 Galutinis rezultatas yra 31.875999999999998&lt;br /&gt;
&lt;br /&gt;
Žemiau matai klasę ir programą, kuri naudoja nurodytą klasę. Ši objektinio programavimo programavimo būdu parašyta programa daro tą patį, ką prieš tai darė procedūriniu programavimo būdu parašyta programa. Apžiūrėk keletą svarbių objektinio programavimo būdo konceptų prieš neriant į ankščiau minėtą klasę ir programą.&lt;br /&gt;
Norint sukurti klasę, naudok &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; raktažodį. Po raktažodžio rašyk pavadinimą, kurį norėtum, jog turėtų klasė. Dažnai naudojama praktika kuriant klasių pavadinimus yra &amp;lt;i&amp;gt;NaujųŽodžiųRašymasIšDidžiosiosRaidės&amp;lt;/i&amp;gt;.&lt;br /&gt;
Jei norėčiau sukurti klasę pavadinimu purvinoskojinės, kodas atrodytų taip:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class PurvinosKojinės&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iš pradžių pažiūrėk į klasę. Programa, kuri naudos šią klasę, bus parodyta paskui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Klasė&lt;br /&gt;
&lt;br /&gt;
class SkKeitimas:&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.__skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    def pridėkpenkis(self,sk):&lt;br /&gt;
        self.__skaičius = sk&lt;br /&gt;
        return self.__skaičius + 5&lt;br /&gt;
&lt;br /&gt;
    def padaugink(self,pridėtas):&lt;br /&gt;
        self.__pridėtas = pridėtas&lt;br /&gt;
        return self.__pridėtas * 2.452&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programa, kuri naudoja viršuje esančią klasę yra parašyta žemiau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Filename: ooppavyzdys.py&lt;br /&gt;
# Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Programa&lt;br /&gt;
&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&lt;br /&gt;
maths = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    pridėt = matkė.pridėkpenkis(sk)&lt;br /&gt;
&lt;br /&gt;
    daug = matkė.padaugink(pridėtas)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, daug )&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tikriausiai dabar esi pasimetęs. Tai visiškai suprantama. Iš pradžių, pasistenk suprasti klasę.&lt;br /&gt;
Klasė yra pavadinta &amp;quot;SkKeitimas&amp;quot;&lt;br /&gt;
Ši klasė turi tris metodus&lt;br /&gt;
* __init__&lt;br /&gt;
* pridėkpenkis&lt;br /&gt;
* padaugink&lt;br /&gt;
&lt;br /&gt;
Šie trys metodai savyje turi labai panašų kodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į tai, jog kiekvienas metodas turi parametrą pavadinimu „self“. Kiekvienas klasės metodas turi būtinai turėti šį parametrą. Šis parametras nebūtinai turi būti su pavadinimu „self“, bet tai yra priimta kaip geriausia praktika, tad tikriausiai ir tu turėtum jį taip vadinti. Šis parametras yra reikalingas kiekviename metode nes, kai jis yra iškviečiamas, jis turi žinoti, su kuriuo objekto atributu turėtų atlikti operacijas. Net kai turi tik vieną objektą, turi pasirūpinti, kad programa žinotų, jog nori naudoti atributus aprašytus būtent toje klasėje. Todėl turi būti saugus ir naudoti „self“ parametrą.&lt;br /&gt;
&lt;br /&gt;
Peržiūrėk pirmą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dauguma Piton'o klasių turi &amp;lt;code&amp;gt;__init__&amp;lt;/code&amp;gt;, kuris yra paleidžiamas automatiškai kiekvieną kartą, kai atmintyje yra sukuriama tos klasės instancija/egzempliorius (Kai sukuriame nuorodą į klasę, yra sukuriama tos klasės &amp;lt;i&amp;gt;instancija&amp;lt;/i&amp;gt; [objektas]). Šis metodas yra paprastai vadinamas &amp;lt;i&amp;gt;inicijavimo metodu&amp;lt;/i&amp;gt;. Kai šis metodas yra paleidžiamas, „self“ parametras yra automatiškai priskiriamas tariamam objektui. __init__ metodas inicijuoja klasės atributus, dėl šios priežasties jis yra pavadintas inicijavimo metodu. Po __init__ metodu, iš pradžių &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; atributui mes priskiriame 0.&lt;br /&gt;
Yra sukuriama nuorodą į turimo objekto atributą panaudojant taškinį žymėjimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
    self.__skaičius = 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kodas &amp;lt;code&amp;gt;self.__skaičius = 0&amp;lt;/code&amp;gt; reiškia, jog objekte esančio „skaičius“ atributo reikšmė yra 0.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į kitą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
    self.__skaičius = sk&lt;br /&gt;
    return self.__skaičius + 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „pridėkpenkis“. Jis priima parametrą pavadinimu „sk“. Metode esanti logika tada priskiria „sk“ reikšmę objekte esančiui atributui su pavadinimu „skaičius“. Tada metodas prideda 5 prie „skaičius“ ir jį grąžina jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į trečiajį metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
    self.__pridėtas= pridėtas&lt;br /&gt;
    return self.__pridėtas * 2.453&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „padaugink“. Jis priima parametrą pavadinimu „pridėtas“. Metodas priskiria priimtą reikšmę objekte esančiam atributui su pavadinimu „pridėtas“ ir grąžina „pridėtas“ atributo ir 2.452 sandaugą jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Ar atkreipei dėmesį į tai, jog kiekvienas metodo pavadinimas prasideda su dviem pabraukimais? Pabandyk tai suprasti.&lt;br /&gt;
Prieš tai buvo minėta, jog objektas, su metodų pagalba, dirba su atributais apibrėžtais jame pačiame. Būtų idealu, jei tuos atributus galėtum pakeisti TIK SU METODAIS ESANČIAIS PAČIAME OBJEKTE. Įmanoma turėti iššorinį kodą, kuris galėtų manipuliuoti tais pačiais atributais. Norint „paslėpti“ atributus, taip, kad juos matytų metodai aprašyti pačiame objekte, turi naudoti du pabraukimus prieš objekto pavadinimą, taip kaip ir buvo rodyta. Ištrynus abu pabraukimus nuo atributo pavadinimo tu juo galėsi manipuliuoti kodu, kuris yra parašytas objekto išorėje.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėki į programą, kuri naudoja aptartą klasę.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į pirmą eilutę, kuri nėra komentaras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši kodo eilutė importuoją klasę, kurią išsaugojai atskirame faile (modulyje). Klasės nebūtinai turi būti talpinamos atskiruose failuose, bet tai yra priimta kaip gera praktika, tad yra verta jau nuo pat pradžių priprasti prie modulių importavimo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši eilutė sukuria SkKeitimas pavadinimu, „ooppavyzdys“ modulyje patalpintos klasės instanciją/egzempliorių, kuri yra priskiriama „matkė“ kintamajam.&lt;br /&gt;
Sintaksė atrodo taip:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;i&amp;gt;moduliopavadinimas.Klasėspavadinimas()&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Apibrėžk main funkciją.&lt;br /&gt;
Pasiimk skaičių iš vartotojo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;pridėtas = matkė.pridėkpenkis(sk)&amp;lt;/code&amp;gt; nusiunčia „sk“ kintamojo reikšmę metodui pavadinimu „pridėkpenkis“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojai kintamajame pavadinimu „matkė“. „pridėkpenkis“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „pridėtas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;daug = matkė.daugink(pridėtas)&amp;lt;/code&amp;gt; nusiunčia „pridėtas“ kintamojo reikšmę metodui pavadinimu „daugink“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojome kintamajame pavadinimu „matkė“. „daugink“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „daug“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė atspausdina „Galutinis rezultatas yra &amp;lt;daug reikšmė&amp;gt;“. Paskutinė eilutė iškviečia main funkciją, kuri įvykdo žingsnius nurodytus viršuje.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Rekursija|next=Įvadas į importuotas bibliotekas ir kitas funkcijas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3570</id>
		<title>Python Vadovėlis/Įvadas į objektinį programavimą Python 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3570"/>
		<updated>2021-11-23T17:26:55Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Objektinis programavimas==&lt;br /&gt;
&lt;br /&gt;
Iki šiol rašei kodą pagal procedūrinio programavimo taisykles. Tačiau, yra daug programų, kurios - parašytos pagal objektinio programavimo taisykles. Žinoti abu programavimo tipus ir jų skirtumus yra labai svarbu. Informatikoje, daug svarbių kalbų kaip C++ ar Java dažnai naudoja objektinio programavimo taisykles.&lt;br /&gt;
&lt;br /&gt;
Pradedantiesiems ir mokiniams, neturintiems programavimo žinių, objektinis programavimas dažnai gali atrodyti painus ir tai yra visiškai normalu. Nesijausk blogai, jei nesiseka suprasti iš pat pradžių. Jei šis skyrius nepadės tau suprasti, yra ir daugiau informatyvių šaltinių, kurie padės atsakyti į visus klausimus.&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra padalintas į keletą pamokų. Kiekviena pamoka - skirta paaiškinti skirtingas objektinio programavimo dalis. &amp;lt;b&amp;gt;LABAI SVARBU&amp;lt;/b&amp;gt; suprasti jas visas. Nepamiršk prieš kiekvieną pamoką perskaityti įžangą, kuri paaiškins pagrindines idėjas, sąvokas ir kitas objektinio programavimo sritis.&lt;br /&gt;
&lt;br /&gt;
==Įžanga==&lt;br /&gt;
&lt;br /&gt;
Galvok apie procedūrą kaip apie funkciją. Funkcija turi konkrečią paskyrtį ir jų gali būti įvairių: rinkti įvestis, atlikti matematinius skaičiavimus, atvaizduoti ar manipuliuoti duomenis. Paprastai, procedūros manipuliuoja duomenis, kurie yra aprašyti atskirai. Šie duomenys yra dažnai perduodami iš vienos procedūros į kitą. Ir kai programa pasidaro per didelė, tai padaro duomenų perdavimą komplikuotą.&lt;br /&gt;
Pavyzdžiui, parašei programą, kuri kintamuosiuose išsaugo produkto duomenis. Kai klientas paprašo informacijos apie produktą, kintamieji, kurie turi visą informaciją, yra perduodami įvairioms funkcijoms su skirtingomis paskirtimis. Laikui bėgant ir saugant vis daugiau duomenų apie turimus produktus, tu sugalvoji išsaugoti turimą informaciją sąrašuose ar žodynuose. Norint, jog tavo programa veiktų, tu dabar turi redaguoti kiekvieną funkciją, kuri naudojo tuos kintamuosius, taip, kad dabar ji galėtų priimti ir manipuliuoti sąrašus ar žodynus. Įsivaizduok kiek laiko tau reikėtų norint peržiūrėti ir pakeisti šimtus failų. Tu išprotėtum! Nekalbant apie tai, jog klaidas daro net ir labiausiai patyrę programuotojai, tad taip pat reikėtų taisyti begalę klaidų. Toks programavimas yra pernelyg neoptimalus.&lt;br /&gt;
Procedūrinis programavimas yra paremtas procedūromis (funkcijomis). Objektinis programavimas yra paremtas objektais. Ar prisimeni, kaip procedūrinė programa atskyrė duomenis nuo kodo? Ar prisimeni programą, kuri turėjo šimtus failų ir norint kažką pakeisti reikėdavo ilgai joje narpstytis? &lt;br /&gt;
Galvok apie &amp;lt;i&amp;gt;objektą&amp;lt;/i&amp;gt; kaip apie minėtų failų ir duomenų „kombinaciją“ į vieną esybę. Technine prasme, objektas yra esybė, kuri savyje turi duomenis ir procedūras (kodą, funkcijas, t.t.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Duomenis objekto viduje vadiname &amp;lt;i&amp;gt;atributais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Funkcijas ar procedūras objekto viduje vadiname &amp;lt;i&amp;gt;metodais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;duomenų atributus&amp;lt;/b&amp;gt; kaip apie kintamuosius. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;metodus&amp;lt;/b&amp;gt; kaip apie funkcijas ar procedūras. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į paprastą, kasdienį pavyzdį. Lemputė ir jungiklis tavo kambaryje.&lt;br /&gt;
Atributai bus štai tokie.&lt;br /&gt;
&lt;br /&gt;
* šviesa_įjungta (True False)&lt;br /&gt;
* jungiklio_pozicija (Viršuje arba Apačioje)&lt;br /&gt;
* elektros_tekėjimas (True arba False)&lt;br /&gt;
&lt;br /&gt;
Metodai būtų štai tokie.&lt;br /&gt;
&lt;br /&gt;
* pakeisti_jungiklio_poziciją&lt;br /&gt;
* pakeisti_elektros_tekėjimą&lt;br /&gt;
&lt;br /&gt;
Atributai gali būti matomi ir nematomi. Pavyzdžiui, tu negali matyti elektros tekančios į lemputę. Tu tik žinai, kad elektra išties teka, nes ji tuo metu skleidžia šviesą. Nepaisant to, tu gali matyti jungiklio poziciją (jungiklio_pozicija) ir taip pat tu matai ar šviesa yra įjungta ar ne (šviesa_įjungta). Kai kurie metodai yra &amp;lt;i&amp;gt;privatūs&amp;lt;/i&amp;gt;. Tai reiškia, jog jų neišeina tiesiogiai pakeisti. Pavyzdžiui, nebent būtų nukerpami laidai (to nedaryk ir dėl šio pavyzdžio; manyk, jog laidai neegzistuoja), tu negalėtum pakeisti elektros tėkmės tiesiogiai. Tu taip pat negali tiesiogiai įtakoti lemputės šviesos (ne, tu negali atsukti lemputės ar jos sudaužyti!). Bet tu visada gali šiuos atributus įtakoti netiesiogiai naudojant objekto &amp;lt;i&amp;gt;metodus&amp;lt;/i&amp;gt;. Jeigu nesumokėsi mokesčių, metodas pavadinimu &amp;lt;code&amp;gt;pakeisti_elektros_tekėjimą&amp;lt;/code&amp;gt; pakeis &amp;lt;code&amp;gt;elektros_tekėjimas&amp;lt;/code&amp;gt; reikšmę į FALSE. Jei tu įjungsi jungiklį, &amp;lt;code&amp;gt;pakeisti_jungiklio_poziciją&amp;lt;/code&amp;gt; metodas pakeis &amp;lt;code&amp;gt;šviesa_įjungta&amp;lt;/code&amp;gt; atributo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Dabar jau tikriausiai galvoji, „Ką tai turi bendro su Piton'u?“ ar, „Aš nesuprantu, bet kaip man sukurti tą objektą?“. Na, beveik priėjai prie atsakymų! Tik turiu paaiškinti dar vieną dalyką prieš neriant į kodą.&lt;br /&gt;
&lt;br /&gt;
Piton'e objekto atributai ir metodai yra nurodomi &amp;lt;b&amp;gt;klasės&amp;lt;/b&amp;gt;. Galvok apie klasę kaip apie objekto techninį piešinį. Pavyzdžiui, tavo namai - objektas kuriame gyveni - taip pat jį gali vadinti butu, vasarnamiu, prakartėle ar bet kuo kitu, buvo pastatytas naudojant techinius piešinius. Šie techniniai piešiniai būtų vadinami klasėmis, kurios buvo panaudotos projektuojant tavo namus, butą, vasarnamį, na, supranti apie ką kalbu. &lt;br /&gt;
&lt;br /&gt;
Dar kartą, klasė pasako, kaip sukurti objektą. Techniniais terminais tariant, ir tai yra labai svarbu, klasė nusako naudojamus duomenų atributus ir metodus objekte.&lt;br /&gt;
&lt;br /&gt;
Norint sukurti klasę, mes suprogramuojame &amp;lt;i&amp;gt;klasės apibrėžimą&amp;lt;/i&amp;gt;. Klasės apibrėžimas, tai grupė pareiškimų, kurie nusako objekto atributus ir metodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Pirma pamoka&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apačioje yra procedūrinė programa, kuri atlieka paprastą matematinį veiksmą su vartotojo įvestu skaičiu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
&lt;br /&gt;
# Procedūra 1&lt;br /&gt;
def main():&lt;br /&gt;
    try:&lt;br /&gt;
        # Pasiimk skaičių, kurį manipuliuosi.&lt;br /&gt;
        sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su pasiimtu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 2&lt;br /&gt;
        pridėksk= pridėkpenkis(sk)&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su ankščiau išsaugotu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 3&lt;br /&gt;
        dauginksk= daugink(pridėksk)&lt;br /&gt;
        # Paduok skaičių procedūrai 4&lt;br /&gt;
        rodyk(dauginksk)&lt;br /&gt;
    # Susidorok su išimtimis, kurios gali atsirasti dėl netinkamo vartotojo skaičiaus įvedimo&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Privalai įvesti tinkamą skaičių.\n&amp;quot;)&lt;br /&gt;
        # Atstatyk kintamojo num reikšmę, kad ištrintum netinkamą vartotojo įvestį.&lt;br /&gt;
        sk = 0&lt;br /&gt;
        # Dar kartą iškviesk main.&lt;br /&gt;
        main()&lt;br /&gt;
&lt;br /&gt;
# Procedūra 2&lt;br /&gt;
def pridėkpenkis(sk):&lt;br /&gt;
    return sk + 5&lt;br /&gt;
&lt;br /&gt;
# Procedūra 3&lt;br /&gt;
def daugink(pridėksk):&lt;br /&gt;
    return pridėksk * 2.452&lt;br /&gt;
&lt;br /&gt;
# Procedūra 4&lt;br /&gt;
def rodyk(dauginksk):&lt;br /&gt;
    # Parodyk galutinį rezultatą.&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, dauginksk)&lt;br /&gt;
&lt;br /&gt;
# Kviesk procedūrą 1&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi skaitemnį &amp;quot;5&amp;quot;, gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 5&lt;br /&gt;
 Galutinis rezultatas yra 24.52&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi reikšmę &amp;quot;g&amp;quot;, tada pasitaisysi ir įrašysi skaitmenį &amp;quot;8&amp;quot;, tada gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 g&lt;br /&gt;
 Privalai įvesti tinkamą skaičių.&lt;br /&gt;
 &lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 8&lt;br /&gt;
 Galutinis rezultatas yra 31.875999999999998&lt;br /&gt;
&lt;br /&gt;
Žemiau matai klasę ir programą, kuri naudoja nurodytą klasę. Ši objektinio programavimo programavimo būdu parašyta programa daro tą patį, ką prieš tai darė procedūriniu programavimo būdu parašyta programa. Apžiūrėk keletą svarbių objektinio programavimo būdo konceptų prieš neriant į ankščiau minėtą klasę ir programą.&lt;br /&gt;
Norint sukurti klasę, naudok &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; raktažodį. Po raktažodžio rašyk pavadinimą, kurį norėtum, jog turėtų klasė. Dažnai naudojama praktika kuriant klasių pavadinimus yra &amp;lt;i&amp;gt;NaujųŽodžiųRašymasIšDidžiosiosRaidės&amp;lt;/i&amp;gt;.&lt;br /&gt;
Jei norėčiau sukurti klasę pavadinimu purvinoskojinės, kodas atrodytų taip:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class PurvinosKojinės&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iš pradžių pažiūrėk į klasę. Programa, kuri naudos šią klasę, bus parodyta paskui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Klasė&lt;br /&gt;
&lt;br /&gt;
class SkKeitimas:&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.__skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    def pridėkpenkis(self,sk):&lt;br /&gt;
        self.__skaičius = sk&lt;br /&gt;
        return self.__skaičius + 5&lt;br /&gt;
&lt;br /&gt;
    def padaugink(self,pridėtas):&lt;br /&gt;
        self.__pridėtas = pridėtas&lt;br /&gt;
        return self.__pridėtas * 2.452&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programa, kuri naudoja viršuje esančią klasę yra parašyta žemiau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Filename: ooppavyzdys.py&lt;br /&gt;
# Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Programa&lt;br /&gt;
&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&lt;br /&gt;
maths = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    pridėt = matkė.pridėkpenkis(sk)&lt;br /&gt;
&lt;br /&gt;
    daug = matkė.padaugink(pridėtas)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, daug )&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tikriausiai dabar esi pasimetęs. Tai visiškai suprantama. Iš pradžių, pasistenk suprasti klasę.&lt;br /&gt;
Klasė yra pavadinta &amp;quot;SkKeitimas&amp;quot;&lt;br /&gt;
Ši klasė turi tris metodus&lt;br /&gt;
* __init__&lt;br /&gt;
* pridėkpenkis&lt;br /&gt;
* padaugink&lt;br /&gt;
&lt;br /&gt;
Šie trys metodai savyje turi labai panašų kodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį į tai, jog kiekvienas metodas turi parametrą pavadinimu „self“. Kiekvienas klasės metodas turi būtinai turėti šį parametrą. Šis parametras nebūtinai turi būti su pavadinimu „self“, bet tai yra priimta kaip geriausia praktika, tad tikriausiai ir tu turėtum jį taip vadinti. Šis parametras yra reikalingas kiekviename metode nes, kai jis yra iškviečiamas, jis turi žinoti, su kuriuo objekto atributu turėtų atlikti operacijas. Net kai turi tik vieną objektą, turi pasirūpinti, kad programa žinotų, jog nori naudoti atributus aprašytus būtent toje klasėje. Todėl turi būti saugus ir naudoti „self“ parametrą.&lt;br /&gt;
&lt;br /&gt;
Peržiūrėk pirmą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dauguma Piton'o klasių turi &amp;lt;code&amp;gt;__init__&amp;lt;/code&amp;gt;, kuris yra paleidžiamas automatiškai kiekvieną kartą, kai atmintyje yra sukuriama tos klasės instancija/egzempliorius (Kai sukuriame nuorodą į klasę, yra sukuriama tos klasės &amp;lt;i&amp;gt;instancija&amp;lt;/i&amp;gt; [objektas]). Šis metodas yra paprastai vadinamas &amp;lt;i&amp;gt;inicijavimo metodu&amp;lt;/i&amp;gt;. Kai šis metodas yra paleidžiamas, „self“ parametras yra automatiškai priskiriamas tariamam objektui. __init__ metodas inicijuoja klasės atributus, dėl šios priežasties jis yra pavadintas inicijavimo metodu. Po __init__ metodu, iš pradžių &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; atributui mes priskiriame 0.&lt;br /&gt;
Yra sukuriama nuorodą į turimo objekto atributą panaudojant taškinį žymėjimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
    self.__skaičius = 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kodas &amp;lt;code&amp;gt;self.__skaičius = 0&amp;lt;/code&amp;gt; reiškia, jog objekte esančio „skaičius“ atributo reikšmė yra 0.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į kitą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
    self.__skaičius = sk&lt;br /&gt;
    return self.__skaičius + 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „pridėkpenkis“. Jis priima parametrą pavadinimu „sk“. Metode esanti logika tada priskiria „sk“ reikšmę objekte esančiui atributui su pavadinimu „skaičius“. Tada metodas prideda 5 prie „skaičius“ ir jį grąžina jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į trečiajį metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
    self.__pridėtas= pridėtas&lt;br /&gt;
    return self.__pridėtas * 2.453&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „padaugink“. Jis priima parametrą pavadinimu „pridėtas“. Metodas priskiria priimtą reikšmę objekte esančiam atributui su pavadinimu „pridėtas“ ir grąžina „pridėtas“ atributo ir 2.452 sandaugą jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Ar atkreipei dėmesį į tai, jog kiekvienas metodo pavadinimas prasideda su dviem pabraukimais? Pabandyk tai suprasti.&lt;br /&gt;
Prieš tai buvo minėta, jog objektas, su metodų pagalba, dirba su atributais apibrėžtais jame pačiame. Būtų idealu, jei tuos atributus galėtum pakeisti TIK SU METODAIS ESANČIAIS PAČIAME OBJEKTE. Įmanoma turėti iššorinį kodą, kuris galėtų manipuliuoti tais pačiais atributais. Norint „paslėpti“ atributus, taip, kad juos matytų metodai aprašyti pačiame objekte, turi naudoti du pabraukimus prieš objekto pavadinimą, taip kaip ir buvo rodyta. Ištrynus abu pabraukimus nuo atributo pavadinimo tu juo galėsi manipuliuoti kodu, kuris yra parašytas objekto išorėje.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėki į programą, kuri naudoja aptartą klasę.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į pirmą eilutę, kuri nėra komentaras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši kodo eilutė importuoją klasę, kurią išsaugojai atskirame faile (modulyje). Klasės nebūtinai turi būti talpinamos atskiruose failuose, bet tai yra priimta kaip gera praktika, tad yra verta jau nuo pat pradžių priprasti prie modulių importavimo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši eilutė sukuria SkKeitimas pavadinimu, „ooppavyzdys“ modulyje patalpintos klasės instanciją/egzempliorių, kuri yra priskiriama „matkė“ kintamajam.&lt;br /&gt;
Sintaksė atrodo taip:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;i&amp;gt;moduliopavadinimas.Klasėspavadinimas()&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Apibrėžk main funkciją.&lt;br /&gt;
Pasiimk skaičių iš vartotojo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;pridėtas = matkė.pridėkpenkis(sk)&amp;lt;/code&amp;gt; nusiunčia „sk“ kintamojo reikšmę metodui pavadinimu „pridėkpenkis“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojai kintamajame pavadinimu „matkė“. „pridėkpenkis“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „pridėtas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;daug = matkė.daugink(pridėtas)&amp;lt;/code&amp;gt; nusiunčia „pridėtas“ kintamojo reikšmę metodui pavadinimu „daugink“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojome kintamajame pavadinimu „matkė“. „daugink“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „daug“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė atspausdina „Galutinis rezultatas yra &amp;lt;daug reikšmė&amp;gt;“. Paskutinė eilutė iškviečia main funkciją, kuri įvykdo žingsnius nurodytus viršuje.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Rekursija|next=Įvadas į importuotas bibliotekas ir kitas funkcijas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3569</id>
		<title>Python Vadovėlis/Įvadas į objektinį programavimą Python 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3569"/>
		<updated>2021-11-23T17:24:28Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Objektinis programavimas==&lt;br /&gt;
&lt;br /&gt;
Iki šiol rašei kodą pagal procedūrinio programavimo taisykles. Tačiau, yra daug programų, kurios - parašytos pagal objektinio programavimo taisykles. Žinoti abu programavimo tipus ir jų skirtumus yra labai svarbu. Informatikoje, daug svarbių kalbų kaip C++ ar Java dažnai naudoja objektinio programavimo taisykles.&lt;br /&gt;
&lt;br /&gt;
Pradedantiesiems ir mokiniams, neturintiems programavimo žinių, objektinis programavimas dažnai gali atrodyti painus ir tai yra visiškai normalu. Nesijausk blogai, jei nesiseka suprasti iš pat pradžių. Jei šis skyrius nepadės tau suprasti, yra ir daugiau informatyvių šaltinių, kurie padės atsakyti į visus klausimus.&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra padalintas į keletą pamokų. Kiekviena pamoka - skirta paaiškinti skirtingas objektinio programavimo dalis. &amp;lt;b&amp;gt;LABAI SVARBU&amp;lt;/b&amp;gt; suprasti jas visas. Nepamiršk prieš kiekvieną pamoką perskaityti įžangą, kuri paaiškins pagrindines idėjas, sąvokas ir kitas objektinio programavimo sritis.&lt;br /&gt;
&lt;br /&gt;
==Įžanga==&lt;br /&gt;
&lt;br /&gt;
Galvok apie procedūrą kaip apie funkciją. Funkcija turi konkrečią paskyrtį ir jų gali būti įvairių: rinkti įvestis, atlikti matematinius skaičiavimus, atvaizduoti ar manipuliuoti duomenis. Paprastai, procedūros manipuliuoja duomenis, kurie yra aprašyti atskirai. Šie duomenys yra dažnai perduodami iš vienos procedūros į kitą. Ir kai programa pasidaro per didelė, tai padaro duomenų perdavimą komplikuotą.&lt;br /&gt;
Pavyzdžiui, parašei programą, kuri kintamuosiuose išsaugo produkto duomenis. Kai klientas paprašo informacijos apie produktą, kintamieji, kurie turi visą informaciją, yra perduodami įvairioms funkcijoms su skirtingomis paskirtimis. Laikui bėgant ir saugant vis daugiau duomenų apie turimus produktus, tu sugalvoji išsaugoti turimą informaciją sąrašuose ar žodynuose. Norint, jog tavo programa veiktų, tu dabar turi redaguoti kiekvieną funkciją, kuri naudojo tuos kintamuosius, taip, kad dabar ji galėtų priimti ir manipuliuoti sąrašus ar žodynus. Įsivaizduok kiek laiko tau reikėtų norint peržiūrėti ir pakeisti šimtus failų. Tu išprotėtum! Nekalbant apie tai, jog klaidas daro net ir labiausiai patyrę programuotojai, tad taip pat reikėtų taisyti begalę klaidų. Toks programavimas yra pernelyg neoptimalus.&lt;br /&gt;
Procedūrinis programavimas yra paremtas procedūromis (funkcijomis). Objektinis programavimas yra paremtas objektais. Ar prisimeni, kaip procedūrinė programa atskyrė duomenis nuo kodo? Ar prisimeni programą, kuri turėjo šimtus failų ir norint kažką pakeisti reikėdavo ilgai joje narpstytis? &lt;br /&gt;
Galvok apie &amp;lt;i&amp;gt;objektą&amp;lt;/i&amp;gt; kaip apie minėtų failų ir duomenų „kombinaciją“ į vieną esybę. Technine prasme, objektas yra esybė, kuri savyje turi duomenis ir procedūras (kodą, funkcijas, t.t.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Duomenis objekto viduje vadiname &amp;lt;i&amp;gt;atributais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Funkcijas ar procedūras objekto viduje vadiname &amp;lt;i&amp;gt;metodais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;duomenų atributus&amp;lt;/b&amp;gt; kaip apie kintamuosius. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;metodus&amp;lt;/b&amp;gt; kaip apie funkcijas ar procedūras. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į paprastą, kasdienį pavyzdį. Lemputė ir jungiklis tavo kambaryje.&lt;br /&gt;
Atributai bus štai tokie.&lt;br /&gt;
&lt;br /&gt;
* šviesa_įjungta (True False)&lt;br /&gt;
* jungiklio_pozicija (Viršuje arba Apačioje)&lt;br /&gt;
* elektros_tekėjimas (True arba False)&lt;br /&gt;
&lt;br /&gt;
Metodai būtų štai tokie.&lt;br /&gt;
&lt;br /&gt;
* pakeisti_jungiklio_poziciją&lt;br /&gt;
* pakeisti_elektros_tekėjimą&lt;br /&gt;
&lt;br /&gt;
Atributai gali būti matomi ir nematomi. Pavyzdžiui, tu negali matyti elektros tekančios į lemputę. Tu tik žinai, kad elektra išties teka, nes ji tuo metu skleidžia šviesą. Nepaisant to, tu gali matyti jungiklio poziciją (jungiklio_pozicija) ir taip pat tu matai ar šviesa yra įjungta ar ne (šviesa_įjungta). Kai kurie metodai yra &amp;lt;i&amp;gt;privatūs&amp;lt;/i&amp;gt;. Tai reiškia, jog jų neišeina tiesiogiai pakeisti. Pavyzdžiui, nebent būtų nukerpami laidai (to nedaryk ir dėl šio pavyzdžio; manyk, jog laidai neegzistuoja), tu negalėtum pakeisti elektros tėkmės tiesiogiai. Tu taip pat negali tiesiogiai įtakoti lemputės šviesos (ne, tu negali atsukti lemputės ar jos sudaužyti!). Bet tu visada gali šiuos atributus įtakoti netiesiogiai naudojant objekto &amp;lt;i&amp;gt;metodus&amp;lt;/i&amp;gt;. Jeigu nesumokėsi mokesčių, metodas pavadinimu &amp;lt;code&amp;gt;pakeisti_elektros_tekėjimą&amp;lt;/code&amp;gt; pakeis &amp;lt;code&amp;gt;elektros_tekėjimas&amp;lt;/code&amp;gt; reikšmę į FALSE. Jei tu įjungsi jungiklį, &amp;lt;code&amp;gt;pakeisti_jungiklio_poziciją&amp;lt;/code&amp;gt; metodas pakeis &amp;lt;code&amp;gt;šviesa_įjungta&amp;lt;/code&amp;gt; atributo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Dabar jau tikriausiai galvoji, „Ką tai turi bendro su Piton'u?“ ar, „Aš nesuprantu, bet kaip man sukurti tą objektą?“. Na, beveik priėjai prie atsakymų! Tik turiu paaiškinti dar vieną dalyką prieš neriant į kodą.&lt;br /&gt;
&lt;br /&gt;
Piton'e objekto atributai ir metodai yra nurodomi &amp;lt;b&amp;gt;klasės&amp;lt;/b&amp;gt;. Galvok apie klasę kaip apie objekto techninį piešinį. Pavyzdžiui, tavo namai - objektas kuriame gyveni - taip pat jį gali vadinti butu, vasarnamiu, prakartėle ar bet kuo kitu, buvo pastatytas naudojant techinius piešinius. Šie techniniai piešiniai būtų vadinami klasėmis, kurios buvo panaudotos projektuojant tavo namus, butą, vasarnamį, na, supranti apie ką kalbu. &lt;br /&gt;
&lt;br /&gt;
Dar kartą, klasė pasako, kaip sukurti objektą. Techniniais terminais tariant, ir tai yra labai svarbu, klasė nusako naudojamus duomenų atributus ir metodus objekte.&lt;br /&gt;
&lt;br /&gt;
Norint sukurti klasę, mes suprogramuojame &amp;lt;i&amp;gt;klasės apibrėžimą&amp;lt;/i&amp;gt;. Klasės apibrėžimas, tai grupė pareiškimų, kurie nusako objekto atributus ir metodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Pirma pamoka&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apačioje yra procedūrinė programa, kuri atlieka paprastą matematinį veiksmą su vartotojo įvestu skaičiu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
&lt;br /&gt;
# Procedūra 1&lt;br /&gt;
def main():&lt;br /&gt;
    try:&lt;br /&gt;
        # Pasiimk skaičių, kurį manipuliuosi.&lt;br /&gt;
        sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su pasiimtu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 2&lt;br /&gt;
        pridėksk= pridėkpenkis(sk)&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su ankščiau išsaugotu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 3&lt;br /&gt;
        dauginksk= daugink(pridėksk)&lt;br /&gt;
        # Paduok skaičių procedūrai 4&lt;br /&gt;
        rodyk(dauginksk)&lt;br /&gt;
    # Susidorok su išimtimis, kurios gali atsirasti dėl netinkamo vartotojo skaičiaus įvedimo&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Privalai įvesti tinkamą skaičių.\n&amp;quot;)&lt;br /&gt;
        # Atstatyk kintamojo num reikšmę, kad ištrintum netinkamą vartotojo įvestį.&lt;br /&gt;
        sk = 0&lt;br /&gt;
        # Dar kartą iškviesk main.&lt;br /&gt;
        main()&lt;br /&gt;
&lt;br /&gt;
# Procedūra 2&lt;br /&gt;
def pridėkpenkis(sk):&lt;br /&gt;
    return sk + 5&lt;br /&gt;
&lt;br /&gt;
# Procedūra 3&lt;br /&gt;
def daugink(pridėksk):&lt;br /&gt;
    return pridėksk * 2.452&lt;br /&gt;
&lt;br /&gt;
# Procedūra 4&lt;br /&gt;
def rodyk(dauginksk):&lt;br /&gt;
    # Parodyk galutinį rezultatą.&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, dauginksk)&lt;br /&gt;
&lt;br /&gt;
# Kviesk procedūrą 1&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi skaitemnį &amp;quot;5&amp;quot;, gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 5&lt;br /&gt;
 Galutinis rezultatas yra 24.52&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi reikšmę &amp;quot;g&amp;quot;, tada pasitaisysi ir įrašysi skaitmenį &amp;quot;8&amp;quot;, tada gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 g&lt;br /&gt;
 Privalai įvesti tinkamą skaičių.&lt;br /&gt;
 &lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 8&lt;br /&gt;
 Galutinis rezultatas yra 31.875999999999998&lt;br /&gt;
&lt;br /&gt;
Žemiau matai klasę ir programą, kuri naudoja nurodytą klasę. Ši objektinio programavimo programavimo būdu parašyta programa daro tą patį, ką prieš tai darė procedūriniu programavimo būdu parašyta programa. Apžiūrėk keletą svarbių objektinio programavimo būdo konceptų prieš neriant į ankščiau minėtą klasę ir programą.&lt;br /&gt;
Norint sukurti klasę, naudok &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; raktažodį. Po raktažodžio rašyk pavadinimą, kurį norėtum, jog turėtų klasė. Dažnai naudojama praktika kuriant klasių pavadinimus yra &amp;lt;i&amp;gt;NaujųŽodžiųRašymasIšDidžiosiosRaidės&amp;lt;/i&amp;gt;.&lt;br /&gt;
Jei norėčiau sukurti klasę pavadinimu purvinoskojinės, kodas atrodytų taip:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class PurvinosKojinės&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iš pradžių pažiūrėk į klasę. Programa, kuri naudos šią klasę, bus parodyta paskui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Klasė&lt;br /&gt;
&lt;br /&gt;
class SkKeitimas:&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.__skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    def pridėkpenkis(self,sk):&lt;br /&gt;
        self.__skaičius = sk&lt;br /&gt;
        return self.__skaičius + 5&lt;br /&gt;
&lt;br /&gt;
    def padaugink(self,pridėtas):&lt;br /&gt;
        self.__pridėtas = pridėtas&lt;br /&gt;
        return self.__pridėtas * 2.452&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programa, kuri naudoja viršuje esančią klasę yra parašyta žemiau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Filename: ooppavyzdys.py&lt;br /&gt;
# Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Programa&lt;br /&gt;
&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&lt;br /&gt;
maths = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    pridėt = matkė.pridėkpenkis(sk)&lt;br /&gt;
&lt;br /&gt;
    daug = matkė.padaugink(pridėtas)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, daug )&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tikriausiai dabar esi pasimetęs. Tai visiškai suprantama. Iš pradžių, pasistenk suprasti klasę.&lt;br /&gt;
Klasė yra pavadinta &amp;quot;SkKeitimas&amp;quot;&lt;br /&gt;
Ši klasė turi tris metodus&lt;br /&gt;
* __init__&lt;br /&gt;
* pridėkpenkis&lt;br /&gt;
* padaugink&lt;br /&gt;
&lt;br /&gt;
Šie trys metodai savyje turi labai panašų kodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį į tai, jog kiekvienas metodas turi parametrą pavadinimu „self“. Kiekvienas klasės metodas turi būtinai turėti šį parametrą. Šis parametras nebūtinai turi būti su pavadinimu „self“, bet tai yra priimta kaip geriausia praktika, tad tikriausiai ir tu turėtum jį taip vadinti. Šis parametras yra reikalingas kiekviename metode nes, kai jis yra iškviečiamas, jis turi žinoti, su kuriuo objekto atributu turėtų atlikti operacijas. Net kai turi tik vieną objektą, turi pasirūpinti, kad programa žinotų, jog nori naudoti atributus aprašytus būtent toje klasėje. Todėl turi būti saugus ir naudoti „self“ parametrą.&lt;br /&gt;
&lt;br /&gt;
Peržiūrėk pirmą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dauguma Piton'o klasių turi &amp;lt;code&amp;gt;__init__&amp;lt;/code&amp;gt;, kuris yra paleidžiamas automatiškai kiekvieną kartą, kai atmintyje yra sukuriama tos klasės instancija/egzempliorius (Kai sukuriame nuorodą į klasę, yra sukuriama tos klasės &amp;lt;i&amp;gt;instancija&amp;lt;/i&amp;gt; [objektas]). Šis metodas yra paprastai vadinamas &amp;lt;i&amp;gt;inicijavimo metodu&amp;lt;/i&amp;gt;. Kai šis metodas yra paleidžiamas, „self“ parametras yra automatiškai priskiriamas tariamam objektui. __init__ metodas inicijuoja klasės atributus, dėl šios priežasties jis yra pavadintas inicijavimo metodu. Po __init__ metodu, iš pradžių &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; atributui mes priskiriame 0.&lt;br /&gt;
Yra sukuriama nuorodą į turimo objekto atributą panaudojant taškinį žymėjimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
    self.__skaičius = 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kodas &amp;lt;code&amp;gt;self.__skaičius = 0&amp;lt;/code&amp;gt; reiškia, jog objekte esančio „skaičius“ atributo reikšmė yra 0.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į kitą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
    self.__skaičius = sk&lt;br /&gt;
    return self.__skaičius + 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „pridėkpenkis“. Jis priima parametrą pavadinimu „sk“. Metode esanti logika tada priskiria „sk“ reikšmę objekte esančiui atributui su pavadinimu „skaičius“. Tada metodas prideda 5 prie „skaičius“ ir jį grąžina jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į trečiajį metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
    self.__pridėtas= pridėtas&lt;br /&gt;
    return self.__pridėtas * 2.453&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „padaugink“. Jis priima parametrą pavadinimu „pridėtas“. Metodas priskiria priimtą reikšmę objekte esančiam atributui su pavadinimu „pridėtas“ ir grąžina „pridėtas“ atributo ir 2.452 sandaugą jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Ar atkreipei dėmesį į tai, jog kiekvienas metodo pavadinimas prasideda su dviem pabraukimais? Pabandyk tai suprasti.&lt;br /&gt;
Prieš tai buvo minėta, jog objektas, su metodų pagalba, dirba su atributais apibrėžtais jame pačiame. Būtų idealu, jei tuos atributus galėtum pakeisti TIK SU METODAIS ESANČIAIS PAČIAME OBJEKTE. Įmanoma turėti iššorinį kodą, kuris galėtų manipuliuoti tais pačiais atributais. Norint „paslėpti“ atributus, taip, kad juos matytų metodai aprašyti pačiame objekte, turi naudoti du pabraukimus prieš objekto pavadinimą, taip kaip ir buvo rodyta. Ištrynus abu pabraukimus nuo atributo pavadinimo tu juo galėsi manipuliuoti kodu, kuris yra parašytas objekto išorėje.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėki į programą, kuri naudoja aptartą klasę.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į pirmą eilutę, kuri nėra komentaras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši kodo eilutė importuoją klasę, kurią išsaugojai atskirame faile (modulyje). Klasės nebūtinai turi būti talpinamos atskiruose failuose, bet tai yra priimta kaip gera praktika, tad yra verta jau nuo pat pradžių priprasti prie modulių importavimo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši eilutė sukuria SkKeitimas pavadinimu, „ooppavyzdys“ modulyje patalpintos klasės instanciją/egzempliorių, kuri yra priskiriama „matkė“ kintamajam.&lt;br /&gt;
Sintaksė atrodo taip:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;i&amp;gt;moduliopavadinimas.Klasėspavadinimas()&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Apibrėžk main funkciją.&lt;br /&gt;
Pasiimk skaičių iš vartotojo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;pridėtas = matkė.pridėkpenkis(sk)&amp;lt;/code&amp;gt; nusiunčia „sk“ kintamojo reikšmę metodui pavadinimu „pridėkpenkis“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojai kintamajame pavadinimu „matkė“. „pridėkpenkis“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „pridėtas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;daug = matkė.daugink(pridėtas)&amp;lt;/code&amp;gt; nusiunčia „pridėtas“ kintamojo reikšmę metodui pavadinimu „daugink“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojome kintamajame pavadinimu „matkė“. „daugink“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „daug“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė atspausdina „Galutinis rezultatas yra &amp;lt;daug reikšmė&amp;gt;“. Paskutinė eilutė iškviečia main funkciją, kuri įvykdo žingsnius nurodytus viršuje.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Rekursija|next=Įvadas į importuotas bibliotekas ir kitas funkcijas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3568</id>
		<title>Python Vadovėlis/Įvadas į objektinį programavimą Python 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3568"/>
		<updated>2021-11-23T17:23:24Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Objektinis programavimas==&lt;br /&gt;
&lt;br /&gt;
Iki šiol rašei kodą pagal procedūrinio programavimo taisykles. Tačiau, yra daug programų, kurios - parašytos pagal objektinio programavimo taisykles. Žinoti abu programavimo tipus ir jų skirtumus yra labai svarbu. Informatikoje, daug svarbių kalbų kaip C++ ar Java dažnai naudoja objektinio programavimo taisykles.&lt;br /&gt;
&lt;br /&gt;
Pradedantiesiems ir mokiniams, neturintiems programavimo žinių, objektinis programavimas dažnai gali atrodyti painus ir tai yra visiškai normalu. Nesijausk blogai, jei nesiseka suprasti iš pat pradžių. Jei šis skyrius nepadės tau suprasti, yra ir daugiau informatyvių šaltinių, kurie padės atsakyti į visus klausimus.&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra padalintas į keletą pamokų. Kiekviena pamoka - skirta paaiškinti skirtingas objektinio programavimo dalis. &amp;lt;b&amp;gt;LABAI SVARBU&amp;lt;/b&amp;gt; suprasti jas visas. Nepamiršk prieš kiekvieną pamoką perskaityti įžangą, kuri paaiškins pagrindines idėjas, sąvokas ir kitas objektinio programavimo sritis.&lt;br /&gt;
&lt;br /&gt;
==Įžanga==&lt;br /&gt;
&lt;br /&gt;
Galvok apie procedūrą kaip apie funkciją. Funkcija turi konkrečią paskyrtį ir jų gali būti įvairių: rinkti įvestis, atlikti matematinius skaičiavimus, atvaizduoti ar manipuliuoti duomenis. Paprastai, procedūros manipuliuoja duomenis, kurie yra aprašyti atskirai. Šie duomenys yra dažnai perduodami iš vienos procedūros į kitą. Ir kai programa pasidaro per didelė, tai padaro duomenų perdavimą komplikuotą.&lt;br /&gt;
Pavyzdžiui, parašei programą, kuri kintamuosiuose išsaugo produkto duomenis. Kai klientas paprašo informacijos apie produktą, kintamieji, kurie turi visą informaciją, yra perduodami įvairioms funkcijoms su skirtingomis paskirtimis. Laikui bėgant ir saugant vis daugiau duomenų apie turimus produktus, tu sugalvoji išsaugoti turimą informaciją sąrašuose ar žodynuose. Norint, jog tavo programa veiktų, tu dabar turi redaguoti kiekvieną funkciją, kuri naudojo tuos kintamuosius, taip, kad dabar ji galėtų priimti ir manipuliuoti sąrašus ar žodynus. Įsivaizduok kiek laiko tau reikėtų norint peržiūrėti ir pakeisti šimtus failų. Tu išprotėtum! Nekalbant apie tai, jog klaidas daro net ir labiausiai patyrę programuotojai, tad taip pat reikėtų taisyti begalę klaidų. Toks programavimas yra pernelyg neoptimalus.&lt;br /&gt;
Procedūrinis programavimas yra paremtas procedūromis (funkcijomis). Objektinis programavimas yra paremtas objektais. Ar prisimeni, kaip procedūrinė programa atskyrė duomenis nuo kodo? Ar prisimeni programą, kuri turėjo šimtus failų ir norint kažką pakeisti reikėdavo ilgai joje narpstytis? &lt;br /&gt;
Galvok apie &amp;lt;i&amp;gt;objektą&amp;lt;/i&amp;gt; kaip apie minėtų failų ir duomenų „kombinaciją“ į vieną esybę. Technine prasme, objektas yra esybė, kuri savyje turi duomenis ir procedūras (kodą, funkcijas, t.t.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Duomenis objekto viduje vadiname &amp;lt;i&amp;gt;atributais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Funkcijas ar procedūras objekto viduje vadiname &amp;lt;i&amp;gt;metodais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;duomenų atributus&amp;lt;/b&amp;gt; kaip apie kintamuosius. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;metodus&amp;lt;/b&amp;gt; kaip apie funkcijas ar procedūras. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į paprastą, kasdienį pavyzdį. Lemputė ir jungiklis tavo kambaryje.&lt;br /&gt;
Atributai bus štai tokie.&lt;br /&gt;
&lt;br /&gt;
* šviesa_įjungta (True False)&lt;br /&gt;
* jungiklio_pozicija (Viršuje arba Apačioje)&lt;br /&gt;
* elektros_tekėjimas (True arba False)&lt;br /&gt;
&lt;br /&gt;
Metodai būtų štai tokie.&lt;br /&gt;
&lt;br /&gt;
* pakeisti_jungiklio_poziciją&lt;br /&gt;
* pakeisti_elektros_tekėjimą&lt;br /&gt;
&lt;br /&gt;
Atributai gali būti matomi ir nematomi. Pavyzdžiui, tu negali matyti elektros tekančios į lemputę. Tu tik žinai, kad elektra išties teka, nes ji tuo metu skleidžia šviesą. Nepaisant to, tu gali matyti jungiklio poziciją (jungiklio_pozicija) ir taip pat tu matai ar šviesa yra įjungta ar ne (šviesa_įjungta). Kai kurie metodai yra &amp;lt;i&amp;gt;privatūs&amp;lt;/i&amp;gt;. Tai reiškia, jog jų neišeina tiesiogiai pakeisti. Pavyzdžiui, nebent būtų nukerpami laidai (to nedaryk ir dėl šio pavyzdžio; manyk, jog laidai neegzistuoja), tu negalėtum pakeisti elektros tėkmės tiesiogiai. Tu taip pat negali tiesiogiai įtakoti lemputės šviesos (ne, tu negali atsukti lemputės ar jos sudaužyti!). Bet tu visada gali šiuos atributus įtakoti netiesiogiai naudojant objekto &amp;lt;i&amp;gt;metodus&amp;lt;/i&amp;gt;. Jeigu nesumokėsi mokesčių, metodas pavadinimu &amp;lt;code&amp;gt;pakeisti_elektros_tekėjimą&amp;lt;/code&amp;gt; pakeis &amp;lt;code&amp;gt;elektros_tekėjimas&amp;lt;/code&amp;gt; reikšmę į FALSE. Jei tu įjungsi jungiklį, &amp;lt;code&amp;gt;pakeisti_jungiklio_poziciją&amp;lt;/code&amp;gt; metodas pakeis &amp;lt;code&amp;gt;šviesa_įjungta&amp;lt;/code&amp;gt; atributo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Dabar jau tikriausiai galvoji, „Ką tai turi bendro su Piton'u?“ ar, „Aš nesuprantu, bet kaip man sukurti tą objektą?“. Na, beveik priėjai prie atsakymų! Tik turiu paaiškinti dar vieną dalyką prieš neriant į kodą.&lt;br /&gt;
&lt;br /&gt;
Piton'e objekto atributai ir metodai yra nurodomi &amp;lt;b&amp;gt;klasės&amp;lt;/b&amp;gt;. Galvok apie klasę kaip apie objekto techninį piešinį. Pavyzdžiui, tavo namai - objektas kuriame gyveni - taip pat jį gali vadinti butu, vasarnamiu, prakartėle ar bet kuo kitu, buvo pastatytas naudojant techinius piešinius. Šie techniniai piešiniai būtų vadinami klasėmis, kurios buvo panaudotos projektuojant tavo namus, butą, vasarnamį, na, supranti apie ką kalbu. &lt;br /&gt;
&lt;br /&gt;
Dar kartą, klasė pasako, kaip sukurti objektą. Techniniais terminais tariant, ir tai yra labai svarbu, klasė nusako naudojamus duomenų atributus ir metodus objekte.&lt;br /&gt;
&lt;br /&gt;
Norint sukurti klasę, mes suprogramuojame &amp;lt;i&amp;gt;klasės apibrėžimą&amp;lt;/i&amp;gt;. Klasės apibrėžimas, tai grupė pareiškimų, kurie nusako objekto atributus ir metodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Pirma pamoka&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apačioje yra procedūrinė programa, kuri atlieka paprastą matematinį veiksmą su vartotojo įvestu skaičiu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
&lt;br /&gt;
# Procedūra 1&lt;br /&gt;
def main():&lt;br /&gt;
    try:&lt;br /&gt;
        # Pasiimk skaičių, kurį manipuliuosi.&lt;br /&gt;
        sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su pasiimtu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 2&lt;br /&gt;
        pridėksk= pridėkpenkis(sk)&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su ankščiau išsaugotu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 3&lt;br /&gt;
        dauginksk= daugink(pridėksk)&lt;br /&gt;
        # Paduok skaičių procedūrai 4&lt;br /&gt;
        rodyk(dauginksk)&lt;br /&gt;
    # Susidorok su išimtimis, kurios gali atsirasti dėl netinkamo vartotojo skaičiaus įvedimo&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Privalai įvesti tinkamą skaičių.\n&amp;quot;)&lt;br /&gt;
        # Atstatyk kintamojo num reikšmę, kad ištrintum netinkamą vartotojo įvestį.&lt;br /&gt;
        sk = 0&lt;br /&gt;
        # Dar kartą iškviesk main.&lt;br /&gt;
        main()&lt;br /&gt;
&lt;br /&gt;
# Procedūra 2&lt;br /&gt;
def pridėkpenkis(sk):&lt;br /&gt;
    return sk + 5&lt;br /&gt;
&lt;br /&gt;
# Procedūra 3&lt;br /&gt;
def daugink(pridėksk):&lt;br /&gt;
    return pridėksk * 2.452&lt;br /&gt;
&lt;br /&gt;
# Procedūra 4&lt;br /&gt;
def rodyk(dauginksk):&lt;br /&gt;
    # Parodyk galutinį rezultatą.&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, dauginksk)&lt;br /&gt;
&lt;br /&gt;
# Kviesk procedūrą 1&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi skaitemnį &amp;quot;5&amp;quot;, gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 5&lt;br /&gt;
 Galutinis rezultatas yra 24.52&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi reikšmę &amp;quot;g&amp;quot;, tada pasitaisysi ir įrašysi skaitmenį &amp;quot;8&amp;quot;, tada gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 g&lt;br /&gt;
 Privalai įvesti tinkamą skaičių.&lt;br /&gt;
 &lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 8&lt;br /&gt;
 Galutinis rezultatas yra 31.875999999999998&lt;br /&gt;
&lt;br /&gt;
Žemiau matai klasę ir programą, kuri naudoja nurodytą klasę. Ši objektinio programavimo programavimo būdu parašyta programa daro tą patį, ką prieš tai darė procedūriniu programavimo būdu parašyta programa. Apžiūrėk keletą svarbių objektinio programavimo būdo konceptų prieš neriant į ankščiau minėtą klasę ir programą.&lt;br /&gt;
Norint sukurti klasę, naudok &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; raktažodį. Po raktažodžio rašyk pavadinimą, kurį norėtum, jog turėtų klasė. Dažnai naudojama praktika kuriant klasių pavadinimus yra &amp;lt;i&amp;gt;NaujųŽodžiųRašymasIšDidžiosiosRaidės&amp;lt;/i&amp;gt;.&lt;br /&gt;
Jei norėčiau sukurti klasę pavadinimu purvinoskojinės, kodas atrodytų taip:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class PurvinosKojinės&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iš pradžių pažiūrėk į klasę. Programa, kuri naudos šią klasę, bus parodyta paskui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Klasė&lt;br /&gt;
&lt;br /&gt;
class SkKeitimas:&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.__skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    def pridėkpenkis(self,sk):&lt;br /&gt;
        self.__skaičius = sk&lt;br /&gt;
        return self.__skaičius + 5&lt;br /&gt;
&lt;br /&gt;
    def padaugink(self,pridėtas):&lt;br /&gt;
        self.__pridėtas = pridėtas&lt;br /&gt;
        return self.__pridėtas * 2.452&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programa, kuri naudoja viršuje esančią klasę yra parašyta žemiau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Filename: ooppavyzdys.py&lt;br /&gt;
# Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Programa&lt;br /&gt;
&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&lt;br /&gt;
maths = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    num = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    pridėt = maths.pridėkpenkis(num)&lt;br /&gt;
&lt;br /&gt;
    daug = maths.padaugink(pridėtas)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, daug )&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tikriausiai dabar esi pasimetęs. Tai visiškai suprantama. Iš pradžių, pasistenk suprasti klasę.&lt;br /&gt;
Klasė yra pavadinta &amp;quot;SkKeitimas&amp;quot;&lt;br /&gt;
Ši klasė turi tris metodus&lt;br /&gt;
* __init__&lt;br /&gt;
* pridėkpenkis&lt;br /&gt;
* padaugink&lt;br /&gt;
&lt;br /&gt;
Šie trys metodai savyje turi labai panašų kodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį į tai, jog kiekvienas metodas turi parametrą pavadinimu „self“. Kiekvienas klasės metodas turi būtinai turėti šį parametrą. Šis parametras nebūtinai turi būti su pavadinimu „self“, bet tai yra priimta kaip geriausia praktika, tad tikriausiai ir tu turėtum jį taip vadinti. Šis parametras yra reikalingas kiekviename metode nes, kai jis yra iškviečiamas, jis turi žinoti, su kuriuo objekto atributu turėtų atlikti operacijas. Net kai turi tik vieną objektą, turi pasirūpinti, kad programa žinotų, jog nori naudoti atributus aprašytus būtent toje klasėje. Todėl turi būti saugus ir naudoti „self“ parametrą.&lt;br /&gt;
&lt;br /&gt;
Peržiūrėk pirmą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dauguma Piton'o klasių turi &amp;lt;code&amp;gt;__init__&amp;lt;/code&amp;gt;, kuris yra paleidžiamas automatiškai kiekvieną kartą, kai atmintyje yra sukuriama tos klasės instancija/egzempliorius (Kai sukuriame nuorodą į klasę, yra sukuriama tos klasės &amp;lt;i&amp;gt;instancija&amp;lt;/i&amp;gt; [objektas]). Šis metodas yra paprastai vadinamas &amp;lt;i&amp;gt;inicijavimo metodu&amp;lt;/i&amp;gt;. Kai šis metodas yra paleidžiamas, „self“ parametras yra automatiškai priskiriamas tariamam objektui. __init__ metodas inicijuoja klasės atributus, dėl šios priežasties jis yra pavadintas inicijavimo metodu. Po __init__ metodu, iš pradžių &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; atributui mes priskiriame 0.&lt;br /&gt;
Yra sukuriama nuorodą į turimo objekto atributą panaudojant taškinį žymėjimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
    self.__skaičius = 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kodas &amp;lt;code&amp;gt;self.__skaičius = 0&amp;lt;/code&amp;gt; reiškia, jog objekte esančio „skaičius“ atributo reikšmė yra 0.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į kitą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
    self.__skaičius = sk&lt;br /&gt;
    return self.__skaičius + 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „pridėkpenkis“. Jis priima parametrą pavadinimu „sk“. Metode esanti logika tada priskiria „sk“ reikšmę objekte esančiui atributui su pavadinimu „skaičius“. Tada metodas prideda 5 prie „skaičius“ ir jį grąžina jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į trečiajį metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
    self.__pridėtas= pridėtas&lt;br /&gt;
    return self.__pridėtas * 2.453&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „padaugink“. Jis priima parametrą pavadinimu „pridėtas“. Metodas priskiria priimtą reikšmę objekte esančiam atributui su pavadinimu „pridėtas“ ir grąžina „pridėtas“ atributo ir 2.452 sandaugą jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Ar atkreipei dėmesį į tai, jog kiekvienas metodo pavadinimas prasideda su dviem pabraukimais? Pabandyk tai suprasti.&lt;br /&gt;
Prieš tai buvo minėta, jog objektas, su metodų pagalba, dirba su atributais apibrėžtais jame pačiame. Būtų idealu, jei tuos atributus galėtum pakeisti TIK SU METODAIS ESANČIAIS PAČIAME OBJEKTE. Įmanoma turėti iššorinį kodą, kuris galėtų manipuliuoti tais pačiais atributais. Norint „paslėpti“ atributus, taip, kad juos matytų metodai aprašyti pačiame objekte, turi naudoti du pabraukimus prieš objekto pavadinimą, taip kaip ir buvo rodyta. Ištrynus abu pabraukimus nuo atributo pavadinimo tu juo galėsi manipuliuoti kodu, kuris yra parašytas objekto išorėje.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėki į programą, kuri naudoja aptartą klasę.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į pirmą eilutę, kuri nėra komentaras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši kodo eilutė importuoją klasę, kurią išsaugojai atskirame faile (modulyje). Klasės nebūtinai turi būti talpinamos atskiruose failuose, bet tai yra priimta kaip gera praktika, tad yra verta jau nuo pat pradžių priprasti prie modulių importavimo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši eilutė sukuria SkKeitimas pavadinimu, „ooppavyzdys“ modulyje patalpintos klasės instanciją/egzempliorių, kuri yra priskiriama „matkė“ kintamajam.&lt;br /&gt;
Sintaksė atrodo taip:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;i&amp;gt;moduliopavadinimas.Klasėspavadinimas()&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Apibrėžk main funkciją.&lt;br /&gt;
Pasiimk skaičių iš vartotojo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;pridėtas = matkė.pridėkpenkis(sk)&amp;lt;/code&amp;gt; nusiunčia „sk“ kintamojo reikšmę metodui pavadinimu „pridėkpenkis“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojai kintamajame pavadinimu „matkė“. „pridėkpenkis“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „pridėtas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;daug = matkė.daugink(pridėtas)&amp;lt;/code&amp;gt; nusiunčia „pridėtas“ kintamojo reikšmę metodui pavadinimu „daugink“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojome kintamajame pavadinimu „matkė“. „daugink“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „daug“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė atspausdina „Galutinis rezultatas yra &amp;lt;daug reikšmė&amp;gt;“. Paskutinė eilutė iškviečia main funkciją, kuri įvykdo žingsnius nurodytus viršuje.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Rekursija|next=Įvadas į importuotas bibliotekas ir kitas funkcijas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3567</id>
		<title>Python Vadovėlis/Įvadas į objektinį programavimą Python 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3567"/>
		<updated>2021-11-23T17:22:36Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Objektinis programavimas==&lt;br /&gt;
&lt;br /&gt;
Iki šiol rašei kodą pagal procedūrinio programavimo taisykles. Tačiau, yra daug programų, kurios - parašytos pagal objektinio programavimo taisykles. Žinoti abu programavimo tipus ir jų skirtumus yra labai svarbu. Informatikoje, daug svarbių kalbų kaip C++ ar Java dažnai naudoja objektinio programavimo taisykles.&lt;br /&gt;
&lt;br /&gt;
Pradedantiesiems ir mokiniams, neturintiems programavimo žinių, objektinis programavimas dažnai gali atrodyti painus ir tai yra visiškai normalu. Nesijausk blogai, jei nesiseka suprasti iš pat pradžių. Jei šis skyrius nepadės tau suprasti, yra ir daugiau informatyvių šaltinių, kurie padės atsakyti į visus klausimus.&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra padalintas į keletą pamokų. Kiekviena pamoka - skirta paaiškinti skirtingas objektinio programavimo dalis. &amp;lt;b&amp;gt;LABAI SVARBU&amp;lt;/b&amp;gt; suprasti jas visas. Nepamiršk prieš kiekvieną pamoką perskaityti įžangą, kuri paaiškins pagrindines idėjas, sąvokas ir kitas objektinio programavimo sritis.&lt;br /&gt;
&lt;br /&gt;
==Įžanga==&lt;br /&gt;
&lt;br /&gt;
Galvok apie procedūrą kaip apie funkciją. Funkcija turi konkrečią paskyrtį ir jų gali būti įvairių: rinkti įvestis, atlikti matematinius skaičiavimus, atvaizduoti ar manipuliuoti duomenis. Paprastai, procedūros manipuliuoja duomenis, kurie yra aprašyti atskirai. Šie duomenys yra dažnai perduodami iš vienos procedūros į kitą. Ir kai programa pasidaro per didelė, tai padaro duomenų perdavimą komplikuotą.&lt;br /&gt;
Pavyzdžiui, parašei programą, kuri kintamuosiuose išsaugo produkto duomenis. Kai klientas paprašo informacijos apie produktą, kintamieji, kurie turi visą informaciją, yra perduodami įvairioms funkcijoms su skirtingomis paskirtimis. Laikui bėgant ir saugant vis daugiau duomenų apie turimus produktus, tu sugalvoji išsaugoti turimą informaciją sąrašuose ar žodynuose. Norint, jog tavo programa veiktų, tu dabar turi redaguoti kiekvieną funkciją, kuri naudojo tuos kintamuosius, taip, kad dabar ji galėtų priimti ir manipuliuoti sąrašus ar žodynus. Įsivaizduok kiek laiko tau reikėtų norint peržiūrėti ir pakeisti šimtus failų. Tu išprotėtum! Nekalbant apie tai, jog klaidas daro net ir labiausiai patyrę programuotojai, tad taip pat reikėtų taisyti begalę klaidų. Toks programavimas yra pernelyg neoptimalus.&lt;br /&gt;
Procedūrinis programavimas yra paremtas procedūromis (funkcijomis). Objektinis programavimas yra paremtas objektais. Ar prisimeni, kaip procedūrinė programa atskyrė duomenis nuo kodo? Ar prisimeni programą, kuri turėjo šimtus failų ir norint kažką pakeisti reikėdavo ilgai joje narpstytis? &lt;br /&gt;
Galvok apie &amp;lt;i&amp;gt;objektą&amp;lt;/i&amp;gt; kaip apie minėtų failų ir duomenų „kombinaciją“ į vieną esybę. Technine prasme, objektas yra esybė, kuri savyje turi duomenis ir procedūras (kodą, funkcijas, t.t.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Duomenis objekto viduje vadiname &amp;lt;i&amp;gt;atributais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Funkcijas ar procedūras objekto viduje vadiname &amp;lt;i&amp;gt;metodais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;duomenų atributus&amp;lt;/b&amp;gt; kaip apie kintamuosius. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;metodus&amp;lt;/b&amp;gt; kaip apie funkcijas ar procedūras. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į paprastą, kasdienį pavyzdį. Lemputė ir jungiklis tavo kambaryje.&lt;br /&gt;
Atributai bus štai tokie.&lt;br /&gt;
&lt;br /&gt;
* šviesa_įjungta (True False)&lt;br /&gt;
* jungiklio_pozicija (Viršuje arba Apačioje)&lt;br /&gt;
* elektros_tekėjimas (True arba False)&lt;br /&gt;
&lt;br /&gt;
Metodai būtų štai tokie.&lt;br /&gt;
&lt;br /&gt;
* pakeisti_jungiklio_poziciją&lt;br /&gt;
* pakeisti_elektros_tekėjimą&lt;br /&gt;
&lt;br /&gt;
Atributai gali būti matomi ir nematomi. Pavyzdžiui, tu negali matyti elektros tekančios į lemputę. Tu tik žinai, kad elektra išties teka, nes ji tuo metu skleidžia šviesą. Nepaisant to, tu gali matyti jungiklio poziciją (jungiklio_pozicija) ir taip pat tu matai ar šviesa yra įjungta ar ne (šviesa_įjungta). Kai kurie metodai yra &amp;lt;i&amp;gt;privatūs&amp;lt;/i&amp;gt;. Tai reiškia, jog jų neišeina tiesiogiai pakeisti. Pavyzdžiui, nebent būtų nukerpami laidai (to nedaryk ir dėl šio pavyzdžio; manyk, jog laidai neegzistuoja), tu negalėtum pakeisti elektros tėkmės tiesiogiai. Tu taip pat negali tiesiogiai įtakoti lemputės šviesos (ne, tu negali atsukti lemputės ar jos sudaužyti!). Bet tu visada gali šiuos atributus įtakoti netiesiogiai naudojant objekto &amp;lt;i&amp;gt;metodus&amp;lt;/i&amp;gt;. Jeigu nesumokėsi mokesčių, metodas pavadinimu &amp;lt;code&amp;gt;pakeisti_elektros_tekėjimą&amp;lt;/code&amp;gt; pakeis &amp;lt;code&amp;gt;elektros_tekėjimas&amp;lt;/code&amp;gt; reikšmę į FALSE. Jei tu įjungsi jungiklį, &amp;lt;code&amp;gt;pakeisti_jungiklio_poziciją&amp;lt;/code&amp;gt; metodas pakeis &amp;lt;code&amp;gt;šviesa_įjungta&amp;lt;/code&amp;gt; atributo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Dabar jau tikriausiai galvoji, „Ką tai turi bendro su Piton'u?“ ar, „Aš nesuprantu, bet kaip man sukurti tą objektą?“. Na, beveik priėjai prie atsakymų! Tik turiu paaiškinti dar vieną dalyką prieš neriant į kodą.&lt;br /&gt;
&lt;br /&gt;
Piton'e objekto atributai ir metodai yra nurodomi &amp;lt;b&amp;gt;klasės&amp;lt;/b&amp;gt;. Galvok apie klasę kaip apie objekto techninį piešinį. Pavyzdžiui, tavo namai - objektas kuriame gyveni - taip pat jį gali vadinti butu, vasarnamiu, prakartėle ar bet kuo kitu, buvo pastatytas naudojant techinius piešinius. Šie techniniai piešiniai būtų vadinami klasėmis, kurios buvo panaudotos projektuojant tavo namus, butą, vasarnamį, na, supranti apie ką kalbu. &lt;br /&gt;
&lt;br /&gt;
Dar kartą, klasė pasako, kaip sukurti objektą. Techniniais terminais tariant, ir tai yra labai svarbu, klasė nusako naudojamus duomenų atributus ir metodus objekte.&lt;br /&gt;
&lt;br /&gt;
Norint sukurti klasę, mes suprogramuojame &amp;lt;i&amp;gt;klasės apibrėžimą&amp;lt;/i&amp;gt;. Klasės apibrėžimas, tai grupė pareiškimų, kurie nusako objekto atributus ir metodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Pirma pamoka&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apačioje yra procedūrinė programa, kuri atlieka paprastą matematinį veiksmą su vartotojo įvestu skaičiu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
&lt;br /&gt;
# Procedūra 1&lt;br /&gt;
def main():&lt;br /&gt;
    try:&lt;br /&gt;
        # Pasiimk skaičių, kurį manipuliuosi.&lt;br /&gt;
        sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su pasiimtu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 2&lt;br /&gt;
        pridėksk= pridėkpenkis(sk)&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su ankščiau išsaugotu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 3&lt;br /&gt;
        dauginksk= daugink(pridėksk)&lt;br /&gt;
        # Paduok skaičių procedūrai 4&lt;br /&gt;
        rodyk(dauginksk)&lt;br /&gt;
    # Susidorok su išimtimis, kurios gali atsirasti dėl netinkamo vartotojo skaičiaus įvedimo&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Privalai įvesti tinkamą skaičių.\n&amp;quot;)&lt;br /&gt;
        # Atstatyk kintamojo num reikšmę, kad ištrintum netinkamą vartotojo įvestį.&lt;br /&gt;
        sk = 0&lt;br /&gt;
        # Dar kartą iškviesk main.&lt;br /&gt;
        main()&lt;br /&gt;
&lt;br /&gt;
# Procedūra 2&lt;br /&gt;
def pridėkpenkis(sk):&lt;br /&gt;
    return sk + 5&lt;br /&gt;
&lt;br /&gt;
# Procedūra 3&lt;br /&gt;
def daugink(pridėksk):&lt;br /&gt;
    return pridėksk * 2.452&lt;br /&gt;
&lt;br /&gt;
# Procedūra 4&lt;br /&gt;
def rodyk(dauginksk):&lt;br /&gt;
    # Parodyk galutinį rezultatą.&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, dauginksk)&lt;br /&gt;
&lt;br /&gt;
# Kviesk procedūrą 1&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi skaitemnį &amp;quot;5&amp;quot;, gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 5&lt;br /&gt;
 Galutinis rezultatas yra 24.52&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi reikšmę &amp;quot;g&amp;quot;, tada pasitaisysi ir įrašysi skaitmenį &amp;quot;8&amp;quot;, tada gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 g&lt;br /&gt;
 Privalai įvesti tinkamą skaičių.&lt;br /&gt;
 &lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 8&lt;br /&gt;
 Galutinis rezultatas yra 31.875999999999998&lt;br /&gt;
&lt;br /&gt;
Žemiau matome klasę ir programą, kuri naudoją nurodytą klasę. Ši objektinio programavimo programavimo būdu parašyta programa daro tą patį, ką prieš tai darė procedūriniu programavimo būdu parašyta programa. Apžiūrėk keletą svarbių objektinio programavimo būdo konceptų prieš neriant į ankščiau minėtą klasę ir programą.&lt;br /&gt;
Norint sukurti klasę, naudok &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; raktažodį. Po raktažodžio rašyk pavadinimą, kurį norėtum, jog turėtų klasė. Dažnai naudojama praktika kuriant klasių pavadinimus yra &amp;lt;i&amp;gt;NaujųŽodžiųRašymasIšDidžiosiosRaidės&amp;lt;/i&amp;gt;.&lt;br /&gt;
Jei norėčiau sukurti klasę pavadinimu purvinoskojinės, kodas atrodytų taip:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class PurvinosKojinės&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iš pradžių pažiūrėk į klasę. Programa, kuri naudos šią klasę, bus parodyta paskui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Klasė&lt;br /&gt;
&lt;br /&gt;
class SkKeitimas:&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.__skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    def pridėkpenkis(self,sk):&lt;br /&gt;
        self.__skaičius = sk&lt;br /&gt;
        return self.__skaičius + 5&lt;br /&gt;
&lt;br /&gt;
    def padaugink(self,pridėtas):&lt;br /&gt;
        self.__pridėtas = pridėtas&lt;br /&gt;
        return self.__pridėtas * 2.452&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programa, kuri naudoja viršuje esančią klasę yra parašyta žemiau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Filename: ooppavyzdys.py&lt;br /&gt;
# Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Programa&lt;br /&gt;
&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&lt;br /&gt;
maths = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    num = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    pridėt = maths.pridėkpenkis(num)&lt;br /&gt;
&lt;br /&gt;
    daug = maths.padaugink(pridėtas)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, daug )&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tikriausiai dabar esi pasimetęs. Tai visiškai suprantama. Iš pradžių, pasistenk suprasti klasę.&lt;br /&gt;
Klasė yra pavadinta &amp;quot;SkKeitimas&amp;quot;&lt;br /&gt;
Ši klasė turi tris metodus&lt;br /&gt;
* __init__&lt;br /&gt;
* pridėkpenkis&lt;br /&gt;
* padaugink&lt;br /&gt;
&lt;br /&gt;
Šie trys metodai savyje turi labai panašų kodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį į tai, jog kiekvienas metodas turi parametrą pavadinimu „self“. Kiekvienas klasės metodas turi būtinai turėti šį parametrą. Šis parametras nebūtinai turi būti su pavadinimu „self“, bet tai yra priimta kaip geriausia praktika, tad tikriausiai ir tu turėtum jį taip vadinti. Šis parametras yra reikalingas kiekviename metode nes, kai jis yra iškviečiamas, jis turi žinoti, su kuriuo objekto atributu turėtų atlikti operacijas. Net kai turi tik vieną objektą, turi pasirūpinti, kad programa žinotų, jog nori naudoti atributus aprašytus būtent toje klasėje. Todėl turi būti saugus ir naudoti „self“ parametrą.&lt;br /&gt;
&lt;br /&gt;
Peržiūrėk pirmą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dauguma Piton'o klasių turi &amp;lt;code&amp;gt;__init__&amp;lt;/code&amp;gt;, kuris yra paleidžiamas automatiškai kiekvieną kartą, kai atmintyje yra sukuriama tos klasės instancija/egzempliorius (Kai sukuriame nuorodą į klasę, yra sukuriama tos klasės &amp;lt;i&amp;gt;instancija&amp;lt;/i&amp;gt; [objektas]). Šis metodas yra paprastai vadinamas &amp;lt;i&amp;gt;inicijavimo metodu&amp;lt;/i&amp;gt;. Kai šis metodas yra paleidžiamas, „self“ parametras yra automatiškai priskiriamas tariamam objektui. __init__ metodas inicijuoja klasės atributus, dėl šios priežasties jis yra pavadintas inicijavimo metodu. Po __init__ metodu, iš pradžių &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; atributui mes priskiriame 0.&lt;br /&gt;
Yra sukuriama nuorodą į turimo objekto atributą panaudojant taškinį žymėjimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
    self.__skaičius = 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kodas &amp;lt;code&amp;gt;self.__skaičius = 0&amp;lt;/code&amp;gt; reiškia, jog objekte esančio „skaičius“ atributo reikšmė yra 0.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į kitą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
    self.__skaičius = sk&lt;br /&gt;
    return self.__skaičius + 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „pridėkpenkis“. Jis priima parametrą pavadinimu „sk“. Metode esanti logika tada priskiria „sk“ reikšmę objekte esančiui atributui su pavadinimu „skaičius“. Tada metodas prideda 5 prie „skaičius“ ir jį grąžina jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į trečiajį metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
    self.__pridėtas= pridėtas&lt;br /&gt;
    return self.__pridėtas * 2.453&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „padaugink“. Jis priima parametrą pavadinimu „pridėtas“. Metodas priskiria priimtą reikšmę objekte esančiam atributui su pavadinimu „pridėtas“ ir grąžina „pridėtas“ atributo ir 2.452 sandaugą jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Ar atkreipei dėmesį į tai, jog kiekvienas metodo pavadinimas prasideda su dviem pabraukimais? Pabandyk tai suprasti.&lt;br /&gt;
Prieš tai buvo minėta, jog objektas, su metodų pagalba, dirba su atributais apibrėžtais jame pačiame. Būtų idealu, jei tuos atributus galėtum pakeisti TIK SU METODAIS ESANČIAIS PAČIAME OBJEKTE. Įmanoma turėti iššorinį kodą, kuris galėtų manipuliuoti tais pačiais atributais. Norint „paslėpti“ atributus, taip, kad juos matytų metodai aprašyti pačiame objekte, turi naudoti du pabraukimus prieš objekto pavadinimą, taip kaip ir buvo rodyta. Ištrynus abu pabraukimus nuo atributo pavadinimo tu juo galėsi manipuliuoti kodu, kuris yra parašytas objekto išorėje.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėki į programą, kuri naudoja aptartą klasę.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į pirmą eilutę, kuri nėra komentaras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši kodo eilutė importuoją klasę, kurią išsaugojai atskirame faile (modulyje). Klasės nebūtinai turi būti talpinamos atskiruose failuose, bet tai yra priimta kaip gera praktika, tad yra verta jau nuo pat pradžių priprasti prie modulių importavimo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši eilutė sukuria SkKeitimas pavadinimu, „ooppavyzdys“ modulyje patalpintos klasės instanciją/egzempliorių, kuri yra priskiriama „matkė“ kintamajam.&lt;br /&gt;
Sintaksė atrodo taip:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;i&amp;gt;moduliopavadinimas.Klasėspavadinimas()&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Apibrėžk main funkciją.&lt;br /&gt;
Pasiimk skaičių iš vartotojo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;pridėtas = matkė.pridėkpenkis(sk)&amp;lt;/code&amp;gt; nusiunčia „sk“ kintamojo reikšmę metodui pavadinimu „pridėkpenkis“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojai kintamajame pavadinimu „matkė“. „pridėkpenkis“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „pridėtas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;daug = matkė.daugink(pridėtas)&amp;lt;/code&amp;gt; nusiunčia „pridėtas“ kintamojo reikšmę metodui pavadinimu „daugink“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojome kintamajame pavadinimu „matkė“. „daugink“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „daug“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė atspausdina „Galutinis rezultatas yra &amp;lt;daug reikšmė&amp;gt;“. Paskutinė eilutė iškviečia main funkciją, kuri įvykdo žingsnius nurodytus viršuje.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Rekursija|next=Įvadas į importuotas bibliotekas ir kitas funkcijas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3566</id>
		<title>Python Vadovėlis/Įvadas į objektinį programavimą Python 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3566"/>
		<updated>2021-11-23T17:21:53Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Objektinis programavimas==&lt;br /&gt;
&lt;br /&gt;
Iki šiol rašei kodą pagal procedūrinio programavimo taisykles. Tačiau, yra daug programų, kurios - parašytos pagal objektinio programavimo taisykles. Žinoti abu programavimo tipus ir jų skirtumus yra labai svarbu. Informatikoje, daug svarbių kalbų kaip C++ ar Java dažnai naudoja objektinio programavimo taisykles.&lt;br /&gt;
&lt;br /&gt;
Pradedantiesiems ir mokiniams, neturintiems programavimo žinių, objektinis programavimas dažnai gali atrodyti painus ir tai yra visiškai normalu. Nesijausk blogai, jei nesiseka suprasti iš pat pradžių. Jei šis skyrius nepadės tau suprasti, yra ir daugiau informatyvių šaltinių, kurie padės atsakyti į visus klausimus.&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra padalintas į keletą pamokų. Kiekviena pamoka - skirta paaiškinti skirtingas objektinio programavimo dalis. &amp;lt;b&amp;gt;LABAI SVARBU&amp;lt;/b&amp;gt; suprasti jas visas. Nepamiršk prieš kiekvieną pamoką perskaityti įžangą, kuri paaiškins pagrindines idėjas, sąvokas ir kitas objektinio programavimo sritis.&lt;br /&gt;
&lt;br /&gt;
==Įžanga==&lt;br /&gt;
&lt;br /&gt;
Galvok apie procedūrą kaip apie funkciją. Funkcija turi konkrečią paskyrtį ir jų gali būti įvairių: rinkti įvestis, atlikti matematinius skaičiavimus, atvaizduoti ar manipuliuoti duomenis. Paprastai, procedūros manipuliuoja duomenis, kurie yra aprašyti atskirai. Šie duomenys yra dažnai perduodami iš vienos procedūros į kitą. Ir kai programa pasidaro per didelė, tai padaro duomenų perdavimą komplikuotą.&lt;br /&gt;
Pavyzdžiui, parašei programą, kuri kintamuosiuose išsaugo produkto duomenis. Kai klientas paprašo informacijos apie produktą, kintamieji, kurie turi visą informaciją, yra perduodami įvairioms funkcijoms su skirtingomis paskirtimis. Laikui bėgant ir saugant vis daugiau duomenų apie turimus produktus, tu sugalvoji išsaugoti turimą informaciją sąrašuose ar žodynuose. Norint, jog tavo programa veiktų, tu dabar turi redaguoti kiekvieną funkciją, kuri naudojo tuos kintamuosius, taip, kad dabar ji galėtų priimti ir manipuliuoti sąrašus ar žodynus. Įsivaizduok kiek laiko tau reikėtų norint peržiūrėti ir pakeisti šimtus failų. Tu išprotėtum! Nekalbant apie tai, jog klaidas daro net ir labiausiai patyrę programuotojai, tad taip pat reikėtų taisyti begalę klaidų. Toks programavimas yra pernelyg neoptimalus.&lt;br /&gt;
Procedūrinis programavimas yra paremtas procedūromis (funkcijomis). Objektinis programavimas yra paremtas objektais. Ar prisimeni, kaip procedūrinė programa atskyrė duomenis nuo kodo? Ar prisimeni programą, kuri turėjo šimtus failų ir norint kažką pakeisti reikėdavo ilgai joje narpstytis? &lt;br /&gt;
Galvok apie &amp;lt;i&amp;gt;objektą&amp;lt;/i&amp;gt; kaip apie minėtų failų ir duomenų „kombinaciją“ į vieną esybę. Technine prasme, objektas yra esybė, kuri savyje turi duomenis ir procedūras (kodą, funkcijas, t.t.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Duomenis objekto viduje vadiname &amp;lt;i&amp;gt;atributais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Funkcijas ar procedūras objekto viduje vadiname &amp;lt;i&amp;gt;metodais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;duomenų atributus&amp;lt;/b&amp;gt; kaip apie kintamuosius. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;metodus&amp;lt;/b&amp;gt; kaip apie funkcijas ar procedūras. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į paprastą, kasdienį pavyzdį. Lemputė ir jungiklis tavo kambaryje.&lt;br /&gt;
Atributai bus štai tokie.&lt;br /&gt;
&lt;br /&gt;
* šviesa_įjungta (True False)&lt;br /&gt;
* jungiklio_pozicija (Viršuje arba Apačioje)&lt;br /&gt;
* elektros_tekėjimas (True arba False)&lt;br /&gt;
&lt;br /&gt;
Metodai būtų štai tokie.&lt;br /&gt;
&lt;br /&gt;
* pakeisti_jungiklio_poziciją&lt;br /&gt;
* pakeisti_elektros_tekėjimą&lt;br /&gt;
&lt;br /&gt;
Atributai gali būti matomi ir nematomi. Pavyzdžiui, tu negali matyti elektros tekančios į lemputę. Tu tik žinai, kad elektra išties teka, nes ji tuo metu skleidžia šviesą. Nepaisant to, tu gali matyti jungiklio poziciją (jungiklio_pozicija) ir taip pat tu matai ar šviesa yra įjungta ar ne (šviesa_įjungta). Kai kurie metodai yra &amp;lt;i&amp;gt;privatūs&amp;lt;/i&amp;gt;. Tai reiškia, jog jų neišeina tiesiogiai pakeisti. Pavyzdžiui, nebent būtų nukerpami laidai (to nedaryk ir dėl šio pavyzdžio; manyk, jog laidai neegzistuoja), tu negalėtum pakeisti elektros tėkmės tiesiogiai. Tu taip pat negali tiesiogiai įtakoti lemputės šviesos (ne, tu negali atsukti lemputės ar jos sudaužyti!). Bet tu visada gali šiuos atributus įtakoti netiesiogiai naudojant objekto &amp;lt;i&amp;gt;metodus&amp;lt;/i&amp;gt;. Jeigu nesumokėsi mokesčių, metodas pavadinimu &amp;lt;code&amp;gt;pakeisti_elektros_tekėjimą&amp;lt;/code&amp;gt; pakeis &amp;lt;code&amp;gt;elektros_tekėjimas&amp;lt;/code&amp;gt; reikšmę į FALSE. Jei tu įjungsi jungiklį, &amp;lt;code&amp;gt;pakeisti_jungiklio_poziciją&amp;lt;/code&amp;gt; metodas pakeis &amp;lt;code&amp;gt;šviesa_įjungta&amp;lt;/code&amp;gt; atributo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Dabar jau tikriausiai galvoji, „Ką tai turi bendro su Piton'u?“ ar, „Aš nesuprantu, bet kaip man sukurti tą objektą?“. Na, beveik priėjai prie atsakymų! Tik turiu paaiškinti dar vieną dalyką prieš neriant į kodą.&lt;br /&gt;
&lt;br /&gt;
Piton'e objekto atributai ir metodai yra nurodomi &amp;lt;b&amp;gt;klasės&amp;lt;/b&amp;gt;. Galvok apie klasę kaip apie objekto techninį piešinį. Pavyzdžiui, tavo namai - objektas kuriame gyveni - taip pat jį gali vadinti butu, vasarnamiu, prakartėle ar bet kuo kitu, buvo pastatytas naudojant techinius piešinius. Šie techniniai piešiniai būtų vadinami klasėmis, kurios buvo panaudotos projektuojant tavo namus, butą, vasarnamį, na, supranti apie ką kalbu. &lt;br /&gt;
&lt;br /&gt;
Dar kartą, klasė pasako, kaip sukurti objektą. Techniniais terminais tariant, ir tai yra labai svarbu, klasė nusako naudojamus duomenų atributus ir metodus objekte.&lt;br /&gt;
&lt;br /&gt;
Norint sukurti klasę, mes suprogramuojame &amp;lt;i&amp;gt;klasės apibrėžimą&amp;lt;/i&amp;gt;. Klasės apibrėžimas, tai grupė pareiškimų, kurie nusako objekto atributus ir metodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Pirma pamoka&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apačioje yra procedūrinė programa, kuri atlieka paprastą matematinį veiksmą su vartotojo įvestu skaičiu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
&lt;br /&gt;
# Procedūra 1&lt;br /&gt;
def main():&lt;br /&gt;
    try:&lt;br /&gt;
        # Pasiimk skaičių, kurį manipuliuosi.&lt;br /&gt;
        sk = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su pasiimtu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 2&lt;br /&gt;
        pridėksk= pridėkpenkis(sk)&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su ankščiau išsaugotu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 3&lt;br /&gt;
        dauginksk= daugink(pridėksk)&lt;br /&gt;
        # Paduok skaičių procedūrai 4&lt;br /&gt;
        rodyk(dauginksk)&lt;br /&gt;
    # Susidorok su išimtimis, kurios gali atsirasti dėl netinkamo vartotojo skaičiaus įvedimo&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Privalai įvesti tinkamą skaičių.\n&amp;quot;)&lt;br /&gt;
        # Atstatyk kintamojo num reikšmę, kad ištrintum netinkamą vartotojo įvestį.&lt;br /&gt;
        sk = 0&lt;br /&gt;
        # Dar kartą iškviesk main.&lt;br /&gt;
        main()&lt;br /&gt;
&lt;br /&gt;
# Procedūra 2&lt;br /&gt;
def pridėkpenkis(sk):&lt;br /&gt;
    return sk + 5&lt;br /&gt;
&lt;br /&gt;
# Procedūra 3&lt;br /&gt;
def daugink(pridėksk):&lt;br /&gt;
    return pridėksk * 2.452&lt;br /&gt;
&lt;br /&gt;
# Procedūra 4&lt;br /&gt;
def rodyk(dauginksk):&lt;br /&gt;
    # Parodyk galutinį rezultatą.&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, dauginksk)&lt;br /&gt;
&lt;br /&gt;
# Kviesk procedūrą 1&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi skaitemnį &amp;quot;5&amp;quot;, gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 5&lt;br /&gt;
 Galutinis rezultatas yra 24.52&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi reikšmę &amp;quot;g&amp;quot;, tada pasitaisysi ir įrašysi skaitmenį &amp;quot;8&amp;quot;, tada gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašykite skaičių.&lt;br /&gt;
 g&lt;br /&gt;
 Privalai įvesti tinkamą skaičių.&lt;br /&gt;
 &lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 8&lt;br /&gt;
 Galutinis rezultatas yra 31.875999999999998&lt;br /&gt;
&lt;br /&gt;
Žemiau matome klasę ir programą, kuri naudoją nurodytą klasę. Ši objektinio programavimo programavimo būdu parašyta programa daro tą patį, ką prieš tai darė procedūriniu programavimo būdu parašyta programa. Apžiūrėk keletą svarbių objektinio programavimo būdo konceptų prieš neriant į ankščiau minėtą klasę ir programą.&lt;br /&gt;
Norint sukurti klasę, naudok &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; raktažodį. Po raktažodžio rašyk pavadinimą, kurį norėtum, jog turėtų klasė. Dažnai naudojama praktika kuriant klasių pavadinimus yra &amp;lt;i&amp;gt;NaujųŽodžiųRašymasIšDidžiosiosRaidės&amp;lt;/i&amp;gt;.&lt;br /&gt;
Jei norėčiau sukurti klasę pavadinimu purvinoskojinės, kodas atrodytų taip:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class PurvinosKojinės&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iš pradžių pažiūrėk į klasę. Programa, kuri naudos šią klasę, bus parodyta paskui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Klasė&lt;br /&gt;
&lt;br /&gt;
class SkKeitimas:&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.__skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    def pridėkpenkis(self,sk):&lt;br /&gt;
        self.__skaičius = sk&lt;br /&gt;
        return self.__skaičius + 5&lt;br /&gt;
&lt;br /&gt;
    def padaugink(self,pridėtas):&lt;br /&gt;
        self.__pridėtas = pridėtas&lt;br /&gt;
        return self.__pridėtas * 2.452&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programa, kuri naudoja viršuje esančią klasę yra parašyta žemiau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Filename: ooppavyzdys.py&lt;br /&gt;
# Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Programa&lt;br /&gt;
&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&lt;br /&gt;
maths = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    num = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    pridėt = maths.pridėkpenkis(num)&lt;br /&gt;
&lt;br /&gt;
    daug = maths.padaugink(pridėtas)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, daug )&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tikriausiai dabar esi pasimetęs. Tai visiškai suprantama. Iš pradžių, pasistenk suprasti klasę.&lt;br /&gt;
Klasė yra pavadinta &amp;quot;SkKeitimas&amp;quot;&lt;br /&gt;
Ši klasė turi tris metodus&lt;br /&gt;
* __init__&lt;br /&gt;
* pridėkpenkis&lt;br /&gt;
* padaugink&lt;br /&gt;
&lt;br /&gt;
Šie trys metodai savyje turi labai panašų kodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį į tai, jog kiekvienas metodas turi parametrą pavadinimu „self“. Kiekvienas klasės metodas turi būtinai turėti šį parametrą. Šis parametras nebūtinai turi būti su pavadinimu „self“, bet tai yra priimta kaip geriausia praktika, tad tikriausiai ir tu turėtum jį taip vadinti. Šis parametras yra reikalingas kiekviename metode nes, kai jis yra iškviečiamas, jis turi žinoti, su kuriuo objekto atributu turėtų atlikti operacijas. Net kai turi tik vieną objektą, turi pasirūpinti, kad programa žinotų, jog nori naudoti atributus aprašytus būtent toje klasėje. Todėl turi būti saugus ir naudoti „self“ parametrą.&lt;br /&gt;
&lt;br /&gt;
Peržiūrėk pirmą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dauguma Piton'o klasių turi &amp;lt;code&amp;gt;__init__&amp;lt;/code&amp;gt;, kuris yra paleidžiamas automatiškai kiekvieną kartą, kai atmintyje yra sukuriama tos klasės instancija/egzempliorius (Kai sukuriame nuorodą į klasę, yra sukuriama tos klasės &amp;lt;i&amp;gt;instancija&amp;lt;/i&amp;gt; [objektas]). Šis metodas yra paprastai vadinamas &amp;lt;i&amp;gt;inicijavimo metodu&amp;lt;/i&amp;gt;. Kai šis metodas yra paleidžiamas, „self“ parametras yra automatiškai priskiriamas tariamam objektui. __init__ metodas inicijuoja klasės atributus, dėl šios priežasties jis yra pavadintas inicijavimo metodu. Po __init__ metodu, iš pradžių &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; atributui mes priskiriame 0.&lt;br /&gt;
Yra sukuriama nuorodą į turimo objekto atributą panaudojant taškinį žymėjimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
    self.__skaičius = 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kodas &amp;lt;code&amp;gt;self.__skaičius = 0&amp;lt;/code&amp;gt; reiškia, jog objekte esančio „skaičius“ atributo reikšmė yra 0.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į kitą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
    self.__skaičius = sk&lt;br /&gt;
    return self.__skaičius + 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „pridėkpenkis“. Jis priima parametrą pavadinimu „sk“. Metode esanti logika tada priskiria „sk“ reikšmę objekte esančiui atributui su pavadinimu „skaičius“. Tada metodas prideda 5 prie „skaičius“ ir jį grąžina jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į trečiajį metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
    self.__pridėtas= pridėtas&lt;br /&gt;
    return self.__pridėtas * 2.453&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „padaugink“. Jis priima parametrą pavadinimu „pridėtas“. Metodas priskiria priimtą reikšmę objekte esančiam atributui su pavadinimu „pridėtas“ ir grąžina „pridėtas“ atributo ir 2.452 sandaugą jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Ar atkreipei dėmesį į tai, jog kiekvienas metodo pavadinimas prasideda su dviem pabraukimais? Pabandyk tai suprasti.&lt;br /&gt;
Prieš tai buvo minėta, jog objektas, su metodų pagalba, dirba su atributais apibrėžtais jame pačiame. Būtų idealu, jei tuos atributus galėtum pakeisti TIK SU METODAIS ESANČIAIS PAČIAME OBJEKTE. Įmanoma turėti iššorinį kodą, kuris galėtų manipuliuoti tais pačiais atributais. Norint „paslėpti“ atributus, taip, kad juos matytų metodai aprašyti pačiame objekte, turi naudoti du pabraukimus prieš objekto pavadinimą, taip kaip ir buvo rodyta. Ištrynus abu pabraukimus nuo atributo pavadinimo tu juo galėsi manipuliuoti kodu, kuris yra parašytas objekto išorėje.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėki į programą, kuri naudoja aptartą klasę.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į pirmą eilutę, kuri nėra komentaras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši kodo eilutė importuoją klasę, kurią išsaugojai atskirame faile (modulyje). Klasės nebūtinai turi būti talpinamos atskiruose failuose, bet tai yra priimta kaip gera praktika, tad yra verta jau nuo pat pradžių priprasti prie modulių importavimo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši eilutė sukuria SkKeitimas pavadinimu, „ooppavyzdys“ modulyje patalpintos klasės instanciją/egzempliorių, kuri yra priskiriama „matkė“ kintamajam.&lt;br /&gt;
Sintaksė atrodo taip:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;i&amp;gt;moduliopavadinimas.Klasėspavadinimas()&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Apibrėžk main funkciją.&lt;br /&gt;
Pasiimk skaičių iš vartotojo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;pridėtas = matkė.pridėkpenkis(sk)&amp;lt;/code&amp;gt; nusiunčia „sk“ kintamojo reikšmę metodui pavadinimu „pridėkpenkis“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojai kintamajame pavadinimu „matkė“. „pridėkpenkis“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „pridėtas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;daug = matkė.daugink(pridėtas)&amp;lt;/code&amp;gt; nusiunčia „pridėtas“ kintamojo reikšmę metodui pavadinimu „daugink“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojome kintamajame pavadinimu „matkė“. „daugink“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „daug“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė atspausdina „Galutinis rezultatas yra &amp;lt;daug reikšmė&amp;gt;“. Paskutinė eilutė iškviečia main funkciją, kuri įvykdo žingsnius nurodytus viršuje.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Rekursija|next=Įvadas į importuotas bibliotekas ir kitas funkcijas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3565</id>
		<title>Python Vadovėlis/Įvadas į objektinį programavimą Python 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/%C4%AEvadas_%C4%AF_objektin%C4%AF_programavim%C4%85_Python_3&amp;diff=3565"/>
		<updated>2021-11-23T17:14:17Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Objektinis programavimas==&lt;br /&gt;
&lt;br /&gt;
Iki šiol rašei kodą pagal procedūrinio programavimo taisykles. Tačiau, yra daug programų, kurios - parašytos pagal objektinio programavimo taisykles. Žinoti abu programavimo tipus ir jų skirtumus yra labai svarbu. Informatikoje, daug svarbių kalbų kaip C++ ar Java dažnai naudoja objektinio programavimo taisykles.&lt;br /&gt;
&lt;br /&gt;
Pradedantiesiems ir mokiniams, neturintiems programavimo žinių, objektinis programavimas dažnai gali atrodyti painus ir tai yra visiškai normalu. Nesijausk blogai, jei nesiseka suprasti iš pat pradžių. Jei šis skyrius nepadės tau suprasti, yra ir daugiau informatyvių šaltinių, kurie padės atsakyti į visus klausimus.&lt;br /&gt;
&lt;br /&gt;
Šis skyrius yra padalintas į keletą pamokų. Kiekviena pamoka - skirta paaiškinti skirtingas objektinio programavimo dalis. &amp;lt;b&amp;gt;LABAI SVARBU&amp;lt;/b&amp;gt; suprasti jas visas. Nepamiršk prieš kiekvieną pamoką perskaityti įžangą, kuri paaiškins pagrindines idėjas, sąvokas ir kitas objektinio programavimo sritis.&lt;br /&gt;
&lt;br /&gt;
==Įžanga==&lt;br /&gt;
&lt;br /&gt;
Galvok apie procedūrą kaip apie funkciją. Funkcija turi konkrečią paskyrtį ir jų gali būti įvairių: rinkti įvestis, atlikti matematinius skaičiavimus, atvaizduoti ar manipuliuoti duomenis. Paprastai, procedūros manipuliuoja duomenis, kurie yra aprašyti atskirai. Šie duomenys yra dažnai perduodami iš vienos procedūros į kitą. Ir kai programa pasidaro per didelė, tai padaro duomenų perdavimą komplikuotą.&lt;br /&gt;
Pavyzdžiui, parašei programą, kuri kintamuosiuose išsaugo produkto duomenis. Kai klientas paprašo informacijos apie produktą, kintamieji, kurie turi visą informaciją, yra perduodami įvairioms funkcijoms su skirtingomis paskirtimis. Laikui bėgant ir saugant vis daugiau duomenų apie turimus produktus, tu sugalvoji išsaugoti turimą informaciją sąrašuose ar žodynuose. Norint, jog tavo programa veiktų, tu dabar turi redaguoti kiekvieną funkciją, kuri naudojo tuos kintamuosius, taip, kad dabar ji galėtų priimti ir manipuliuoti sąrašus ar žodynus. Įsivaizduok kiek laiko tau reikėtų norint peržiūrėti ir pakeisti šimtus failų. Tu išprotėtum! Nekalbant apie tai, jog klaidas daro net ir labiausiai patyrę programuotojai, tad taip pat reikėtų taisyti begalę klaidų. Toks programavimas yra pernelyg neoptimalus.&lt;br /&gt;
Procedūrinis programavimas yra paremtas procedūromis (funkcijomis). Objektinis programavimas yra paremtas objektais. Ar prisimeni, kaip procedūrinė programa atskyrė duomenis nuo kodo? Ar prisimeni programą, kuri turėjo šimtus failų ir norint kažką pakeisti reikėdavo ilgai joje narpstytis? &lt;br /&gt;
Galvok apie &amp;lt;i&amp;gt;objektą&amp;lt;/i&amp;gt; kaip apie minėtų failų ir duomenų „kombinaciją“ į vieną esybę. Technine prasme, objektas yra esybė, kuri savyje turi duomenis ir procedūras (kodą, funkcijas, t.t.).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Duomenis objekto viduje vadiname &amp;lt;i&amp;gt;atributais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Funkcijas ar procedūras objekto viduje vadiname &amp;lt;i&amp;gt;metodais&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;duomenų atributus&amp;lt;/b&amp;gt; kaip apie kintamuosius. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Galvok apie &amp;lt;b&amp;gt;metodus&amp;lt;/b&amp;gt; kaip apie funkcijas ar procedūras. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į paprastą, kasdienį pavyzdį. Lemputė ir jungiklis tavo kambaryje.&lt;br /&gt;
Atributai bus štai tokie.&lt;br /&gt;
&lt;br /&gt;
* šviesa_įjungta (True False)&lt;br /&gt;
* jungiklio_pozicija (Viršuje arba Apačioje)&lt;br /&gt;
* elektros_tekėjimas (True arba False)&lt;br /&gt;
&lt;br /&gt;
Metodai būtų štai tokie.&lt;br /&gt;
&lt;br /&gt;
* pakeisti_jungiklio_poziciją&lt;br /&gt;
* pakeisti_elektros_tekėjimą&lt;br /&gt;
&lt;br /&gt;
Atributai gali būti matomi ir nematomi. Pavyzdžiui, tu negali matyti elektros tekančios į lemputę. Tu tik žinai, kad elektra išties teka, nes ji tuo metu skleidžia šviesą. Nepaisant to, tu gali matyti jungiklio poziciją (jungiklio_pozicija) ir taip pat tu matai ar šviesa yra įjungta ar ne (šviesa_įjungta). Kai kurie metodai yra &amp;lt;i&amp;gt;privatūs&amp;lt;/i&amp;gt;. Tai reiškia, jog jų neišeina tiesiogiai pakeisti. Pavyzdžiui, nebent būtų nukerpami laidai (to nedaryk ir dėl šio pavyzdžio; manyk, jog laidai neegzistuoja), tu negalėtum pakeisti elektros tėkmės tiesiogiai. Tu taip pat negali tiesiogiai įtakoti lemputės šviesos (ne, tu negali atsukti lemputės ar jos sudaužyti!). Bet tu visada gali šiuos atributus įtakoti netiesiogiai naudojant objekto &amp;lt;i&amp;gt;metodus&amp;lt;/i&amp;gt;. Jeigu nesumokėsi mokesčių, metodas pavadinimu &amp;lt;code&amp;gt;pakeisti_elektros_tekėjimą&amp;lt;/code&amp;gt; pakeis &amp;lt;code&amp;gt;elektros_tekėjimas&amp;lt;/code&amp;gt; reikšmę į FALSE. Jei tu įjungsi jungiklį, &amp;lt;code&amp;gt;pakeisti_jungiklio_poziciją&amp;lt;/code&amp;gt; metodas pakeis &amp;lt;code&amp;gt;šviesa_įjungta&amp;lt;/code&amp;gt; atributo reikšmę.&lt;br /&gt;
&lt;br /&gt;
Dabar jau tikriausiai galvoji, „Ką tai turi bendro su Piton'u?“ ar, „Aš nesuprantu, bet kaip man sukurti tą objektą?“. Na, beveik priėjai prie atsakymų! Tik turiu paaiškinti dar vieną dalyką prieš neriant į kodą.&lt;br /&gt;
&lt;br /&gt;
Piton'e objekto atributai ir metodai yra nurodomi &amp;lt;b&amp;gt;klasės&amp;lt;/b&amp;gt;. Galvok apie klasę kaip apie objekto techninį piešinį. Pavyzdžiui, tavo namai - objektas kuriame gyveni - taip pat jį gali vadinti butu, vasarnamiu, prakartėle ar bet kuo kitu, buvo pastatytas naudojant techinius piešinius. Šie techniniai piešiniai būtų vadinami klasėmis, kurios buvo panaudotos projektuojant tavo namus, butą, vasarnamį, na, supranti apie ką kalbu. &lt;br /&gt;
&lt;br /&gt;
Dar kartą, klasė pasako, kaip sukurti objektą. Techniniais terminais tariant, ir tai yra labai svarbu, klasė nusako naudojamus duomenų atributus ir metodus objekte.&lt;br /&gt;
&lt;br /&gt;
Norint sukurti klasę, mes suprogramuojame &amp;lt;i&amp;gt;klasės apibrėžimą&amp;lt;/i&amp;gt;. Klasės apibrėžimas, tai grupė pareiškimų, kurie nusako objekto atributus ir metodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Pirma pamoka&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apačioje yra procedūrinė programa, kuri atlieka paprastą matematinį veiksmą su vartotojo įvestu skaičiu.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
&lt;br /&gt;
# Procedūra 1&lt;br /&gt;
def main():&lt;br /&gt;
    try:&lt;br /&gt;
        # Pasiimk skaičių, kurį manipuliuosi.&lt;br /&gt;
        num = float(input(&amp;quot;Įrašykite skaičių.\n&amp;quot;))&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su pasiimtu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 2&lt;br /&gt;
        addednum = addfive(num)&lt;br /&gt;
        # Išsaugok naują skaičių į kintamąjį. Prieš tai, su ankščiau išsaugotu skaičiu atlik matematinius veiksmus naudojant&lt;br /&gt;
        # procedūrą 3&lt;br /&gt;
        multipliednum = multiply(addednum)&lt;br /&gt;
        # Paduok skaičių procedūrai 4&lt;br /&gt;
        display(multipliednum)&lt;br /&gt;
    # Susidorok su išimtimis, kurios gali atsirasti dėl netinkamo vartotojo skaičiaus įvedimo&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Privalai įvesti tinkamą skaičių.\n&amp;quot;)&lt;br /&gt;
        # Atstatyk kintamojo num reikšmę, kad ištrintum netinkamą vartotojo įvestį.&lt;br /&gt;
        num = 0&lt;br /&gt;
        # Dar kartą iškviesk main.&lt;br /&gt;
        main()&lt;br /&gt;
&lt;br /&gt;
# Procedūra 2&lt;br /&gt;
def addfive(num):&lt;br /&gt;
    return num + 5&lt;br /&gt;
&lt;br /&gt;
# Procedūra 3&lt;br /&gt;
def multiply(addednum):&lt;br /&gt;
    return addednum * 2.452&lt;br /&gt;
&lt;br /&gt;
# Procedūra 4&lt;br /&gt;
def display(multi):&lt;br /&gt;
    # Parodyk galutinį rezultatą.&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, multi)&lt;br /&gt;
&lt;br /&gt;
# Kviesk procedūrą 1&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi skaitemnį &amp;quot;5&amp;quot;, gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 5&lt;br /&gt;
 Galutinis rezultatas yra 24.52&lt;br /&gt;
&lt;br /&gt;
Jei įrašysi reikšmę &amp;quot;g&amp;quot;, tada pasitaisysi ir įrašysi skaitmenį &amp;quot;8&amp;quot;, tada gausi išvestį parodytą žemiau.&lt;br /&gt;
&lt;br /&gt;
 Įrašykite skaičių.&lt;br /&gt;
 g&lt;br /&gt;
 Privalai įvesti tinkamą skaičių.&lt;br /&gt;
 &lt;br /&gt;
 Įrašyk skaičių.&lt;br /&gt;
 8&lt;br /&gt;
 Galutinis rezultatas yra 31.875999999999998&lt;br /&gt;
&lt;br /&gt;
Žemiau matome klasę ir programą, kuri naudoją nurodytą klasę. Ši objektinio programavimo programavimo būdu parašyta programa daro tą patį, ką prieš tai darė procedūriniu programavimo būdu parašyta programa. Apžiūrėk keletą svarbių objektinio programavimo būdo konceptų prieš neriant į ankščiau minėtą klasę ir programą.&lt;br /&gt;
Norint sukurti klasę, naudok &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; raktažodį. Po raktažodžio rašyk pavadinimą, kurį norėtum, jog turėtų klasė. Dažnai naudojama praktika kuriant klasių pavadinimus yra &amp;lt;i&amp;gt;NaujųŽodžiųRašymasIšDidžiosiosRaidės&amp;lt;/i&amp;gt;.&lt;br /&gt;
Jei norėčiau sukurti klasę pavadinimu purvinoskojinės, kodas atrodytų taip:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class PurvinosKojinės&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Iš pradžių pažiūrėk į klasę. Programa, kuri naudos šią klasę, bus parodyta paskui.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Failo pavadinimas: ooppavyzdys.py&lt;br /&gt;
# Programa parašyta Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Klasė&lt;br /&gt;
&lt;br /&gt;
class SkKeitimas:&lt;br /&gt;
&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        self.__skaičius = 0&lt;br /&gt;
&lt;br /&gt;
    def pridėkpenkis(self,sk):&lt;br /&gt;
        self.__skaičius = sk&lt;br /&gt;
        return self.__skaičius + 5&lt;br /&gt;
&lt;br /&gt;
    def padaugink(self,pridėtas):&lt;br /&gt;
        self.__pridėtas = pridėtas&lt;br /&gt;
        return self.__pridėtas * 2.452&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programa, kuri naudoja viršuje esančią klasę yra parašyta žemiau.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Filename: ooppavyzdys.py&lt;br /&gt;
# Mitchell Aikens&lt;br /&gt;
# Nėra autoriaus teisių&lt;br /&gt;
# 2012&lt;br /&gt;
# OOP Demonstracija - Programa&lt;br /&gt;
&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&lt;br /&gt;
maths = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    num = float(input(&amp;quot;Įrašyk skaičių.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    pridėt = maths.pridėkpenkis(num)&lt;br /&gt;
&lt;br /&gt;
    daug = maths.padaugink(pridėtas)&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Galutinis rezultatas yra &amp;quot;, daug )&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tikriausiai dabar esi pasimetęs. Tai visiškai suprantama. Iš pradžių, pasistenk suprasti klasę.&lt;br /&gt;
Klasė yra pavadinta &amp;quot;SkKeitimas&amp;quot;&lt;br /&gt;
Ši klasė turi tris metodus&lt;br /&gt;
* __init__&lt;br /&gt;
* pridėkpenkis&lt;br /&gt;
* padaugink&lt;br /&gt;
&lt;br /&gt;
Šie trys metodai savyje turi labai panašų kodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atkreipkite dėmesį į tai, jog kiekvienas metodas turi parametrą pavadinimu „self“. Kiekvienas klasės metodas turi būtinai turėti šį parametrą. Šis parametras nebūtinai turi būti su pavadinimu „self“, bet tai yra priimta kaip geriausia praktika, tad tikriausiai ir tu turėtum jį taip vadinti. Šis parametras yra reikalingas kiekviename metode nes, kai jis yra iškviečiamas, jis turi žinoti, su kuriuo objekto atributu turėtų atlikti operacijas. Net kai turi tik vieną objektą, turi pasirūpinti, kad programa žinotų, jog nori naudoti atributus aprašytus būtent toje klasėje. Todėl turi būti saugus ir naudoti „self“ parametrą.&lt;br /&gt;
&lt;br /&gt;
Peržiūrėk pirmą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dauguma Piton'o klasių turi &amp;lt;code&amp;gt;__init__&amp;lt;/code&amp;gt;, kuris yra paleidžiamas automatiškai kiekvieną kartą, kai atmintyje yra sukuriama tos klasės instancija/egzempliorius (Kai sukuriame nuorodą į klasę, yra sukuriama tos klasės &amp;lt;i&amp;gt;instancija&amp;lt;/i&amp;gt; [objektas]). Šis metodas yra paprastai vadinamas &amp;lt;i&amp;gt;inicijavimo metodu&amp;lt;/i&amp;gt;. Kai šis metodas yra paleidžiamas, „self“ parametras yra automatiškai priskiriamas tariamam objektui. __init__ metodas inicijuoja klasės atributus, dėl šios priežasties jis yra pavadintas inicijavimo metodu. Po __init__ metodu, iš pradžių &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; atributui mes priskiriame 0.&lt;br /&gt;
Yra sukuriama nuorodą į turimo objekto atributą panaudojant taškinį žymėjimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def __init__(self):&lt;br /&gt;
    self.__skaičius = 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kodas &amp;lt;code&amp;gt;self.__skaičius = 0&amp;lt;/code&amp;gt; reiškia, jog objekte esančio „skaičius“ atributo reikšmė yra 0.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į kitą metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pridėkpenkis(self,sk):&lt;br /&gt;
    self.__skaičius = sk&lt;br /&gt;
    return self.__skaičius + 5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „pridėkpenkis“. Jis priima parametrą pavadinimu „sk“. Metode esanti logika tada priskiria „sk“ reikšmę objekte esančiui atributui su pavadinimu „skaičius“. Tada metodas prideda 5 prie „skaičius“ ir jį grąžina jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į trečiajį metodą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def padaugink(self,pridėtas):&lt;br /&gt;
    self.__pridėtas= pridėtas&lt;br /&gt;
    return self.__pridėtas * 2.453&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Šis metodas yra pavadintas „padaugink“. Jis priima parametrą pavadinimu „pridėtas“. Metodas priskiria priimtą reikšmę objekte esančiam atributui su pavadinimu „pridėtas“ ir grąžina „pridėtas“ atributo ir 2.452 sandaugą jį kviečiančiam.&lt;br /&gt;
&lt;br /&gt;
Ar atkreipei dėmesį į tai, jog kiekvienas metodo pavadinimas prasideda su dviem pabraukimais? Pabandyk tai suprasti.&lt;br /&gt;
Prieš tai buvo minėta, jog objektas, su metodų pagalba, dirba su atributais apibrėžtais jame pačiame. Būtų idealu, jei tuos atributus galėtum pakeisti TIK SU METODAIS ESANČIAIS PAČIAME OBJEKTE. Įmanoma turėti iššorinį kodą, kuris galėtų manipuliuoti tais pačiais atributais. Norint „paslėpti“ atributus, taip, kad juos matytų metodai aprašyti pačiame objekte, turi naudoti du pabraukimus prieš objekto pavadinimą, taip kaip ir buvo rodyta. Ištrynus abu pabraukimus nuo atributo pavadinimo tu juo galėsi manipuliuoti kodu, kuris yra parašytas objekto išorėje.&lt;br /&gt;
&lt;br /&gt;
Pažiūrėki į programą, kuri naudoja aptartą klasę.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį į pirmą eilutę, kuri nėra komentaras.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ooppavyzdys&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši kodo eilutė importuoją klasę, kurią išsaugojai atskirame faile (modulyje). Klasės nebūtinai turi būti talpinamos atskiruose failuose, bet tai yra priimta kaip gera praktika, tad yra verta jau nuo pat pradžių priprasti prie modulių importavimo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
matkė = ooppavyzdys.SkKeitimas()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši eilutė sukuria SkKeitimas pavadinimu, „ooppavyzdys“ modulyje patalpintos klasės instanciją/egzempliorių, kuri yra priskiriama „matkė“ kintamajam.&lt;br /&gt;
Sintaksė atrodo taip:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;i&amp;gt;moduliopavadinimas.Klasėspavadinimas()&amp;lt;/i&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Apibrėžk main funkciją.&lt;br /&gt;
Pasiimk skaičių iš vartotojo.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;pridėtas = matkė.pridėkpenkis(sk)&amp;lt;/code&amp;gt; nusiunčia „sk“ kintamojo reikšmę metodui pavadinimu „pridėkpenkis“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojai kintamajame pavadinimu „matkė“. „pridėkpenkis“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „pridėtas“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė &amp;lt;code&amp;gt;daug = matkė.daugink(pridėtas)&amp;lt;/code&amp;gt; nusiunčia „pridėtas“ kintamojo reikšmę metodui pavadinimu „daugink“. Metodas yra aprašytas klasėje, kurios instanciją išsaugojome kintamajame pavadinimu „matkė“. „daugink“ metodas išsaugo gautą reikšmę į kintamajį pavadinimu „daug“.&lt;br /&gt;
&lt;br /&gt;
Kita eilutė atspausdina „Galutinis rezultatas yra &amp;lt;daug reikšmė&amp;gt;“. Paskutinė eilutė iškviečia main funkciją, kuri įvykdo žingsnius nurodytus viršuje.&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Rekursija|next=Įvadas į importuotas bibliotekas ir kitas funkcijas}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Labas,_Pasauli&amp;diff=3564</id>
		<title>Python Vadovėlis/Labas, Pasauli</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Labas,_Pasauli&amp;diff=3564"/>
		<updated>2021-11-23T16:25:31Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Now for our first lesson, what is a computer program?  A computer program is a set of very detailed instructions that tell a computer what to do.   --&amp;gt;&lt;br /&gt;
=== Ką sužinosi? ===&lt;br /&gt;
Perskaitęs šį skyrių, turėtum suprasti, kaip redaguoti programas teksto redaktoriuje arba kitaip vadinamam „IDLE“ kodo redaktoriuje, kaip programas išsaugoti kompiuterio atmintyje ir paprastai paleisti.&lt;br /&gt;
&lt;br /&gt;
=== Spausdinimas ===&lt;br /&gt;
Istoriškai taip susiklostė, kad programavimo pamokos dažniausiai prasideda nuo mažos ir paprastos programos pavadinimu „Hello, World!“ arba lietuviškai [[„Labas, Pasauli!“]].&lt;br /&gt;
&lt;br /&gt;
Python'as programavimo kalboje programa atrodytų taip: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Labas, Pasauli!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeigu naudoji paprastą kompiuterio tekstinį failą (.txt) programai rašyti - išsaugok šį failą ir pervadink, kad jis būtų &amp;lt;code&amp;gt;hello.py&amp;lt;/code&amp;gt; ir kodo redaktoriuje paleisk programą parašęs eilutę &amp;lt;code&amp;gt;python3 hello.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kitu atveju eik į „IDLE“ kodo redaktorių, sukurk naują langą ir tada sukurk programą, kaip aprašyta skyriuje [[Non-Programmer's Tutorial for Python 3/Intro#Creating_and_Running_Programs|Programų kūrimas ir paleidimas]].&lt;br /&gt;
&lt;br /&gt;
Kai paleisi šią programą, tuomet ji suveiks ir užrašys:&lt;br /&gt;
&lt;br /&gt;
 Labas, Pasauli!&lt;br /&gt;
&lt;br /&gt;
Įsidėmėk, kad rekomenduojame visus mūsų pateikiamus programos pavyzdžius pasibandyti pačiam - užrašyk ir tada pasileisk programą. Pagal mūsų turimą praktiką, toks mokymosi procesas yra pats efektyviausias ir geriausiai pasiteisinantis.&lt;br /&gt;
&lt;br /&gt;
Na, o dabar keliaukime prie kiek sudėtingesnės programos pavyzdžio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Benas ir Liepa pakilo į kalną&amp;quot;)&lt;br /&gt;
print(&amp;quot;Kad atneštų indą pilną vandens.&amp;quot;)&lt;br /&gt;
print(&amp;quot;Benas nukrito ir sulaužė savo karūną,&amp;quot;)&lt;br /&gt;
print(&amp;quot;O Liepa suklupo iškart.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kai paleidi šią programą, tai ji parašo trumpą istoriją:&lt;br /&gt;
&lt;br /&gt;
 Benas ir Liepa pakilo į kalną&lt;br /&gt;
 Kad atneštų indą pilną vandens.&lt;br /&gt;
 Benas nukrito ir suslaužė savo karūną, &lt;br /&gt;
 O Liepa suklupo iškart.&lt;br /&gt;
&lt;br /&gt;
Kai kompiuteris paleidžia programą, tai pirmiausia jis mato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Benas ir Liepa pakilo į kalną&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Todėl kompiuteris užrašo:&lt;br /&gt;
&lt;br /&gt;
 Benas ir Liepa pakilo į kalną&lt;br /&gt;
&lt;br /&gt;
Tada kompiuteris skaito kitą eilutę ir mato:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Kad atneštų indą pilna vandens.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Todėl ir ją užrašo kompiuterio ekrane:&lt;br /&gt;
&lt;br /&gt;
 Kad atneštų indą pilna vandens.&lt;br /&gt;
&lt;br /&gt;
Taip kompiuteris žiūri į kiekvieną eilutę, o tada įvykdo duotą komandą ir eina toliau: skaito eilutę, įvykdo komandą ir t.t. Taip kompiuteris vykdo visas duotas komandas, kol pasiekia programos pabaigą.&lt;br /&gt;
&lt;br /&gt;
==== Terminologija ====&lt;br /&gt;
Taigi pats laikas truputį paaiškinti, kas vyksta ir trumpai supažindinti su terminologija.&lt;br /&gt;
&lt;br /&gt;
Prieš tai rašydami kodą, mes naudojamės „funkcija“ pavadinimu &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; arba „Angyje“ [[Rašymas|&amp;lt;code&amp;gt;rašyk&amp;lt;/code&amp;gt;.]] Po funkcijos pavadinimo &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; yra skliausteliai &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;, kuriuose nurodome tos funkcijos parametrus/argumentus. Pažiūrėk į pavyzdį:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Labas, Pasauli!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
yra vienas parametras, kuris yra &amp;lt;code&amp;gt;&amp;quot;Labas, Pasauli!&amp;quot;&amp;lt;/code&amp;gt;. Ar pastebėjai, kad šis parametras, sudarytas iš simbolių grupės, kuri įrašyta tarp dviejų kabučių (&amp;quot;&amp;quot;)? Paprastai, tai vadiname „rašytinių simbolių seka“ ar trumpiau tariant „eilute“ (tekstine reikšme). Kitas tekstinės reikšmės pavyzdys yra &amp;lt;code&amp;gt;&amp;quot;Benas ir Liepa pakilo į kalną&amp;quot;&amp;lt;/code&amp;gt;. Na, o funkcijos iškvietimu vadiname eilutę, kurioje yra užrašytas funkcijos pavadinimas ir parametras esantis skliausteliuose.&lt;br /&gt;
&lt;br /&gt;
Funkcija ir jos argumentai yra vieno tipo „teiginys“, kurį galima naudoti Python'o programavimo kalboje. Teiginio pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Labas, Pasauli!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paprasčiau tariant, teiginį gali įsivaizduoti kaip vieną programos eilutę.  &lt;br /&gt;
&lt;br /&gt;
Kol kas terminologijos pakaks, keliaujam į kitą poskyrį ir mokomės toliau.&lt;br /&gt;
&lt;br /&gt;
====\n rašyme====&lt;br /&gt;
&amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;, arba nauja eilutė. Rašant tekstą, visas tekstas po \n yra užrašomas naujoje eilutėje. Taip pat &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt; gali būti naudojamas kaip „pabėgimo simbolis“ (escape character). Pabandyk suprasti šią programą:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Labas, Pasauli!\nKą turėčiau daryti?&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurios rezultatas yra toks:&lt;br /&gt;
&lt;br /&gt;
 Labas, Pasauli! &lt;br /&gt;
 Ką turėčiau daryti?&lt;br /&gt;
&lt;br /&gt;
Taip pat &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt; naudojamas, kai norime tekstą perkelti į kitą eilutę, bet nenorime naudoti kelių &amp;lt;code&amp;gt;print()&amp;lt;/code&amp;gt; komandų.&lt;br /&gt;
&lt;br /&gt;
Be to, spausdinimo teiginys automatiškai naudoja &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;, net jeigu pats &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt; ir neužrašai. Paprasčiau suprasti bus pamačius pavyzdį:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Labas, Pasauli!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
iš tikrųjų yra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Labas, Pasauli!\n&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Išraiškos ===&lt;br /&gt;
Programos pavyzdys:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;2 + 2 yra&amp;quot;, 2 + 2)&lt;br /&gt;
print(&amp;quot;3 * 4 yra&amp;quot;, 3 * 4)&lt;br /&gt;
print(&amp;quot;100 - 1 yra&amp;quot;, 100 - 1)&lt;br /&gt;
print(&amp;quot;(&amp;quot;(33 + 2) / 5 + 11.5 yra&amp;quot;, (33 + 2) / 5 + 11.5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
„Angyje“:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
rašyk(&amp;quot;2 + 2 yra&amp;quot;, 2 + 2)&lt;br /&gt;
rašyk(&amp;quot;3 * 4 yra&amp;quot;, 3 * 4)&lt;br /&gt;
rašyk(&amp;quot;100 - 1 yra&amp;quot;, 100 - 1)&lt;br /&gt;
rašyk(&amp;quot;(33 + 2) / 5 + 11.5 yra&amp;quot;, (33 + 2) / 5 + 11.5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 2 + 2 yra 4&lt;br /&gt;
 3 * 4 yra 12&lt;br /&gt;
 100 - 1 yra 99&lt;br /&gt;
 (33 + 2) / 5 + 11.5 yra 18.5&lt;br /&gt;
&lt;br /&gt;
==== Aritmetinės išraiškos ====&lt;br /&gt;
&lt;br /&gt;
Šiame pavyzdyje, &amp;lt;code&amp;gt;print()&amp;lt;/code&amp;gt;(rašymo) funkcija yra su dvejais argumentais, kurie yra atskirti kableliu. Taigi pirmoje programos eilutėje&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;2 + 2 yra&amp;quot;, 2 + 2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pirmas argumentas yra teksto eilutė &amp;lt;code&amp;gt;&amp;quot;2 + 2 yra&amp;quot;&amp;lt;/code&amp;gt; ir antras argumentas yra aritmetinė išraiška &amp;lt;code&amp;gt;2 + 2&amp;lt;/code&amp;gt;, tiksliau tariant viena iš aritmetinių išraiškų.&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad eilutė, kuri yra užrašyta kabutėse yra atspausdinama kaip tekstas, o išraiška užrašyta be kabučių yra apskaičiuojama ir užrašomas atsakymas.&lt;br /&gt;
&lt;br /&gt;
Python'o programavimo kalba turi septynias pagrindines skaičių operacijas.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Operacija &lt;br /&gt;
! Simbolis &lt;br /&gt;
! Pavyzdys&lt;br /&gt;
|-&lt;br /&gt;
|Kėlimas laipsniu (exponentiation)&lt;br /&gt;
| &amp;lt;code&amp;gt;**&amp;lt;/code&amp;gt; &lt;br /&gt;
| &amp;lt;code&amp;gt;5 ** 2 == 25&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Daugyba &lt;br /&gt;
| &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;2 * 3 == 6&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Dalyba &lt;br /&gt;
| &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; &lt;br /&gt;
| &amp;lt;code&amp;gt;14 / 3 == 4.666666666666667&amp;lt;/code&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
|Sveikųjų skaičių dalyba&lt;br /&gt;
| &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;14 // 3 == 4&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Liekana (modulis)&lt;br /&gt;
| &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; &lt;br /&gt;
| &amp;lt;code&amp;gt;14 % 3 == 2&amp;lt;/code&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
|Sudėtis&lt;br /&gt;
| &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &lt;br /&gt;
| &amp;lt;code&amp;gt;1 + 2 == 3&amp;lt;/code&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
|Atimtis &lt;br /&gt;
| &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; &lt;br /&gt;
| &amp;lt;code&amp;gt;4 - 3 == 1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad yra du dalybos būdai: vienas grąžina pasikartojantį dešimtainį skaičių, o kitas - liekaną ir visą skaičių.&lt;br /&gt;
Operacijų tvarka tokia pati kaip matematikoje:&lt;br /&gt;
* skliausteliuose &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;&lt;br /&gt;
* rodikliai &amp;lt;code&amp;gt;**&amp;lt;/code&amp;gt;&lt;br /&gt;
* daugyba &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, dalyba&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;, sveikųjų skaičių dalyba &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt;, dalyba su liekana &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; &lt;br /&gt;
* sudėtis &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; ir atimtis &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taigi naudok skliaustelius užrašydamas formules.&lt;br /&gt;
&lt;br /&gt;
=== Komentarai ===&lt;br /&gt;
&lt;br /&gt;
Rašant daug kodo, ateityje tikrai ne viską atsiminsite. Todėl programoje galime naudoti komentarus, kurie gali būti naudojami kaip pastabos/paaiškinimai jums arba kitiems programuotojams. Pavyzdžiui:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Skaičiaus PI išraiška kompiuterio ekrane&lt;br /&gt;
print(22 / 7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas: &lt;br /&gt;
&lt;br /&gt;
 3.14285714286&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad komentaras prasideda grotelių ženklu: &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;. Komentarai yra naudojami ateičiai arba kitiems žmonėms, kurie skaito programą. &lt;br /&gt;
&lt;br /&gt;
Taip pat svarbu suprasti, kad po &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; galima naudoti bet kokius ženklus ir kompiuteris šio teksto nepaisys tol, kol atsiras tekstas naujos eilutės pradžioje.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang = &amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Skaičiaus PI išraiška kompiuterio ekrane&lt;br /&gt;
print(22/7) # Jeigu būtume preciziškai tikslūs, tai čia gauname tik apytikslią PI reikšmę&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
Kiekvieno skyriaus gale bus pateikiami su skyriaus tema susiję pavyzdžiai. Turėtum juos peržvelgti ir išsiaiškinti ar supratai. Taip pat juos gali įsikelti į python kodo redaktorių ir pažiūrėti kaip viekia. Jeigu suprasi, keliauk toliau, jeigu ne, bandyk dar kartą perskaityti skyriaus medžiagą ir suprasti pavyzdžių logiką.&lt;br /&gt;
&lt;br /&gt;
'''Danija.py'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Būti ar nebūti, štai kur klausimas.&amp;quot;)&lt;br /&gt;
print(&amp;quot;                -- Šekspyras&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Būti ar nebūti, štai kur klausimas.&lt;br /&gt;
                 -- Šekspyras&lt;br /&gt;
&lt;br /&gt;
'''Mokykla.py'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Pirmoji klasė&amp;quot;)&lt;br /&gt;
print(&amp;quot;1 + 1 =&amp;quot;, 1 + 1)&lt;br /&gt;
print(&amp;quot;2 + 4 =&amp;quot;, 2 + 4)&lt;br /&gt;
print(&amp;quot;5 - 2 =&amp;quot;, 5 - 2)&lt;br /&gt;
print()&lt;br /&gt;
print(&amp;quot;Trečioji klasė&amp;quot;)&lt;br /&gt;
print(&amp;quot;243 - 23 =&amp;quot;, 243 - 23)&lt;br /&gt;
print(&amp;quot;12 * 4 =&amp;quot;, 12 * 4)&lt;br /&gt;
print(&amp;quot;12 / 3 =&amp;quot;, 12 / 3)&lt;br /&gt;
print(&amp;quot;13 / 3 =&amp;quot;, 13 // 3, &amp;quot;R&amp;quot;, 13 % 3)&lt;br /&gt;
print()&lt;br /&gt;
print(&amp;quot;Vidurinė)&lt;br /&gt;
print(&amp;quot;123.56 - 62.12 =&amp;quot;, 123.56 - 62.12)&lt;br /&gt;
print(&amp;quot;(4 + 3) * 2 =&amp;quot;, (4 + 3) * 2)&lt;br /&gt;
print(&amp;quot;4 + 3 * 2 =&amp;quot;, 4 + 3 * 2)&lt;br /&gt;
print(&amp;quot;3 ** 2 =&amp;quot;, 3 ** 2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Pirma klasė&lt;br /&gt;
 1 + 1 = 2&lt;br /&gt;
 2 + 4 = 6&lt;br /&gt;
 5 - 2 = 3&lt;br /&gt;
 &lt;br /&gt;
 Trečia klasė&lt;br /&gt;
 243 - 23 = 220&lt;br /&gt;
 12 * 4 = 48&lt;br /&gt;
 12 / 3 = 4&lt;br /&gt;
 13 / 3 = 4 R 1&lt;br /&gt;
 &lt;br /&gt;
 Vidurinė&lt;br /&gt;
 123.56 - 62.12 = 61.44&lt;br /&gt;
 (4 + 3) * 2 = 14&lt;br /&gt;
 4 + 3 * 2 = 10&lt;br /&gt;
 3 ** 2 = 9&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
&lt;br /&gt;
# Parašyk programą, kuri atspausdintų tavo vardą ir gimimo datą atskirose eilutėse&lt;br /&gt;
# Parašyk programą, kuri parodytų visų 7 [[#Arithmetic_expressions|artimetinių operacijų]] panaudojimą.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&lt;br /&gt;
1. Parašyk programą, kuri atspausdintų tavo vardą ir gimimo datą atskirose eilutėse&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Ada Lovelace&amp;quot;, &amp;quot;gimusi&amp;quot;, &amp;quot;lapkričio 27, 1852&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Albertas Einšteinas&amp;quot;, &amp;quot;gimęs&amp;quot;, &amp;quot;14 kovo 1879&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print((&amp;quot;Jonas Smitas&amp;quot;), (&amp;quot;gimęs&amp;quot;), (&amp;quot;14 kovo 1879&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
2. Parašyk programą, kuri parodytų visų 7 [[#Arithmetic_expressions|artimetinių operacijų]] panaudojimą.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;5**5 = &amp;quot;, 5**5)&lt;br /&gt;
print(&amp;quot;6*7 = &amp;quot;, 6*7)&lt;br /&gt;
print(&amp;quot;56/8 = &amp;quot;, 56/8)&lt;br /&gt;
print(&amp;quot;14//6 = &amp;quot;, 14//6)&lt;br /&gt;
print(&amp;quot;14%6 = &amp;quot;, 14%6)&lt;br /&gt;
print(&amp;quot;5+6 = &amp;quot;, 5+6)&lt;br /&gt;
print(&amp;quot;9-0 = &amp;quot;, 9-0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==== Išnašos====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Intro |next=Who Goes There?}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3563</id>
		<title>Python Vadovėlis/Terminai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3563"/>
		<updated>2021-11-23T16:03:23Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Computer - kompiuteris &lt;br /&gt;
&lt;br /&gt;
Container - konteineris&lt;br /&gt;
&lt;br /&gt;
Control strukture - valdymo struktūra&lt;br /&gt;
&lt;br /&gt;
Counter - skaitliukas &lt;br /&gt;
&lt;br /&gt;
Debugging - derinimas&lt;br /&gt;
&lt;br /&gt;
Directory - katalogas&lt;br /&gt;
&lt;br /&gt;
Exercise - pratimas&lt;br /&gt;
&lt;br /&gt;
Expression - reiškinys&lt;br /&gt;
&lt;br /&gt;
False - klaidinga&lt;br /&gt;
&lt;br /&gt;
Feature - ypatybė&lt;br /&gt;
&lt;br /&gt;
Floating point - slankusis kablelis&lt;br /&gt;
&lt;br /&gt;
Hard-coded - įkoduotas/užprogramuotas&lt;br /&gt;
&lt;br /&gt;
IDLE - „IDLE“ kodo redaktorius/kodo redaktorius&lt;br /&gt;
&lt;br /&gt;
Indent - įtrauka&lt;br /&gt;
&lt;br /&gt;
Item - elementas&lt;br /&gt;
&lt;br /&gt;
Iterable - iteruojamasis&lt;br /&gt;
&lt;br /&gt;
List - sąrašas&lt;br /&gt;
&lt;br /&gt;
Loop - ciklas&lt;br /&gt;
&lt;br /&gt;
Mouse - pelė&lt;br /&gt;
&lt;br /&gt;
Operator - operatorius&lt;br /&gt;
&lt;br /&gt;
Optional - pasirinktinas&lt;br /&gt;
&lt;br /&gt;
Output - išvestis/rezultatas&lt;br /&gt;
&lt;br /&gt;
Prepackaged - iš anksto paruošti paketai&lt;br /&gt;
&lt;br /&gt;
Prompt - kviesti&lt;br /&gt;
&lt;br /&gt;
Python - Python'as&lt;br /&gt;
&lt;br /&gt;
Run (daikt.) - vykdymas &lt;br /&gt;
&lt;br /&gt;
Shell - terminalas/kosolės langas&lt;br /&gt;
&lt;br /&gt;
Site-packages - svetainės paketai&lt;br /&gt;
&lt;br /&gt;
Solution - sprendimas&lt;br /&gt;
&lt;br /&gt;
Source code - pirminis programos tekstas&lt;br /&gt;
&lt;br /&gt;
Statement - sakinys&lt;br /&gt;
&lt;br /&gt;
String - eilutė&lt;br /&gt;
&lt;br /&gt;
Terminate - nutraukti darbą/stabdyti programą&lt;br /&gt;
&lt;br /&gt;
True - teisinga&lt;br /&gt;
&lt;br /&gt;
User - naudotojas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=FAQ |next=END}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/S%C4%85ra%C5%A1ai&amp;diff=3561</id>
		<title>Python Vadovėlis/Sąrašai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/S%C4%85ra%C5%A1ai&amp;diff=3561"/>
		<updated>2021-11-17T18:38:19Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Kintamieji, turintys daugiau nei vieną reikšmę ===&lt;br /&gt;
Tu jau žinai įprastus kintamuosius, kuriuose saugoma viena reikšmė. Tačiau kiti kintamųjų tipai gali turėti daugiau nei vieną reikšmę. Jie vadinami konteineriais (containers), nes juose gali būti daugiau nei vienas objektas. Paprasčiausias tipas vadinamas sąrašu (list). Sąrašo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
kuris = int(input(&amp;quot;Kuris mėnuo (1-12)? &amp;quot;))&lt;br /&gt;
mėnesiai = [&amp;quot;Sausis&amp;quot;, &amp;quot;Vasaris&amp;quot;, &amp;quot;Kovas&amp;quot;, &amp;quot;Balandis&amp;quot;, &amp;quot;Gegužė&amp;quot;, &amp;quot;Birželis&amp;quot;, &amp;quot;Liepa&amp;quot;,&lt;br /&gt;
          &amp;quot;Rugpjūtis&amp;quot;, &amp;quot;Rugsėjis&amp;quot;, &amp;quot;Spalis&amp;quot;, &amp;quot;Lapkritis&amp;quot;, &amp;quot;Gruodis&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
if 1 &amp;lt;= kuris &amp;lt;= 12:&lt;br /&gt;
    print(&amp;quot;Mėnuo yra &amp;quot;, mėnesiai[kuris - 1])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pavyzdžio išvestis būtų:&lt;br /&gt;
&lt;br /&gt;
 Kuris mėnuo (1-12)? '''3'''&lt;br /&gt;
 Mėnuo yra Kovas&lt;br /&gt;
&lt;br /&gt;
Šiame pavyzdyje &amp;lt;code&amp;gt;mėnesiai&amp;lt;/code&amp;gt; yra sąrašas. Kintamasis &amp;lt;code&amp;gt;mėnesiai&amp;lt;/code&amp;gt; yra apibrėžtas šiomis eilutėmis &amp;lt;code&amp;gt;mėnesiai = [&amp;quot;Sausis&amp;quot;, &amp;quot;Vasaris&amp;quot;, &amp;quot;Kovas&amp;quot;, &amp;quot;Balandis&amp;quot;, &amp;quot;Gegužė&amp;quot;, &amp;quot;Birželis&amp;quot;, &amp;quot;Liepa&amp;quot;,&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;&amp;quot;Rugpjūtis&amp;quot;, &amp;quot;Rugsėjis&amp;quot;, &amp;quot;Spalis&amp;quot;, &amp;quot;Lapkritis&amp;quot;, &amp;quot;Gruodis&amp;quot;]&amp;lt;/code&amp;gt; (atkreipk dėmesį, kad ilgai eilutei atskirti gali būti naudojamas simbolis &amp;lt;code&amp;gt;\&amp;lt;/code&amp;gt;, tačiau šiuo atveju jis nėra būtinas, nes Python'as supranta, kad viskas, kas yra laužtiniuose skliaustuose priklauso kartu). &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; pradeda ir užbaigia sąrašą, o kableliai (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;) atskiria sąrašo elementus. Sąrašas naudojamas šioje dalyje: &amp;lt;code&amp;gt;mėnesiai[kuris - 1]&amp;lt;/code&amp;gt;. Sąrašas susideda iš elementų, kurie sunumeruoti pradedant nuo 0. Kitaip tariant, norint sąraše pasiekti elementą &amp;quot;Sausis&amp;quot;, turėtum rašyti &amp;lt;code&amp;gt;mėnesiai[0]&amp;lt;/code&amp;gt;. Nurodant sąrašui skaičių, tu gauni reikšmę išsaugotą toje sąrašo pozicijoje.&lt;br /&gt;
&lt;br /&gt;
Teiginys &amp;lt;code&amp;gt; if 1 &amp;lt;= kuris &amp;lt;= 12:&amp;lt;/code&amp;gt; bus teisingas tik tuo atveju, kai &amp;lt;code&amp;gt;kuris&amp;lt;/code&amp;gt; yra tarp vieno ir dvylikos imtinai (kitaip tariant, to ir tikėtumeis, jeigu matytum tai matematikoje).&lt;br /&gt;
&lt;br /&gt;
Sąrašai gali būti laikomi blokų serija. Kiekvienas blokas turi vis kitą reikšmę. Pavyzdžiui, blokai sukurti šiuo kodu: &amp;lt;code&amp;gt;demoSąrašas = [&amp;quot;gyvybė&amp;quot;, 42, &amp;quot;visata&amp;quot;, 6, &amp;quot;ir&amp;quot;, 9]&amp;lt;/code&amp;gt; atrodytų taip:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
!bloko numeris&lt;br /&gt;
!0 &lt;br /&gt;
!1  &lt;br /&gt;
!2 &lt;br /&gt;
!3 &lt;br /&gt;
!4 &lt;br /&gt;
!5 &lt;br /&gt;
|-&lt;br /&gt;
|demoSąrašas &lt;br /&gt;
|&amp;quot;gyvybė&amp;quot; &lt;br /&gt;
|42 &lt;br /&gt;
|&amp;quot;visata&amp;quot; &lt;br /&gt;
|6 &lt;br /&gt;
|&amp;quot;ir&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Kiekvienas blokas nurodomas jo numeriu - indeksu, todėl teiginys &amp;lt;code&amp;gt;demoSąrašas[0]&amp;lt;/code&amp;gt; gautų &amp;lt;code&amp;gt;&amp;quot;gyvybė&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;demoSąrašas[1]&amp;lt;/code&amp;gt; gautų &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt; ir taip toliau iki kol &amp;lt;code&amp;gt;demoSąrašas[5]&amp;lt;/code&amp;gt; gauna &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Daugiau sąrašų funkcijų ===&lt;br /&gt;
Kitas pavyzdys yra skirtas parodyti daugybę kitų dalykų, kuriuos gali padaryti sąrašai (šį kartą nesitikiu, kad viską susivesi į programą, bet tikriausiai turėtum šiek tiek pažaisti su sąrašais interaktyviame režime, kol apsiprasi su jais). Pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
demoSąrašas = [&amp;quot;gyvybė&amp;quot;, 42, &amp;quot;visata&amp;quot;, 6, &amp;quot;ir&amp;quot;, 9]&lt;br /&gt;
print(&amp;quot;demoSąrašas = &amp;quot;,demoSąrašas)&lt;br /&gt;
demoSąrašas.append(&amp;quot;oras&amp;quot;)&lt;br /&gt;
print(&amp;quot;po 'oras' pridėjimo, demoSąrašas atrodo taip:&amp;quot;)&lt;br /&gt;
print(demoSąrašas)&lt;br /&gt;
print(&amp;quot;len(demoSąrašas) =&amp;quot;, len(demoSąrašas))&lt;br /&gt;
print(&amp;quot;demoSąrašas.index(42) =&amp;quot;, demoSąrašas.index(42))&lt;br /&gt;
print(&amp;quot;demoSąrašas[1] =&amp;quot;, demoSąrašas[1])&lt;br /&gt;
&lt;br /&gt;
# o dabar mes pereisime per visą sąrašą &amp;quot;for&amp;quot; ciklu&lt;br /&gt;
for c in range(len(demoSąrašas)):&lt;br /&gt;
    print(&amp;quot;demoSąrašas[&amp;quot;, c, &amp;quot;] =&amp;quot;, demoSąrašas[c])&lt;br /&gt;
&lt;br /&gt;
del demoSąrašas[2]&lt;br /&gt;
print(&amp;quot;Po 'visata' pašalinimo, demoSąrašas atrodo taip:&amp;quot;)&lt;br /&gt;
print(demoSąrašas)&lt;br /&gt;
if &amp;quot;gyvybė&amp;quot; in demoSąrašas:&lt;br /&gt;
    print(&amp;quot;'gyvybė' buvo rasta kintamajame demoSąrašas&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;'gyvybė' nebuvo rasta kintamajame demoSąrašas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if &amp;quot;ameba&amp;quot; in demoSąrašas:&lt;br /&gt;
    print(&amp;quot;'ameba' buvo rasta kintamajame demoSąrašas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if &amp;quot;ameba&amp;quot; not in demoSąrašas:&lt;br /&gt;
    print(&amp;quot;'ameba' nebuvo rasta kintamajame demoSąrašas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
kitasSąrašas = [42,7,0,123]&lt;br /&gt;
kitasSąrašas.sort()&lt;br /&gt;
print(&amp;quot;Išrikiuotas kitasSąrašas atrodo taip&amp;quot;, kitasSąrašas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kodo išvestis būtų tokia:&lt;br /&gt;
&lt;br /&gt;
 demoSąrašas = [&amp;quot;gyvybė&amp;quot;, 42, &amp;quot;visata&amp;quot;, 6, &amp;quot;ir&amp;quot;, 9]&lt;br /&gt;
 po &amp;quot;oras&amp;quot; pridėjimo, demoSąrašas atrodo taip:&lt;br /&gt;
 [&amp;quot;gyvybė&amp;quot;, 42, &amp;quot;visata&amp;quot;, 6, &amp;quot;ir&amp;quot;, 9, &amp;quot;oras&amp;quot;]&lt;br /&gt;
 len(demoSąrašas) = 7&lt;br /&gt;
 demoSąrašas.index(42) = 1&lt;br /&gt;
 demoSąrašas[1] = 42&lt;br /&gt;
 demoSąrašas[ 0 ] = gyvybė&lt;br /&gt;
 demoSąrašas[ 1 ] = 42&lt;br /&gt;
 demoSąrašas[ 2 ] = visata&lt;br /&gt;
 demoSąrašas[ 3 ] = 6&lt;br /&gt;
 demoSąrašas[ 4 ] = ir&lt;br /&gt;
 demoSąrašas[ 5 ] = 9&lt;br /&gt;
 demoSąrašas[ 6 ] = oras&lt;br /&gt;
 Po 'visata' pašalinimo, demoSąrašas atrodo taip:&lt;br /&gt;
 [&amp;quot;gyvybė&amp;quot;, 42, 6, &amp;quot;ir&amp;quot;, 9, &amp;quot;oras&amp;quot;]&lt;br /&gt;
 &amp;quot;gyvybė&amp;quot; buvo rasta kintamajame demoSąrašas&lt;br /&gt;
 &amp;quot;ameba&amp;quot; nebuvo rasta kintamajame demoSąrašas&lt;br /&gt;
 Išrikiuotas kitasSąrašas atrodo taip [0, 7, 42, 123]&lt;br /&gt;
&lt;br /&gt;
Šiame pavyzdyje naudojama visa krūva naujų funkcijų. Atkreipk dėmesį, kad gali tiesiog atspausdinti (&amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt;) visą sąrašą. Toliau funkcija &amp;lt;code&amp;gt;append&amp;lt;/code&amp;gt; naudojama tam, kad pridėtum naują elementą į sąrašo pabaigą. &amp;lt;code&amp;gt;len&amp;lt;/code&amp;gt; grąžina kiek elementų yra sąraše. Tinkami sąrašo indeksai (skaičiai kuriuos naudojame viduje laužtinių skliaustų &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;) yra nuo 0 iki &amp;lt;code&amp;gt;len - 1&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt; nurodo, kur sąraše yra pirmoji elemento vieta. Atkreipk dėmesį, kaip &amp;lt;code&amp;gt;demoSąrašas.index(42)&amp;lt;/code&amp;gt; pateikia 1, o paleidus &amp;lt;code&amp;gt;demoSąrašas[1]&amp;lt;/code&amp;gt; grąžina 42. Norint gauti pagalbos dėl visų sąrašo funkcijų, įvesk &amp;lt;code&amp;gt; help(list)&amp;lt;/code&amp;gt; interaktyviajame Python'o interpretatoriuje.&lt;br /&gt;
&lt;br /&gt;
Eilutė &amp;lt;code&amp;gt;# o dabar mes pereisime per visą sąrašą &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklu&amp;lt;/code&amp;gt; yra tik priminimas programuotojui (dar vadinamas kaip „komentaras“). Python'as ignoruoja viską, kas parašyta esamoje eilutėje iškarto po simbolio &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;. Toliau eilutės:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for c in range(len(demoSąrašas)):&lt;br /&gt;
    print(&amp;quot;demoSąrašas[&amp;quot;, c, &amp;quot;] =&amp;quot;, demoSąrašas[c])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
sukuria kintamajį &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, kuris prasideda nuo 0 ir didinamas, kol pasiekia paskutinį sąrašo indeksą. Tuo tarpu &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; teiginys išspausdina kiekvieną sąrašo elementą.&lt;br /&gt;
&lt;br /&gt;
Daug geresnis būdas tai padaryti:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for c, x in enumerate(demoSąrašas):&lt;br /&gt;
    print(&amp;quot;demoSąrašas[&amp;quot;, c, &amp;quot;] =&amp;quot;, x)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Komanda &amp;lt;code&amp;gt;del&amp;lt;/code&amp;gt; gali būti naudojama tam tikram sąrašo elementui pašalinti. Kitos kelios eilutės naudoja &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; operatorių, kad patikrintų, ar elementas yra sąraše, ar ne. Funkcija &amp;lt;code&amp;gt;sort&amp;lt;/code&amp;gt; rūšiuoja sąrašą. Tai naudinga, jei tau reikia sąrašo nuo mažiausio iki didžiausio arba abėcėlės tvarka. Atmink, kad tai pakeičia sąrašą. Apibendrinant, su sąrašu yra atliekami šie veiksmai:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!pavyzdys &lt;br /&gt;
!paaiškinimas&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;demoSąrašas[2]&amp;lt;/code&amp;gt; &lt;br /&gt;
|pasiekia elementą ties indeksu 2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;demoSąrašas[2] = 3&amp;lt;/code&amp;gt; &lt;br /&gt;
|nustato elementą ties indeksu 2 kaip 3&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;del demoSąrašas[2]&amp;lt;/code&amp;gt; &lt;br /&gt;
|pašalina elementą, esantį 2 indekse&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;len(demoSąrašas)&amp;lt;/code&amp;gt; &lt;br /&gt;
|grąžina &amp;lt;code&amp;gt;demoSąrašas&amp;lt;/code&amp;gt; ilgį&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;reikšmė&amp;quot; in demoSąrašas&amp;lt;/code&amp;gt; &lt;br /&gt;
|yra ''True'' jeigu &amp;lt;tt&amp;gt;&amp;quot;reikšmė&amp;quot;&amp;lt;/tt&amp;gt; yra elementas, priklausantis &amp;lt;code&amp;gt;demoSąrašas&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;reikšmė&amp;quot; not in demoSąrašas&amp;lt;/code&amp;gt; &lt;br /&gt;
|yra ''True'' jeigu &amp;lt;code&amp;gt;&amp;quot;reikšmė&amp;quot;&amp;lt;/code&amp;gt; nėra elementas, priklausantis &amp;lt;code&amp;gt;demoSąrašas&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;kitasSąrašas.sort()&amp;lt;/code&amp;gt; &lt;br /&gt;
|surūšiuoja &amp;lt;code&amp;gt;kitasSąrašas&amp;lt;/code&amp;gt;. Atmink, kad rūšiavimas pavyktų, visi sąrašo elementai turi būti arba skaičiai, arba eilutės (string).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;demoSąrašas.index(&amp;quot;reikšmė&amp;quot;)&amp;lt;/code&amp;gt; &lt;br /&gt;
|grąžina pirmosios vietos, kurioje atsiranda &amp;lt;code&amp;gt;&amp;quot;reikšmė&amp;quot;&amp;lt;/code&amp;gt;, indeksą&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;demoSąrašas.append(&amp;quot;reikšmė&amp;quot;)&amp;lt;/code&amp;gt; &lt;br /&gt;
|sąrašo pabaigoje prideda elementą &amp;lt;code&amp;gt;&amp;quot;reikšmė&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;demoSąrašas.remove(&amp;quot;reikšmė&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|pašalina pirmą rastą elementą su nurodyta reišme iš &amp;lt;code&amp;gt;demoSąrašas&amp;lt;/code&amp;gt; (taip pat, kaip &amp;lt;code&amp;gt;del demoSąrašas[demoSąrašas.index(&amp;quot;reikšmė&amp;quot;)]&amp;lt;/code&amp;gt;)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Šiame kitame pavyzdyje šios funkcijos naudojamos naudingiau:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
meniuElementas = 0&lt;br /&gt;
vardųSarašas = []&lt;br /&gt;
while meniuElementas != 9:&lt;br /&gt;
    print(&amp;quot;--------------------&amp;quot;)&lt;br /&gt;
    print(&amp;quot;1. Spausdinti sąrašą&amp;quot;)&lt;br /&gt;
    print(&amp;quot;2. Pridėti vardą prie sąrašo&amp;quot;)&lt;br /&gt;
    print(&amp;quot;3. Pašalinti vardą iš sąrašo&amp;quot;)&lt;br /&gt;
    print(&amp;quot;4. Pakeisti elementą sąraše&amp;quot;)&lt;br /&gt;
    print(&amp;quot;9. Išeiti&amp;quot;)&lt;br /&gt;
    meniuElementas = int(input(&amp;quot;Pasirinkite elementą iš meniu: &amp;quot;))&lt;br /&gt;
    if meniuElementas == 1:&lt;br /&gt;
        dabartinis = 0&lt;br /&gt;
        if len(vardųSarašas) &amp;gt; 0:&lt;br /&gt;
            while dabartinis &amp;lt; len(vardųSarašas):&lt;br /&gt;
                print(dabartinis, &amp;quot;.&amp;quot;, vardųSarašas[dabartinis])&lt;br /&gt;
                dabartinis = dabartinis + 1&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Sąrašas tuščias&amp;quot;)&lt;br /&gt;
    elif meniuElementas == 2:&lt;br /&gt;
        vardas = input(&amp;quot;Įveskite vardą, kurį norite pridėti: &amp;quot;)&lt;br /&gt;
        vardųSarašas.append(vardas)&lt;br /&gt;
    elif meniuElementas == 3:&lt;br /&gt;
        šalinamasVardas = input(&amp;quot;Kokį vardą norėtumėte pašalinti:&amp;quot;)&lt;br /&gt;
        if šalinamasVardas in vardųSarašas:&lt;br /&gt;
            # vardųSarašas.remove(šalinamasVardas) veiktų taip pat gerai&lt;br /&gt;
            elementoIndeksas = vardųSarašas.index(šalinamasVardas)&lt;br /&gt;
            del vardųSarašas[elementoIndeksas]&lt;br /&gt;
            # Aukščiau pateiktas kodas pašalina tik pirmąjį surasta vardą.&lt;br /&gt;
            # Žemiau esantis kodas pašalina visus.&lt;br /&gt;
            # while šalinamasVardas in vardųSarašas:&lt;br /&gt;
            #       elementoIndeksas = vardųSarašas.index(šalinamasVardas)&lt;br /&gt;
            #       del vardųSarašas[elementoIndeksas]&lt;br /&gt;
        else:&lt;br /&gt;
            print(šalinamasVardas, &amp;quot;nerastas&amp;quot;)&lt;br /&gt;
    elif meniuElementas == 4:&lt;br /&gt;
        senasVardas = input(&amp;quot;Kokį vardą norėtumėte pakeisti:&amp;quot;)&lt;br /&gt;
        if senasVardas in vardųSarašas:&lt;br /&gt;
            elementoIndeksas = vardųSarašas.index(senasVardas)&lt;br /&gt;
            naujasVardas = input(&amp;quot;Koks yra naujas vardas: &amp;quot;)&lt;br /&gt;
            vardųSarašas[elementoIndeksas] = naujasVardas&lt;br /&gt;
        else:&lt;br /&gt;
            print(senasVardas, &amp;quot;nerastas&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Iki pasimatymo&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir čia yra išvesties dalis:&lt;br /&gt;
&lt;br /&gt;
 --------------------&lt;br /&gt;
 1. Spausdinti sąrašą&lt;br /&gt;
 2. Pridėti vardą prie sąrašo&lt;br /&gt;
 3. Pašalinti vardą iš sąrašo&lt;br /&gt;
 4. Pakeisti elementą sąraše&lt;br /&gt;
 9. Išeiti&lt;br /&gt;
 &lt;br /&gt;
 Pasirinkite elementą iš meniu: '''2'''&lt;br /&gt;
 Įveskite vardą, kurį norite pridėti: '''Benas'''&lt;br /&gt;
 &lt;br /&gt;
 Pasirinkite elementą iš meniu: '''2'''&lt;br /&gt;
 Įveskite vardą, kurį norite pridėti: '''Liepa'''&lt;br /&gt;
 &lt;br /&gt;
 Pasirinkite elementą iš meniu: '''1'''&lt;br /&gt;
 0. Benas&lt;br /&gt;
 1. Liepa&lt;br /&gt;
 &lt;br /&gt;
 Pasirinkite elementą iš meniu: '''3'''&lt;br /&gt;
 Kokį vardą norėtumėte pašalinti: '''Benas'''&lt;br /&gt;
 &lt;br /&gt;
 Pasirinkite elementą iš meniu: '''4'''&lt;br /&gt;
 Kokį vardą norėtumėte pakeisti: '''Liepa'''&lt;br /&gt;
 Koks yra naujas vardas: '''Liepa Petraitė'''&lt;br /&gt;
 &lt;br /&gt;
 Pasirinkite elementą iš meniu: '''1'''&lt;br /&gt;
 0. Liepa Petraitė&lt;br /&gt;
 &lt;br /&gt;
 Pasirinkite elementą iš meniu: '''9'''&lt;br /&gt;
 Iki pasimatymo&lt;br /&gt;
&lt;br /&gt;
Tai buvo ilga programa. Panagrinėkime pirminį programos tekstą. Eilutė &amp;lt;code&amp;gt;vardųSarašas = []&amp;lt;/code&amp;gt; sukuria kintamajį &amp;lt;code&amp;gt;vardųSarašas&amp;lt;/code&amp;gt;, tuščia sąrašą, be elementų. Kita svarbi eilutė yra &amp;lt;code&amp;gt;while meniuElementas != 9:&amp;lt;/code&amp;gt;. Ši eilutė pradeda ciklą, leidžiantį šios programos meniu sistemai veikti. Kitos eilutės parodo meniu ir nusprendžia, kurią programos dalį paleisti.&lt;br /&gt;
&lt;br /&gt;
Ši dalis&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
dabartinis = 0&lt;br /&gt;
    if len(vardųSarašas) &amp;gt; 0:&lt;br /&gt;
        while dabartinis &amp;lt; len(vardųSarašas):&lt;br /&gt;
            print(dabartinis, &amp;quot;.&amp;quot;, vardųSarašas[dabartinis])&lt;br /&gt;
            dabartinis = dabartinis + 1&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Sąrašas tuščias&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
eina per sąrašą ir spausdina kiekvieną vardą. &amp;lt;code&amp;gt;len(vardųSarašas)&amp;lt;/code&amp;gt; nurodo, kiek elementų yra sąraše. Jei &amp;lt;code&amp;gt;len&amp;lt;/code&amp;gt; grąžina &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, reiškias sąrašas tuščias.&lt;br /&gt;
&lt;br /&gt;
Toliau po kelių eilučių matysi teiginį &amp;lt;code&amp;gt;vardųSarašas.append(vardas)&amp;lt;/code&amp;gt;. Jis naudoja funkciją &amp;lt;code&amp;gt;append&amp;lt;/code&amp;gt;, kad pridėtų elementą į sąrašo pabaigą. Peršokus dar dvi eilutes, pastebėsi šią kodo dalį:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
elementoIndeksas = vardųSarašas.index(šalinamasVardas)&lt;br /&gt;
del vardųSarašas[elementoIndeksas]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Čia funkcija &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt; yra naudojama norint rasti indekso reikšmę, kuri vėliau bus naudojama elementui pašalinti. &amp;lt;code&amp;gt;del vardųSarašas[elementoIndeksas]&amp;lt;/code&amp;gt; naudojamas sąrašo elementui pašalinti.   &lt;br /&gt;
&lt;br /&gt;
Kitoje kodo dalyje&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
senasVardas = input(&amp;quot;Kokį vardą norėtumėte pakeisti:&amp;quot;)&lt;br /&gt;
if senasVardas in vardųSarašas:&lt;br /&gt;
    elementoIndeksas = vardųSarašas.index(senasVardas)&lt;br /&gt;
    naujasVardas = input(&amp;quot;Koks yra naujas vardas: &amp;quot;)&lt;br /&gt;
    vardųSarašas[elementoIndeksas] = naujasVardas&lt;br /&gt;
else:&lt;br /&gt;
    print(senasVardas, &amp;quot;nerastas&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
naudojamas &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;, kad surasti &amp;lt;code&amp;gt;elementoIndeksas&amp;lt;/code&amp;gt; ir tada įdėti &amp;lt;code&amp;gt;naujasVardas&amp;lt;/code&amp;gt; ten, kur buvo &amp;lt;code&amp;gt;senasVardas&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sveikinu, perpratus sąrašus, dabar tu pakankamai žinai kalbą, kad galėtum atlikti bet kokius skaičiavimus, kuriuos gali atlikti kompiuteris (tai techniškai žinoma kaip [[Wikipedia:Turing_completeness|Turing-Completeness]]). Žinoma, vis dar yra daug funkcijų, kurias naudojant tu pasilengvinsi sau gyvenimą.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
'''testas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
## Ši programa atlieka žinių patikrinimą&lt;br /&gt;
&lt;br /&gt;
# Pirmiausia surenkame testo klausimus.&lt;br /&gt;
# Vėliau šią dalį pakeisime, kad būtų naudojama failinė sistema.&lt;br /&gt;
def gauti_klausimus():&lt;br /&gt;
    # atkreipk dėmesį, kad duomenys saugomi kaip sąrašų sąrašas&lt;br /&gt;
    return [[&amp;quot;Kokios spalvos yra dangus giedrą dieną? &amp;quot;, &amp;quot;mėlynas&amp;quot;],&lt;br /&gt;
            [&amp;quot;Koks atsakymas į gyvenimą, visatą ir viską? &amp;quot;, &amp;quot;42&amp;quot;],&lt;br /&gt;
            [&amp;quot;Kas yra keturių raidžių žodis pelės gaudyklei? &amp;quot;, &amp;quot;katė&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
# Ši dalis patikrins vieną klausimą&lt;br /&gt;
# pateikiamas vienas klausimas&lt;br /&gt;
# grąžinama teisinga (True), jei vartotojas įvedė teisingą atsakymą, kitu atveju - klaidinga (False)&lt;br /&gt;
&lt;br /&gt;
def pateik_klausimą(klausimas_ir_atsakymas):&lt;br /&gt;
    # ištraukiame klausimą ir atsakymą iš sąrašo&lt;br /&gt;
    # Ši funkcija priima dviejų elementų sąrašą, klausimą ir atsakymą.  &lt;br /&gt;
    klausimas = klausimas_ir_atsakymas[0]   &lt;br /&gt;
    atsakymas = klausimas_ir_atsakymas[1]&lt;br /&gt;
    # užduodame klausimą vartotojui&lt;br /&gt;
    duotas_atsakymas = input(klausimas)&lt;br /&gt;
    # palyginame vartotojo atsakymą su teisingu atsakymu&lt;br /&gt;
    if atsakymas == duotas_atsakymas:&lt;br /&gt;
        print(&amp;quot;Teisingai&amp;quot;)&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Neteisingai. Teisingas atsakymas: &amp;quot;, atsakymas)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
# Šis kodas apims visus klausimus&lt;br /&gt;
def atlikti_testus(klausimai):&lt;br /&gt;
    if len(klausimai) == 0:&lt;br /&gt;
        print(&amp;quot;Nepateiktas nei vienas klausimas.&amp;quot;)&lt;br /&gt;
        # `return` išeis iš funkcijos&lt;br /&gt;
        return&lt;br /&gt;
    indeksas = 0&lt;br /&gt;
    teisingai = 0&lt;br /&gt;
    while indeksas &amp;lt; len(klausimai):&lt;br /&gt;
        # patikriname klausimą&lt;br /&gt;
        # Atkreipk dėmesį, kad tai yra klausimų ir atsakymų sąrašo ištraukimas iš sąrašų sąrašo.&lt;br /&gt;
        if pateik_klausimą(klausimai[indeksas]): &lt;br /&gt;
            teisingai = teisingai + 1&lt;br /&gt;
        # pareiname prie kito klausimo&lt;br /&gt;
        indeksas = indeksas + 1&lt;br /&gt;
    # atkreipk dėmesį į skaičiavimo tvarką: pirmiausia padaugini, tada padalini&lt;br /&gt;
    print(&amp;quot;Atsakei teisingai į &amp;quot;, teisingai * 100 / len(klausimai),\&lt;br /&gt;
           &amp;quot;% klausimų iš &amp;quot;, len(klausimai))&lt;br /&gt;
&lt;br /&gt;
# dabar paimkime klausimus iš funkcijos gauti_klausimus ir&lt;br /&gt;
# paduokime grąžintą sąrašų sąrašą kaip argumentą funkcijai atlikti_testus.&lt;br /&gt;
&lt;br /&gt;
atlikti_testus(gauti_klausimus())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reikšmės &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;False&amp;lt;/code&amp;gt; turi reikšmes atitinkamai 1 ir 0. Jie dažnai naudojami loginės sekos patikrinimui, ciklo sąlygoms ir pan. Daugiau apie tai sužinosi šiek tiek vėliau (skyrius [[../Boolean Expressions|Boolean Expressions]]).&lt;br /&gt;
Atkreipk dėmesį, kad gauti_klausimus() iš esmės yra sąrašas, nors tai techniškai yra funkcija - sąrašų grąžinimas yra vienintelis dalykas, kurį jis daro. &lt;br /&gt;
&lt;br /&gt;
Pavyzdžio išvestis:&lt;br /&gt;
&lt;br /&gt;
 Kokios spalvos yra dangus giedrą dieną? '''žalias'''&lt;br /&gt;
 Neteisingai. Teisingas atsakymas: mėlynas&lt;br /&gt;
 Koks atsakymas į gyvenimą, visatą ir viską? '''42'''&lt;br /&gt;
 Teisingai&lt;br /&gt;
 Kas yra keturių raidžių žodis pelės gaudyklei? '''katė'''&lt;br /&gt;
 Teisingai&lt;br /&gt;
 Atsakei teisingai į 66% klausimų iš 3&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
&lt;br /&gt;
Išplėsk testas.py programą, kad ji turėtų meniu, kuriame būtų galima atlikti testą,&lt;br /&gt;
peržiūrėti klausimų ir atsakymų sąrašą ir pasirinkti išeiti iš programos. Taip pat, pridėk naują klausimą:&lt;br /&gt;
„Kokį triukšmą kelia tikrai pažangi mašina?“ su teisingu atsakymu „ping“.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
## Ši programa atlieka žinių patikrinimą&lt;br /&gt;
&lt;br /&gt;
klausimai = [[&amp;quot;Kokios spalvos yra dangus giedrą dieną? &amp;quot;, &amp;quot;mėlynas&amp;quot;],&lt;br /&gt;
             [&amp;quot;Koks atsakymas į gyvenimą, visatą ir viską? &amp;quot;, &amp;quot;42&amp;quot;],&lt;br /&gt;
             [&amp;quot;Kas yra keturių raidžių žodis pelės gaudyklei? &amp;quot;, &amp;quot;katė&amp;quot;],&lt;br /&gt;
             [&amp;quot;Kokį triukšmą kelia tikrai pažangi mašina?&amp;quot;, &amp;quot;ping&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
# Ši dalis patikrins vieną klausimą&lt;br /&gt;
# pateikiamas vienas klausimas&lt;br /&gt;
# grąžinama teisinga (True), jei vartotojas įvedė teisingą atsakymą, kitu atveju - klaidinga (False)&lt;br /&gt;
&lt;br /&gt;
def pateik_klausimą(klausimas_ir_atsakymas):&lt;br /&gt;
    # ištraukiame klausimą ir atsakymą iš sąrašo&lt;br /&gt;
    # Ši funkcija priima dviejų elementų sąrašą, klausimą ir atsakymą.  &lt;br /&gt;
    klausimas = klausimas_ir_atsakymas[0]   &lt;br /&gt;
    atsakymas = klausimas_ir_atsakymas[1]&lt;br /&gt;
    # užduodame klausimą vartotojui&lt;br /&gt;
    duotas_atsakymas = input(klausimas)&lt;br /&gt;
    # palyginame vartotojo atsakymą su teisingu atsakymu&lt;br /&gt;
    if atsakymas == duotas_atsakymas:&lt;br /&gt;
        print(&amp;quot;Teisingai&amp;quot;)&lt;br /&gt;
        return True&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Neteisingai. Teisingas atsakymas: &amp;quot;, atsakymas)&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
# Šis kodas apims visus klausimus&lt;br /&gt;
def atlikti_testus(klausimai):&lt;br /&gt;
    if len(klausimai) == 0:&lt;br /&gt;
        print(&amp;quot;Nepateiktas nei vienas klausimas.&amp;quot;)&lt;br /&gt;
        # `return` išeis iš funkcijos&lt;br /&gt;
        return&lt;br /&gt;
    indeksas = 0&lt;br /&gt;
    teisingai = 0&lt;br /&gt;
    while indeksas &amp;lt; len(klausimai):&lt;br /&gt;
        # patikriname klausimą&lt;br /&gt;
        # Atkreipk dėmesį, kad tai yra klausimų ir atsakymų sąrašo ištraukimas iš sąrašų sąrašo.&lt;br /&gt;
        if pateik_klausimą(klausimai[indeksas]): &lt;br /&gt;
            teisingai = teisingai + 1&lt;br /&gt;
        # pareiname prie kito klausimo&lt;br /&gt;
        indeksas = indeksas + 1&lt;br /&gt;
    # atkreipk dėmesį į skaičiavimo tvarką: pirmiausia padaugini, tada padalini&lt;br /&gt;
    print(&amp;quot;Atsakei teisingai į &amp;quot;, teisingai * 100 / len(klausimai),\&lt;br /&gt;
           &amp;quot;% klausimų iš &amp;quot;, len(klausimai))&lt;br /&gt;
&lt;br /&gt;
#rodomas klausimų ir atsakymų sąrašas&lt;br /&gt;
def rodyk_klausimus():&lt;br /&gt;
    k = 0&lt;br /&gt;
    while k &amp;lt; len(klausimai):&lt;br /&gt;
        a = 0&lt;br /&gt;
        print(&amp;quot;K:&amp;quot; , klausimai[k][a])&lt;br /&gt;
        a = 1&lt;br /&gt;
        print(&amp;quot;A:&amp;quot; , klausimai[k][a])&lt;br /&gt;
        k = k + 1&lt;br /&gt;
&lt;br /&gt;
# dabar apibrėžiu meniu funkciją&lt;br /&gt;
def meniu():&lt;br /&gt;
    print(&amp;quot;-----------------&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Meniu:&amp;quot;)&lt;br /&gt;
    print(&amp;quot;1 - Atlikti testą&amp;quot;)&lt;br /&gt;
    print(&amp;quot;2 - Peržiūrėti klausimų ir atsakymų sąrašą&amp;quot;)&lt;br /&gt;
    print(&amp;quot;3 - Peržiūrėti meniu&amp;quot;)&lt;br /&gt;
    print(&amp;quot;5 - Išeiti&amp;quot;)&lt;br /&gt;
    print(&amp;quot;-----------------&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
pasirinkimas = &amp;quot;3&amp;quot;&lt;br /&gt;
while pasirinkimas != &amp;quot;5&amp;quot;:&lt;br /&gt;
    if pasirinkimas == &amp;quot;1&amp;quot;:&lt;br /&gt;
        atlikti_testus(klausimai)&lt;br /&gt;
    elif pasirinkimas == &amp;quot;2&amp;quot;:&lt;br /&gt;
        rodyk_klausimus()&lt;br /&gt;
    elif pasirinkimas == &amp;quot;3&amp;quot;:&lt;br /&gt;
        meniu()&lt;br /&gt;
    print()&lt;br /&gt;
    pasirinkimas = input(&amp;quot;Pasirinkite savo parinktį iš aukščiau pateikto meniu: &amp;quot;) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Advanced Functions Example |next=For Loops}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3560</id>
		<title>Python Vadovėlis/Terminai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3560"/>
		<updated>2021-11-17T18:16:07Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Computer - kompiuteris &lt;br /&gt;
&lt;br /&gt;
Container - konteineris&lt;br /&gt;
&lt;br /&gt;
Control strukture - valdymo struktūra&lt;br /&gt;
&lt;br /&gt;
Counter - skaitliukas &lt;br /&gt;
&lt;br /&gt;
Debugging - derinimas&lt;br /&gt;
&lt;br /&gt;
Directory - katalogas&lt;br /&gt;
&lt;br /&gt;
Exercise - pratimas&lt;br /&gt;
&lt;br /&gt;
Expression - reiškinys&lt;br /&gt;
&lt;br /&gt;
False - klaidinga&lt;br /&gt;
&lt;br /&gt;
Feature - ypatybė&lt;br /&gt;
&lt;br /&gt;
Floating point - slankusis kablelis&lt;br /&gt;
&lt;br /&gt;
Hard-coded - įkoduotas/užprogramuotas&lt;br /&gt;
&lt;br /&gt;
IDLE - IDLE kodo redaktorius/kodo redaktorius&lt;br /&gt;
&lt;br /&gt;
Indent - įtrauka&lt;br /&gt;
&lt;br /&gt;
Item - elementas&lt;br /&gt;
&lt;br /&gt;
Iterable - iteruojamasis&lt;br /&gt;
&lt;br /&gt;
List - sąrašas&lt;br /&gt;
&lt;br /&gt;
Loop - ciklas&lt;br /&gt;
&lt;br /&gt;
Mouse - pelė&lt;br /&gt;
&lt;br /&gt;
Operator - operatorius&lt;br /&gt;
&lt;br /&gt;
Optional - pasirinktinas&lt;br /&gt;
&lt;br /&gt;
Output - išvestis/rezultatas&lt;br /&gt;
&lt;br /&gt;
Prepackaged - iš anksto paruošti paketai&lt;br /&gt;
&lt;br /&gt;
Prompt - kviesti&lt;br /&gt;
&lt;br /&gt;
Python - Python'as&lt;br /&gt;
&lt;br /&gt;
Run (daikt.) - vykdymas &lt;br /&gt;
&lt;br /&gt;
Shell - terminalas/kosolės langas&lt;br /&gt;
&lt;br /&gt;
Site-packages - svetainės paketai&lt;br /&gt;
&lt;br /&gt;
Solution - sprendimas&lt;br /&gt;
&lt;br /&gt;
Source code - pirminis programos tekstas&lt;br /&gt;
&lt;br /&gt;
Statement - sakinys&lt;br /&gt;
&lt;br /&gt;
String - eilutė&lt;br /&gt;
&lt;br /&gt;
Terminate - nutraukti darbą/stabdyti programą&lt;br /&gt;
&lt;br /&gt;
True - teisinga&lt;br /&gt;
&lt;br /&gt;
User - naudotojas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=FAQ |next=END}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3559</id>
		<title>Python Vadovėlis/Terminai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Terminai&amp;diff=3559"/>
		<updated>2021-11-17T18:12:19Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Computer - kompiuteris &lt;br /&gt;
&lt;br /&gt;
Control strukture - valdymo struktūra&lt;br /&gt;
&lt;br /&gt;
Counter - skaitliukas &lt;br /&gt;
&lt;br /&gt;
Debugging - derinimas&lt;br /&gt;
&lt;br /&gt;
Directory - katalogas&lt;br /&gt;
&lt;br /&gt;
Exercise - pratimas&lt;br /&gt;
&lt;br /&gt;
Expression - reiškinys&lt;br /&gt;
&lt;br /&gt;
False - klaidinga&lt;br /&gt;
&lt;br /&gt;
Feature - ypatybė&lt;br /&gt;
&lt;br /&gt;
Floating point - slankusis kablelis&lt;br /&gt;
&lt;br /&gt;
Hard-coded - įkoduotas/užprogramuotas&lt;br /&gt;
&lt;br /&gt;
IDLE - IDLE kodo redaktorius/kodo redaktorius&lt;br /&gt;
&lt;br /&gt;
Indent - įtrauka&lt;br /&gt;
&lt;br /&gt;
Item - elementas&lt;br /&gt;
&lt;br /&gt;
Iterable - iteruojamasis&lt;br /&gt;
&lt;br /&gt;
Loop - ciklas&lt;br /&gt;
&lt;br /&gt;
Mouse - pelė&lt;br /&gt;
&lt;br /&gt;
Operator - operatorius&lt;br /&gt;
&lt;br /&gt;
Optional - pasirinktinas&lt;br /&gt;
&lt;br /&gt;
Output - išvestis/rezultatas&lt;br /&gt;
&lt;br /&gt;
Prepackaged - iš anksto paruošti paketai&lt;br /&gt;
&lt;br /&gt;
Prompt - kviesti&lt;br /&gt;
&lt;br /&gt;
Python - Python'as&lt;br /&gt;
&lt;br /&gt;
Run (daikt.) - vykdymas &lt;br /&gt;
&lt;br /&gt;
Shell - terminalas/kosolės langas&lt;br /&gt;
&lt;br /&gt;
Site-packages - svetainės paketai&lt;br /&gt;
&lt;br /&gt;
Solution - sprendimas&lt;br /&gt;
&lt;br /&gt;
Source code - pirminis programos tekstas&lt;br /&gt;
&lt;br /&gt;
Statement - sakinys&lt;br /&gt;
&lt;br /&gt;
String - eilutė&lt;br /&gt;
&lt;br /&gt;
Terminate - nutraukti darbą/stabdyti programą&lt;br /&gt;
&lt;br /&gt;
True - teisinga&lt;br /&gt;
&lt;br /&gt;
User - naudotojas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=FAQ |next=END}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Pasirinkimai&amp;diff=3558</id>
		<title>Python Vadovėlis/Pasirinkimai</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Pasirinkimai&amp;diff=3558"/>
		<updated>2021-11-17T18:11:28Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== &amp;lt;code&amp;gt;If&amp;lt;/code&amp;gt; sakinys ===&lt;br /&gt;
Kaip visada, aš tikiu, kad turėčiau pradėti kiekvieną skyrių su apšilimo pratimu. Taigi, žemiau turime trumpą programą, kuri apskaičiuoja absoliučią sveikojo skaičiaus reikšmę:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
n = int(input(&amp;quot;Skaičius? &amp;quot;))&lt;br /&gt;
if n &amp;lt; 0:&lt;br /&gt;
   print(&amp;quot;Absoliuti&amp;quot;, n, &amp;quot;reikšmė yra&amp;quot;, -n)&lt;br /&gt;
else:&lt;br /&gt;
   print(&amp;quot;Absoliuti&amp;quot;, n, &amp;quot;reikšmė yra&amp;quot;, n)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai rezultatas po dviejų programos vykdymų:&lt;br /&gt;
&lt;br /&gt;
 Skaičius? '''-34'''&lt;br /&gt;
 Absoliuti -34 reikšmė yra 34&lt;br /&gt;
&lt;br /&gt;
 Skaičius? '''1'''&lt;br /&gt;
 Absoliuti 1 reikšmė yra 1&lt;br /&gt;
&lt;br /&gt;
Taigi, ką kompiuteris daro, kai pamato šį kodą? Visų pirma, jis kviečia įvesti skaičių su šiuo sakiniu &amp;lt;code&amp;gt;n = int(input(&amp;quot;Skaičius? &amp;quot;))&amp;lt;/code&amp;gt;. Tada jis skaito eilutę &amp;lt;code&amp;gt;if n &amp;lt; 0:&amp;lt;/code&amp;gt;. Jei &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; yra mažiau už nulį, Python'as vykdo eilutę &amp;lt;code&amp;gt;print(&amp;quot;Absoliuti&amp;quot;, n, &amp;quot;reikšmė yra&amp;quot;, -n)&amp;lt;/code&amp;gt;. Kitu atveju, jis vykdo eilutę &amp;lt;code&amp;gt;print(&amp;quot;Absoliuti&amp;quot;, n, &amp;quot;reikšmė yra&amp;quot;, n)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Kalbant formaliau, Python'as tikrina, ar „reiškinys“ &amp;lt;code&amp;gt;n &amp;lt; 0&amp;lt;/code&amp;gt; yra teisinga ar klaidinga. Sakinys &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; yra lydimas įtraukto sakinių „bloko“, kuris vykdomas tik jei reiškinys yra tiesa. Pasirinktinai, po &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakinio gali būti &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; sakinys ir dar vienas įtrauktas sakinių „blokas“. Antrasis sakinių blokas yra vykdomas tik jei reiškinys yra melas.&lt;br /&gt;
&lt;br /&gt;
Reiškinys gali turėti įvairių testų. Žemiau yra visų jų lentelė:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!operatorius &lt;br /&gt;
!funkcija&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;&amp;lt;/code&amp;gt; &lt;br /&gt;
|mažiau nei&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;=&amp;lt;/code&amp;gt; &lt;br /&gt;
|mažiau nei arba lygu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
|daugiau nei&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;gt;=&amp;lt;/code&amp;gt; &lt;br /&gt;
|daugiau nei arba lygu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; &lt;br /&gt;
|lygu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt; &lt;br /&gt;
|nelygu&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dar viena sakinio &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; ypatybė yra &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; sakinys. Tai &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt; sutrumpinimas ir reiškia, kad jei originalus &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakinys yra klaidinga, bet &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; dalis yra teisinga, yra vykdoma &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; kodo dalis. Ir jei nei &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, nei &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; reiškiniai nėra tiesa, tada vykdomas &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; blokas. Pavyzdžiui:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 0&lt;br /&gt;
while a &amp;lt; 10:&lt;br /&gt;
    a = a + 1&lt;br /&gt;
    if a &amp;gt; 5:&lt;br /&gt;
        print(a, &amp;quot;&amp;gt;&amp;quot;, 5)&lt;br /&gt;
    elif a &amp;lt;= 3:&lt;br /&gt;
        print(a, &amp;quot;&amp;lt;=&amp;quot;, 3)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Nei vienas iš testų nėra teisingas&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ir išvestis:&lt;br /&gt;
&lt;br /&gt;
 1 &amp;lt;= 3&lt;br /&gt;
 2 &amp;lt;= 3&lt;br /&gt;
 3 &amp;lt;= 3&lt;br /&gt;
 Nei vienas iš testų nėra teisingas&lt;br /&gt;
 Nei vienas iš testų nėra teisingas&lt;br /&gt;
 6 &amp;gt; 5&lt;br /&gt;
 7 &amp;gt; 5&lt;br /&gt;
 8 &amp;gt; 5&lt;br /&gt;
 9 &amp;gt; 5&lt;br /&gt;
 10 &amp;gt; 5&lt;br /&gt;
&lt;br /&gt;
Gali pastebėti, kad &amp;lt;code&amp;gt;elif a &amp;lt;= 3&amp;lt;/code&amp;gt; dalis yra tikrinama tik tada, jei &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakinys nėra tiesa. Galima rašyti daugiau nei vieną &amp;lt;code&amp;gt;elif&amp;lt;/code&amp;gt; reiškinį, tokiu būdu leidžiant vykdyti kelis testus viename &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; sakinyje.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa parodo, kaip galima naudoti == operatorių&lt;br /&gt;
# naudojant numerius&lt;br /&gt;
print(5 == 6)&lt;br /&gt;
# naudojant kintamuosius&lt;br /&gt;
x = 5&lt;br /&gt;
y = 8&lt;br /&gt;
print(x == y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir išvestis&lt;br /&gt;
&lt;br /&gt;
 False&lt;br /&gt;
 False&lt;br /&gt;
&lt;br /&gt;
'''daugiau_maziau.py'''&amp;lt;!--\label{firsthighlow}--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Žaidžia spėlionių žaidimą daugiau mažiau&lt;br /&gt;
&lt;br /&gt;
# Iš tiesų, čia turėtų būti naudojami pusiau atsitiktiniai skaičiai,&lt;br /&gt;
# pavyzdžiui paskutinis laiko skaitmuo, ar kažkas panašaus. Bet tai&lt;br /&gt;
# palauks iki vėlesnės dalies. (Papildoma užduotis: po Modulių dalies, pakeisk šį kodą,&lt;br /&gt;
# kad būtų naudojami atsitiktiniai skaičiai)&lt;br /&gt;
skaicius = 7&lt;br /&gt;
spejimas = -1&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Atspėk skaičių!&amp;quot;)&lt;br /&gt;
while spejimas != skaicius:&lt;br /&gt;
    spejimas = int(input(&amp;quot;Ar tai yra... &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    if spejimas == skaicius:&lt;br /&gt;
        print(&amp;quot;Valio! Atspėjai teisingai!&amp;quot;)&lt;br /&gt;
    elif spejimas &amp;lt; skaicius:&lt;br /&gt;
        print(&amp;quot;Skaičius yra didesnis...&amp;quot;)&lt;br /&gt;
    elif spejimas &amp;gt; skaicius:&lt;br /&gt;
        print(&amp;quot;Skaičius yra ne toks didelis.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdinis vykdymas:&lt;br /&gt;
&lt;br /&gt;
 Atspėk skaičių!&lt;br /&gt;
 Ar tai yra... '''2'''&lt;br /&gt;
 Skaičius yra didesnis...&lt;br /&gt;
 Ar tai yra... '''5'''&lt;br /&gt;
 Skaičius yra didesnis...&lt;br /&gt;
 Ar tai yra... '''10'''&lt;br /&gt;
 Skaičius yra ne toks didelis.&lt;br /&gt;
 Ar tai yra... '''7'''&lt;br /&gt;
 Valio! Atspėjai teisingai!&lt;br /&gt;
&lt;br /&gt;
'''lyginis.py'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Prašo įvesti skaičių.&lt;br /&gt;
# Išveda, ar skaičius yra lyginis, ar ne&lt;br /&gt;
 &lt;br /&gt;
skaicius = float(input(&amp;quot;Pasakyk man skaičių: &amp;quot;))&lt;br /&gt;
if skaicius % 2 == 0:&lt;br /&gt;
    print(int(skaicius), &amp;quot;yra lyginis.&amp;quot;)&lt;br /&gt;
elif skaicius % 2 == 1:&lt;br /&gt;
    print(int(skaicius), &amp;quot;yra nelyginis.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(skaicius, &amp;quot;yra labai keistas.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdiniai vykdymai:&lt;br /&gt;
&lt;br /&gt;
 Pasakyk man skaičių: '''3'''&lt;br /&gt;
 3 yra nelyginis.&lt;br /&gt;
&lt;br /&gt;
 Pasakyk man skaičių: '''2'''&lt;br /&gt;
 2 yra lyginis.&lt;br /&gt;
&lt;br /&gt;
 Pasakyk man skaičių: '''3.4895'''&lt;br /&gt;
 3.4895 yra labai keistas.&lt;br /&gt;
&lt;br /&gt;
'''vidurkis1.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Prašo įvesti skaičių iki tol, kol įvedamas 0&lt;br /&gt;
# Išveda skaičių vidurkį&lt;br /&gt;
&lt;br /&gt;
kiekis = 0&lt;br /&gt;
suma = 0.0&lt;br /&gt;
skaicius = 1 # nurodomas tam, kad nebūtų iškart išeinama iš ciklo.&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Įvesk 0, kad sustabdytum ciklą&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
while skaicius != 0:&lt;br /&gt;
    skaicius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
    if skaicius != 0:&lt;br /&gt;
        kiekis = kiekis + 1&lt;br /&gt;
        suma = suma + skaicius &lt;br /&gt;
    if skaicius == 0:&lt;br /&gt;
        print(&amp;quot;Skaičių vidurkis yra:&amp;quot;, suma / kiekis)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdiniai vykdymai:&lt;br /&gt;
&lt;br /&gt;
 Įvesk 0, kad sustabdytum ciklą&lt;br /&gt;
 Įvesk skaičių: '''3'''&lt;br /&gt;
 Įvesk skaičių: '''5'''&lt;br /&gt;
 Įvesk skaičių: '''0'''&lt;br /&gt;
 Skaičių vidurkis yra: 4.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk 0, kad sustabdytum ciklą&lt;br /&gt;
 Įvesk skaičių: '''1'''&lt;br /&gt;
 Įvesk skaičių: '''4'''&lt;br /&gt;
 Įvesk skaičių: '''3'''&lt;br /&gt;
 Įvesk skaičių: '''0'''&lt;br /&gt;
 Skaičių vidurkis yra: 2.66666666667&lt;br /&gt;
&lt;br /&gt;
'''vidurkis2.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Prašo įvesti skaičių iki tol, kol bus įvestas tam tikras kiekis skaičių&lt;br /&gt;
# Išveda skaičių vidurkį.&lt;br /&gt;
&lt;br /&gt;
# Gali pastebėti, kad naudojame sveikąjį skaičių sekti, kiek numerių&lt;br /&gt;
# buvo įvesta, bet slankiojo kablelio skaičių, kiekvienam įvestam&lt;br /&gt;
# skaičiui sekti&lt;br /&gt;
suma = 0.0&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Ši programa paprašys įvesti kelis skaičius ir suskaičiuos jų vidurkį&amp;quot;)&lt;br /&gt;
kiekis = int(input(&amp;quot;Kelių skaičių vidurkį norėtum suskaičiuoti: &amp;quot;))&lt;br /&gt;
esamasis_kiekis = 0&lt;br /&gt;
&lt;br /&gt;
while esamasis_kiekis &amp;lt; kiekis:&lt;br /&gt;
    esamasis_kiekis = esamasis_kiekis + 1&lt;br /&gt;
    print(&amp;quot;Skaičius&amp;quot;, esamasis_kiekis)&lt;br /&gt;
    skaicius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
    suma = suma + skaicius &lt;br /&gt;
    &lt;br /&gt;
print(&amp;quot;Skaičių vidurkis yra:&amp;quot;, suma / kiekis)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdiniai vykdymai:&lt;br /&gt;
&lt;br /&gt;
 Ši programa paprašys įvesti kelis skaičius ir suskaičiuos jų vidurkį&lt;br /&gt;
 Kelių skaičių vidurkį norėtum suskaičiuoti: '''2'''&lt;br /&gt;
 Skaičius 1&lt;br /&gt;
 Įvesk skaičių: '''3'''&lt;br /&gt;
 Skaičius 2&lt;br /&gt;
 Įvesk skaičių: '''5'''&lt;br /&gt;
 Skaičių vidurkis yra: 4.0&lt;br /&gt;
&lt;br /&gt;
 Ši programa paprašys įvesti kelis skaičius ir suskaičiuos jų vidurkį&lt;br /&gt;
 Kelių skaičių vidurkį norėtum suskaičiuoti: '''3'''&lt;br /&gt;
 Skaičius 1&lt;br /&gt;
 Įvesk skaičių: '''1'''&lt;br /&gt;
 Skaičius 2&lt;br /&gt;
 Įvesk skaičių: '''4'''&lt;br /&gt;
 Skaičius 3&lt;br /&gt;
 Įvesk skaičių: '''3'''&lt;br /&gt;
 Skaičių vidurkis yra: 2.66666666667&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
Parašyk programą, kuri prašo naudotojo įvesti savo vardą. Jei jis įveda tavo vardą, išvesk „Tai puikus vardas“. Jei jie įveda &amp;quot;Jonas Jonaitis“ arba „Petras Petraitis“, išvesk kokį nors juokingą tekstą. Kitu atveju, išvesk „Tavo vardas yra labai gražus“.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
vardas = input(&amp;quot;Tavo vardas: &amp;quot;)&lt;br /&gt;
if vardas == 'Lukas':&lt;br /&gt;
    print(&amp;quot;Tai puikus vardas.&amp;quot;)&lt;br /&gt;
elif vardas == 'Jonas Jonaitis':&lt;br /&gt;
    print(&amp;quot;... juokingas tekstas apie Joną.&amp;quot;)&lt;br /&gt;
elif vardas == 'Petras Petraitis':&lt;br /&gt;
    print(&amp;quot;... juokingas tekstas apie Petrą.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Tavo vardas yra labai gražus.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Pakeisk aukščiau esančią „daugiau_maziau.py“ programą, kad ji papildomai skaičiuotų, kiek kartų naudotojas įvedė neteisingą skaičių. Jei taip nutiko daugiau, nei tris kartus, programos pabaigoje išvesk „Tai buvo sudėtinga.“, o kitu atveju - „Gerai padirbėjai!“&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaicius = 7&lt;br /&gt;
spejimas = -1&lt;br /&gt;
kiekis = 0&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Atspėk skaičių!&amp;quot;)&lt;br /&gt;
while spejimas != skaicius:&lt;br /&gt;
    spejimas = int(input(&amp;quot;Ar tai yra... &amp;quot;))&lt;br /&gt;
    kiekis = kiekis + 1&lt;br /&gt;
    if spejimas == skaicius:&lt;br /&gt;
        print(&amp;quot;Valio! Atspėjai teisingai!&amp;quot;)&lt;br /&gt;
    elif spejimas &amp;lt; skaicius:&lt;br /&gt;
        print(&amp;quot;Skaičius yra didesnis...&amp;quot;)&lt;br /&gt;
    elif spejimas &amp;gt; skaicius:&lt;br /&gt;
        print(&amp;quot;Skaičius yra ne toks didelis.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if kiekis &amp;gt; 3:&lt;br /&gt;
    print(&amp;quot;Tai buvo sudėtinga.&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Gerai padirbėjai!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Parašyk programą, kuri prašo įvesti du skaičius. Jei skaičių suma yra didesnė nei 100, išvesk „Tai yra didelis skaičius“.&lt;br /&gt;
&lt;br /&gt;
{{Solution|title=Sprendimas|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaicius1 = float(input(&amp;quot;Pirmas skaičius: &amp;quot;))&lt;br /&gt;
skaicius2 = float(input(&amp;quot;Antras skaičius: &amp;quot;))&lt;br /&gt;
if skaicius1 + skaicius2 &amp;gt; 100:&lt;br /&gt;
    print(&amp;quot;Skaičių suma yra didelis skaičius.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Count to 10 |next=Debugging}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3557</id>
		<title>Python Vadovėlis/Rekursija</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursija&amp;diff=3557"/>
		<updated>2021-11-17T17:54:47Z</updated>

		<summary type="html">&lt;p&gt;ZivileB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Rekursija ==&lt;br /&gt;
&lt;br /&gt;
Python'o programoje rekursinė funkcija yra funkcija, kuri iškviečia pati save.&lt;br /&gt;
&lt;br /&gt;
=== Įvadas į rekursiją ===&lt;br /&gt;
&lt;br /&gt;
Iki šiol Python'o programoje matėme funkcijas, kurios iškviečia kitas funkcijas. Tačiau funkcija gali iškviesti ir pati save. Pažvelkime į paprastą pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
&lt;br /&gt;
sk = 0&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
def skaitliukas(sk):&lt;br /&gt;
    print(sk)&lt;br /&gt;
    sk+= 1&lt;br /&gt;
    skaitliukas(sk)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jei šią programą paleistum IDLE kodo redaktoriuje, ji veiktų amžinai. Vienintelis būdas sustabdyti ciklą būtų nutraukti vykdymą paspausdami Ctrl + C klaviatūroje. Tai yra begalinės rekursijos pavyzdys. (Kai kurie naudotojai pranešė apie esamos IDLE kodo redaktoriaus sistemos gedimą, dėl kurio Ctrl + C iškelta išimtis taip pat pradeda veikti. Jei taip nutinka, paspausk Ctrl + F6 ir IDLE kodo redaktoriaus terminalas turėtų pasileisti iš naujo.)&lt;br /&gt;
&lt;br /&gt;
Galima ginčytis, kad rekursija yra tik dar vienas būdas atlikti tą patį dalyką kaip ir naudojant ciklą. Kai kuriais atvejais tai yra visiškai teisinga. Tačiau yra ir kitų rekursijos naudojimo būdų, kurie yra labai tinkami, o  &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; ciklai gali būti ne pats geriausias variantas.&lt;br /&gt;
&lt;br /&gt;
Rekursiją gali būti valdoma, kaip ir ciklai. Pažvelk į valdomo ciklo pavyzdį.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Mitchell Aikens programa&lt;br /&gt;
# Nėra autorinių teisių&lt;br /&gt;
# 2010&lt;br /&gt;
def main():&lt;br /&gt;
    ciklosk= int(input(&amp;quot;Kiek kartų norėtum paleisti ciklą?\n&amp;quot;))&lt;br /&gt;
    skaitliukas = 1&lt;br /&gt;
    recurr(ciklosk,skaitliukas)&lt;br /&gt;
&lt;br /&gt;
def recurr(ciklosk,skaitliukas):&lt;br /&gt;
    if ciklosk&amp;gt; 0:&lt;br /&gt;
        print(&amp;quot;Tai yra ciklo iteracija&amp;quot;,skaitliukas)&lt;br /&gt;
        recurr(ciklosk- 1,skaitliukas + 1)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Ciklas yra pabaigtas.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aukščiau naudojami argumentai/parametrai rekursijų skaičiui valdyti. Tiesiog naudok tai, ką jau žinai apie funkcijas, ir sek programos eigą. Tai paprasta išsiaiškinti. Jei kyla problemų, grįžk į [[Non-Programmer's Tutorial for Python 3/Advanced Functions Example]].&lt;br /&gt;
&lt;br /&gt;
== Praktiniai rekursijos pritaikymai ==&lt;br /&gt;
&lt;br /&gt;
Dažnai rekursija yra studijuojama pažengusiu informatikos lygiu. Rekursija dažniausiai naudojama sprendžiant sudėtingas problemas, kurias galima suskirstyti į mažesnes, identiškas problemas. Norint išspręsti problemą, rekursija nebūtina. Problemos, kurias galima išspręsti naudojant rekursiją, greičiausiai gali būti išspręstos ir su ciklais. Be to, ciklas gali būti efektyvesnis nei rekursinė funkcija. Rekursinėms funkcijoms reikia daugiau atminties ir išteklių nei ciklams, todėl daugeliu atvejų jos yra mažiau efektyvios. Šis naudojimo reikalavimas kartais vadinamas &amp;lt;i&amp;gt;overhead&amp;lt;/i&amp;gt;.&lt;br /&gt;
Galbūt galvoji: „Na, kam nerimauti su rekursija. Aš tiesiog naudosiu ciklą. Aš jau žinau, kaip sudaryti ciklą, ir tai yra daug daugiau darbo.“ Ši mintis suprantama, bet ne visai ideali. Sprendžiant sudėtingas problemas, rekursinę funkciją kartais lengviau, greičiau ir paprasčiau sukurti bei programuoti.&lt;br /&gt;
&lt;br /&gt;
Pagalvokite apie šias dvi „taisykles“:&lt;br /&gt;
* Jei galiu išspręsti problemą dabar, be rekursijos, funkcija tiesiog grąžina reikšmę.&lt;br /&gt;
* Jei negaliu išspręsti problemos dabar be rekursijos, funkcija sumažina problemą iki mažesnio ir panašaus ir pakviečia pati save, kad išspręstų problemą.&lt;br /&gt;
&lt;br /&gt;
Taikyk tai naudojant bendrą matematinę sąvoką – faktorialus. Jei nesi susipažinęs su matematikos faktoriais, skaityk: [https://lt.wikipedia.org/wiki/Faktorialas Faktorialas]&lt;br /&gt;
 &lt;br /&gt;
Skaičiaus faktorialas &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;, yra žymimas kaip &amp;lt;i&amp;gt;n!&amp;lt;/i&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Štai keletas pagrindinių faktorialų taisyklių:&lt;br /&gt;
&lt;br /&gt;
Jei n = 0 tai n! = 1&lt;br /&gt;
&lt;br /&gt;
Jei n &amp;gt; 0 tai n! = 1 x 2 x 3 x ... x n&lt;br /&gt;
&lt;br /&gt;
Pavyzdžiui, pažiūrėk į skaičiaus 9 faktorialą.&lt;br /&gt;
&lt;br /&gt;
9! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9&lt;br /&gt;
&lt;br /&gt;
Pažiūrėk į programą, kuri rekursijos metodu apskaičiuoja bet kurio vartotojo įvesto skaičiaus faktorialą.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    sk = int(input(&amp;quot;Įvesk neneigiamą sveikąjį skaičių.\n&amp;quot;))&lt;br /&gt;
    fact = factorialas(sk)&lt;br /&gt;
    print(&amp;quot;Skaičiaus &amp;quot;,sk,&amp;quot; faktorialas yra &amp;quot;,fact)&lt;br /&gt;
&lt;br /&gt;
def factorialas(sk):&lt;br /&gt;
    if sk== 0:&lt;br /&gt;
        return  1&lt;br /&gt;
    else:&lt;br /&gt;
        return sk* factorialas(sk- 1)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rekursija taip pat naudinga išplėstinėje temoje, vadinamoje generatoriais. Norint sugeneruoti serijas 1,2,1,3,1,2,1,4,1,2... reikės šio kodo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def beprotiškas(min_):&lt;br /&gt;
    yield min_&lt;br /&gt;
    g=beprotiškas(min_+1)&lt;br /&gt;
    while True:&lt;br /&gt;
        yield next(g)&lt;br /&gt;
        yield min_&lt;br /&gt;
&lt;br /&gt;
i=beprotiškas(1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
norint gauti kitą elementą, iškiviestum next(i)&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Dealing with the imperfect |next=Intro to Object Oriented Programming in Python 3}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>ZivileB</name></author>
	</entry>
</feed>