<?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=LauraK</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=LauraK"/>
	<link rel="alternate" type="text/html" href="https://wiki.angis.net/w/Specialus:Ind%C4%97lis/LauraK"/>
	<updated>2026-05-03T09:13:07Z</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/S%C4%85ra%C5%A1ai&amp;diff=4119</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=4119"/>
		<updated>2022-07-20T07:32:32Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Sąrašų rūšiavimas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Rekursinės funkcijos |next=Ciklai For}}&lt;br /&gt;
{{BookCat}}&lt;br /&gt;
&lt;br /&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 šia eilute &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 viena komanda parašyta per dvi eilutes; paprastai keliant eilutę yra naudojamas simbolis / tačiau šiuo atveju jis nėra būtinas, nes Python'as supranta, kad viskas, kas yra laužtiniuose skliaustuose yra 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;
Sąlyginis sakinys &amp;lt;code&amp;gt; if 1 &amp;lt;= kuris &amp;lt;= 12:&amp;lt;/code&amp;gt; tikrina, ar skaičius kintamajame &amp;lt;code&amp;gt;kuris&amp;lt;/code&amp;gt; yra tarp vieno ir dvylikos imtinai (tiek yra mėnesių ir taip jie numeruojami).&lt;br /&gt;
&lt;br /&gt;
Viename sąraše gali būti saugomi ir skirtingų tipų duomenys. Kiekvienas elementas saugo vis kitą reikšmę. Pavyzdžiui, sąrašas sukurtas š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;
!elemento 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 elementas pasiekiamas per jo eilės numerį – indeksą, todėl komanda &amp;lt;code&amp;gt;demoSąrašas[0]&amp;lt;/code&amp;gt; pateiktų reikšmę: &amp;lt;code&amp;gt;&amp;quot;gyvybė&amp;quot;&amp;lt;/code&amp;gt;, o komanda &amp;lt;code&amp;gt;demoSąrašas[1]&amp;lt;/code&amp;gt; – reikšmę &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; pateikia reikšmę &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ą pats sugebėsi parašyti, 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 rasi daug 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ų, įvykdyk komandą &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 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 vienetu, kol pasiekia paskutinį sąrašo indeksą. Tuo tarpu &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; komanda 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;
|grąžina 2 sąrašo demoSąrašas elementą&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;demoSąrašas[2] = 3&amp;lt;/code&amp;gt; &lt;br /&gt;
|į sąrašo demoSąrašas 2 poziciją (numeruojama nuo 0) įrašo reikšmę 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 sąrašo demoSąrašas elementą, esantį 2 pozicijoje&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; sąrašo ilgį, t.y. elementų skaičių&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 reikš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;
Pavyzdžiai, kur praktiškai naudojamos šios funkcijos:&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;, tai reiškia sąrašas tuščias.&lt;br /&gt;
&lt;br /&gt;
Toliau po kelių eilučių matysi sakinį &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 surastų &amp;lt;code&amp;gt;elementoIndeksas&amp;lt;/code&amp;gt; ir tada įdėtų &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;
&lt;br /&gt;
=== Sąrašų rūšiavimas ===&lt;br /&gt;
&lt;br /&gt;
Dažnai pasitaikanti užduotis su sąrašais - jų rūšiavimas. Paprastų sąrašų, kurie yra sudaryti iš skaičių ar eilučių, rūšiavimui gali naudoti funkciją &amp;lt;code&amp;gt;sort&amp;lt;/code&amp;gt;, kuri buvo paminėta anksčiau šiame skyriuje. Tačiau gali susidurti su situacijomis, kai ši funkcija yra nepakankama. Egzistuoja daug rūšiavimo algoritmų, tačiau čia išmoksi vieną paprasčiausių iš jų - burbuliuko algoritmą (angl. bubble sort).&lt;br /&gt;
&lt;br /&gt;
Algoritmo idėja yra tokia, kad iš kairės į dešinę lyginame gretimų elementų poras ir sukeičiame elementus vietomis, jei pirmasis yra didesnis už antrąjį. Kiekvienos iteracijos metu, didžiausias nesurūšiuotas elementas juda link sąrašo galo. Toks judėjimas primena burbuliukų vandenyje judėjimą į paviršių, iš ko ir kilo algoritmo pavadinimas. Iteracijos kartojamos tol, kol visi elementai yra savo vietose.&lt;br /&gt;
&lt;br /&gt;
Pavyzdžiui, surūšiuokime jau prieš tai naudotą sąrašą [42, 7, 0, 123].&lt;br /&gt;
&lt;br /&gt;
'''Pirma iteracija:'''&lt;br /&gt;
&lt;br /&gt;
	['''42''', '''7''', 0, 123] -&amp;gt; ['''7''', '''42''', 0, 123] Lyginami pirmi du elementai. Antrasis yra didesnis už pirmąjį, todėl elementai pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[7, '''42''', '''0''', 123] -&amp;gt; [7, '''0''', '''42''', 123] Lyginami antras ir trečias elementai. Trečiasis yra didesnis už antrąjį, todėl elementai pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[7, 0, '''42''', '''123'''] -&amp;gt; [7, 0, '''42''', '''123'''] Lyginami paskutiniai du elementai. Jie yra išdėstyti tinkamai, todėl nėra pakeičiami vietomis.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
'''Antra iteracija:'''&lt;br /&gt;
&lt;br /&gt;
	['''7''', '''0''', 42, 123] -&amp;gt; ['''0''', '''7''', 42, 123] Lyginami pirmi du elementai. Antrasis yra didesnis už pirmąjį, todėl elementai pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[0, '''7''', '''42''', 123] -&amp;gt; [0, '''7''', '''42''', 123] Lyginami antras ir trečias elementai. Jie yra išdėstyti tinkamai, todėl nėra pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[0, 7, '''42''', '''123'''] -&amp;gt; [0, 7, '''42''', '''123'''] Lyginami paskutiniai du elementai. Jie yra išdėstyti tinkamai, todėl nėra pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
'''Trečia iteracija:'''&lt;br /&gt;
&lt;br /&gt;
	['''0''', '''7''', 42, 123] -&amp;gt; ['''0''', '''7''', 42, 123] Elementai išdėstyti tinkamai.&lt;br /&gt;
&lt;br /&gt;
	[0, '''7''', '''42''', 123] -&amp;gt; [0, '''7''', '''42''', 123] Elementai išdėstyti tinkamai.&lt;br /&gt;
&lt;br /&gt;
	[0, 7, '''42''', '''123'''] -&amp;gt; [0, 7, '''42''', '''123'''] Elementai išdėstyti tinkamai.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
Trečios iteracijos metu algoritmas neatlieka jokių pakeitimų, tad nustatoma, kad sąrašas yra surūšiuotas, algoritmas baigtas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Algoritmo kodą galima užrašyti taip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def burbuliukoRūšiavimas(sąrašas):&lt;br /&gt;
    sąrašoIlgis = len(sąrašas)&lt;br /&gt;
    # Maksimalus iteracijų skaičius - sąrašo ilgis - 1 elementas&lt;br /&gt;
    for i in range(sąrašoIlgis  - 1): &lt;br /&gt;
        arBuvoPakeitimų = 0&lt;br /&gt;
        # Kiekvienoje iteracijoje lyginami visi elementai&lt;br /&gt;
        for j in range(sąrašoIlgis - 1): &lt;br /&gt;
            if sąrašas[j] &amp;gt; sąrašas[j + 1]:&lt;br /&gt;
                # Sukuriame laikiną elementą, kuris saugo pirmąjį lyginamą elementą&lt;br /&gt;
                laikinasElementas = sąrašas[j]&lt;br /&gt;
                # Pirmąjam elementui priskiriame antro elemento reikšmę&lt;br /&gt;
                sąrašas[j] = sąrašas[j + 1]&lt;br /&gt;
                # Antrajam elementui priskiriame laikino elemento reikšmę, kuri yra lygi buvusiam pirmąjam elementui&lt;br /&gt;
                sąrašas[j + 1] = laikinasElementas&lt;br /&gt;
                # Pasižymime, kad iteracijos metu buvo padaryti pakeitimai, taigi reikės papildomų iteracijų&lt;br /&gt;
                arBuvoPakeitimų = 1&lt;br /&gt;
        # Jei visos iteracijos metu nebuvo nei vieno pakeitimo, algoritmas baigiamas&lt;br /&gt;
        if arBuvoPakeitimų == 0:&lt;br /&gt;
            break&lt;br /&gt;
    return sąrašas&lt;br /&gt;
&lt;br /&gt;
rezultatas = burbuliukoRūšiavimas([42, 7, 0, 123])&lt;br /&gt;
&lt;br /&gt;
print (rezultatas)&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Programos išvestis: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[0, 7, 42, 123]&lt;br /&gt;
&amp;lt;/code&amp;gt;&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 [[Vadovėlis/Loginiai reiškiniai|Loginiai reiškiniai]]).&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;
&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;
{| 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;
## Š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;
&lt;br /&gt;
{{navigation |previous=Rekursinės funkcijos |next=Ciklai For}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/S%C4%85ra%C5%A1ai&amp;diff=4118</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=4118"/>
		<updated>2022-07-20T07:30:15Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Sąrašų rūšiavimas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Rekursinės funkcijos |next=Ciklai For}}&lt;br /&gt;
{{BookCat}}&lt;br /&gt;
&lt;br /&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 šia eilute &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 viena komanda parašyta per dvi eilutes; paprastai keliant eilutę yra naudojamas simbolis / tačiau šiuo atveju jis nėra būtinas, nes Python'as supranta, kad viskas, kas yra laužtiniuose skliaustuose yra 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;
Sąlyginis sakinys &amp;lt;code&amp;gt; if 1 &amp;lt;= kuris &amp;lt;= 12:&amp;lt;/code&amp;gt; tikrina, ar skaičius kintamajame &amp;lt;code&amp;gt;kuris&amp;lt;/code&amp;gt; yra tarp vieno ir dvylikos imtinai (tiek yra mėnesių ir taip jie numeruojami).&lt;br /&gt;
&lt;br /&gt;
Viename sąraše gali būti saugomi ir skirtingų tipų duomenys. Kiekvienas elementas saugo vis kitą reikšmę. Pavyzdžiui, sąrašas sukurtas š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;
!elemento 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 elementas pasiekiamas per jo eilės numerį – indeksą, todėl komanda &amp;lt;code&amp;gt;demoSąrašas[0]&amp;lt;/code&amp;gt; pateiktų reikšmę: &amp;lt;code&amp;gt;&amp;quot;gyvybė&amp;quot;&amp;lt;/code&amp;gt;, o komanda &amp;lt;code&amp;gt;demoSąrašas[1]&amp;lt;/code&amp;gt; – reikšmę &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; pateikia reikšmę &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ą pats sugebėsi parašyti, 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 rasi daug 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ų, įvykdyk komandą &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 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 vienetu, kol pasiekia paskutinį sąrašo indeksą. Tuo tarpu &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; komanda 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;
|grąžina 2 sąrašo demoSąrašas elementą&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;demoSąrašas[2] = 3&amp;lt;/code&amp;gt; &lt;br /&gt;
|į sąrašo demoSąrašas 2 poziciją (numeruojama nuo 0) įrašo reikšmę 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 sąrašo demoSąrašas elementą, esantį 2 pozicijoje&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; sąrašo ilgį, t.y. elementų skaičių&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 reikš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;
Pavyzdžiai, kur praktiškai naudojamos šios funkcijos:&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;, tai reiškia sąrašas tuščias.&lt;br /&gt;
&lt;br /&gt;
Toliau po kelių eilučių matysi sakinį &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 surastų &amp;lt;code&amp;gt;elementoIndeksas&amp;lt;/code&amp;gt; ir tada įdėtų &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;
&lt;br /&gt;
=== Sąrašų rūšiavimas ===&lt;br /&gt;
&lt;br /&gt;
Dažnai pasitaikanti užduotis su sąrašais - jų rūšiavimas. Paprastų sąrašų, kurie yra sudaryti iš skaičių ar eilučių, rūšiavimui gali naudoti funkciją &amp;lt;code&amp;gt;sort&amp;lt;/code&amp;gt;, kuri buvo paminėta anksčiau šiame skyriuje. Tačiau gali susidurti su situacijomis, kai ši funkcija yra nepakankama. Egzistuoja daug rūšiavimo algoritmų, tačiau čia išmoksi vieną paprasčiausių iš jų - burbuliuko algoritmą (angl. bubble sort).&lt;br /&gt;
&lt;br /&gt;
Algoritmo idėja yra tokia, kad iš kairės į dešinę lyginame gretimų elementų poras ir sukeičiame elementus vietomis, jei pirmasis yra didesnis už antrąjį. Kiekvienos iteracijos metu, didžiausias nesurūšiuotas elementas juda link sąrašo galo. Toks judėjimas primena burbuliukų vandenyje judėjimą į paviršių, iš ko ir kilo algoritmo pavadinimas. Iteracijos kartojamos tol, kol visi elementai yra savo vietose.&lt;br /&gt;
&lt;br /&gt;
Pavyzdžiui, surūšiuokime jau prieš tai naudotą sąrašą [42, 7, 0, 123].&lt;br /&gt;
&lt;br /&gt;
'''Pirma iteracija:'''&lt;br /&gt;
&lt;br /&gt;
	['''42''', '''7''', 0, 123] -&amp;gt; ['''7''', '''42''', 0, 123] Lyginami pirmi du elementai. Antrasis yra didesnis už pirmąjį, todėl elementai pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[7, '''42''', '''0''', 123] -&amp;gt; [7, '''0''', '''42''', 123] Lyginami antras ir trečias elementai. Trečiasis yra didesnis už antrąjį, todėl elementai pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[7, 0, '''42''', '''123'''] -&amp;gt; [7, 0, '''42''', '''123'''] Lyginami paskutiniai du elementai. Jie yra išdėstyti tinkamai, todėl nėra pakeičiami vietomis.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
'''Antra iteracija:'''&lt;br /&gt;
&lt;br /&gt;
	['''7''', '''0''', 42, 123] -&amp;gt; ['''0''', '''7''', 42, 123] Lyginami pirmi du elementai. Antrasis yra didesnis už pirmąjį, todėl elementai pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[0, '''7''', '''42''', 123] -&amp;gt; [0, '''7''', '''42''', 123] Lyginami antras ir trečias elementai. Jie yra išdėstyti tinkamai, todėl nėra pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[0, 7, '''42''', '''123'''] -&amp;gt; [0, 7, '''42''', '''123'''] Lyginami paskutiniai du elementai. Jie yra išdėstyti tinkamai, todėl nėra pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
'''Trečia iteracija:'''&lt;br /&gt;
&lt;br /&gt;
	['''0''', '''7''', 42, 123] -&amp;gt; ['''0''', '''7''', 42, 123] Elementai išdėstyti tinkamai.&lt;br /&gt;
&lt;br /&gt;
	[0, '''7''', '''42''', 123] -&amp;gt; [0, '''7''', '''42''', 123] Elementai išdėstyti tinkamai.&lt;br /&gt;
&lt;br /&gt;
	[0, 7, '''42''', '''123'''] -&amp;gt; [0, 7, '''42''', '''123'''] Elementai išdėstyti tinkamai.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
Trečios iteracijos metu algoritmas neatlieka jokių pakeitimų, tad nustatoma, kad sąrašas yra surūšiuotas, algoritmas baigtas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Algoritmo kodą galima užrašyti taip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def burbuliukoRūšiavimas(sąrašas):&lt;br /&gt;
    sąrašoIlgis = len(sąrašas)&lt;br /&gt;
    # Maksimalus iteracijų skaičius - sąrašo ilgis - 1 elementas&lt;br /&gt;
    for i in range(sąrašoIlgis  - 1): &lt;br /&gt;
        arBuvoPakeitimų = 0&lt;br /&gt;
        # Kiekvienoje iteracijoje lyginami visi elementai&lt;br /&gt;
        for j in range(sąrašoIlgis - 1): &lt;br /&gt;
            if sąrašas[j] &amp;gt; sąrašas[j + 1]:&lt;br /&gt;
                # Sukuriame laikiną elementą, kuris saugo pirmąjį lyginamą elementą&lt;br /&gt;
                laikinasElementas = sąrašas[j]&lt;br /&gt;
                # Pirmąjam elementui priskiriame antro elemento reikšmę&lt;br /&gt;
                sąrašas[j] = sąrašas[j + 1]&lt;br /&gt;
                # Antrajam elementui priskiriame laikino elemento reikšmę, kuri yra lygi buvusiam pirmąjam elementui&lt;br /&gt;
                sąrašas[j + 1] = laikinasElementas&lt;br /&gt;
                # Pasižymime, kad iteracijos metu buvo padaryti pakeitimai, taigi reikės papildomų iteracijų&lt;br /&gt;
                arBuvoPakeitimų = 1&lt;br /&gt;
        # Jei visos iteracijos metu nebuvo nei vieno pakeitimo, algoritmas baigiamas&lt;br /&gt;
        if arBuvoPakeitimų == 0:&lt;br /&gt;
            break&lt;br /&gt;
    return sąrašas&lt;br /&gt;
&lt;br /&gt;
rezultatas = burbuliukoRūšiavimas([42, 7, 0, 123])&lt;br /&gt;
&lt;br /&gt;
print (rezultatas)&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pogramos išvestis: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[0, 7, 42, 123]&lt;br /&gt;
&amp;lt;/code&amp;gt;&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 [[Vadovėlis/Loginiai reiškiniai|Loginiai reiškiniai]]).&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;
&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;
{| 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;
## Š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;
&lt;br /&gt;
{{navigation |previous=Rekursinės funkcijos |next=Ciklai For}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/S%C4%85ra%C5%A1ai&amp;diff=4117</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=4117"/>
		<updated>2022-07-20T07:06:30Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Sąrašų rūšiavimas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Rekursinės funkcijos |next=Ciklai For}}&lt;br /&gt;
{{BookCat}}&lt;br /&gt;
&lt;br /&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 šia eilute &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 viena komanda parašyta per dvi eilutes; paprastai keliant eilutę yra naudojamas simbolis / tačiau šiuo atveju jis nėra būtinas, nes Python'as supranta, kad viskas, kas yra laužtiniuose skliaustuose yra 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;
Sąlyginis sakinys &amp;lt;code&amp;gt; if 1 &amp;lt;= kuris &amp;lt;= 12:&amp;lt;/code&amp;gt; tikrina, ar skaičius kintamajame &amp;lt;code&amp;gt;kuris&amp;lt;/code&amp;gt; yra tarp vieno ir dvylikos imtinai (tiek yra mėnesių ir taip jie numeruojami).&lt;br /&gt;
&lt;br /&gt;
Viename sąraše gali būti saugomi ir skirtingų tipų duomenys. Kiekvienas elementas saugo vis kitą reikšmę. Pavyzdžiui, sąrašas sukurtas š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;
!elemento 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 elementas pasiekiamas per jo eilės numerį – indeksą, todėl komanda &amp;lt;code&amp;gt;demoSąrašas[0]&amp;lt;/code&amp;gt; pateiktų reikšmę: &amp;lt;code&amp;gt;&amp;quot;gyvybė&amp;quot;&amp;lt;/code&amp;gt;, o komanda &amp;lt;code&amp;gt;demoSąrašas[1]&amp;lt;/code&amp;gt; – reikšmę &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; pateikia reikšmę &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ą pats sugebėsi parašyti, 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 rasi daug 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ų, įvykdyk komandą &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 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 vienetu, kol pasiekia paskutinį sąrašo indeksą. Tuo tarpu &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; komanda 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;
|grąžina 2 sąrašo demoSąrašas elementą&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;demoSąrašas[2] = 3&amp;lt;/code&amp;gt; &lt;br /&gt;
|į sąrašo demoSąrašas 2 poziciją (numeruojama nuo 0) įrašo reikšmę 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 sąrašo demoSąrašas elementą, esantį 2 pozicijoje&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; sąrašo ilgį, t.y. elementų skaičių&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 reikš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;
Pavyzdžiai, kur praktiškai naudojamos šios funkcijos:&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;, tai reiškia sąrašas tuščias.&lt;br /&gt;
&lt;br /&gt;
Toliau po kelių eilučių matysi sakinį &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 surastų &amp;lt;code&amp;gt;elementoIndeksas&amp;lt;/code&amp;gt; ir tada įdėtų &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;
&lt;br /&gt;
=== Sąrašų rūšiavimas ===&lt;br /&gt;
&lt;br /&gt;
Dažnai pasitaikanti užduotis su sąrašais - jų rūšiavimas. Paprastų sąrašų, kurie yra sudaryti iš skaičių ar eilučių, rūšiavimui gali naudoti funkciją &amp;lt;code&amp;gt;sort&amp;lt;/code&amp;gt;, kuri buvo paminėta anksčiau šiame skyriuje. Tačiau gali susidurti su situacijomis, kai ši funkcija yra nepakankama. Egzistuoja daug rūšiavimo algoritmų, tačiau čia išmoksi vieną paprasčiausių iš jų - burbuliuko algoritmą (angl. bubble sort).&lt;br /&gt;
&lt;br /&gt;
Algoritmo idėja yra tokia, kad iš kairės į dešinę lyginame gretimų elementų poras ir sukeičiame elementus vietomis, jei pirmasis yra didesnis už antrąjį. Kiekvienos iteracijos metu, didžiausias nesurūšiuotas elementas juda link sąrašo galo. Toks judėjimas primena burbuliukų vandenyje judėjimą į paviršių, iš ko ir kilo algoritmo pavadinimas. Iteracijos kartojamos tol, kol visi elementai yra savo vietose.&lt;br /&gt;
&lt;br /&gt;
Pavyzdžiui, surūšiuokime jau prieš tai naudotą sąrašą [42, 7, 0, 123].&lt;br /&gt;
&lt;br /&gt;
Pirma iteracija:&lt;br /&gt;
&lt;br /&gt;
	['''42''', '''7''', 0, 123] -&amp;gt; ['''7''', '''42''', 0, 123] Lyginami pirmi du elementai. Antrasis yra didesnis už pirmąjį, todėl elementai pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[7, '''42''', '''0''', 123] -&amp;gt; [7, '''0''', '''42''', 123] Lyginami antras ir trečias elementai. Trečiasis yra didesnis už antrąjį, todėl elementai pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[7, 0, '''42''', '''123'''] -&amp;gt; [7, 0, '''42''', '''123'''] Lyginami paskutiniai du elementai. Jie yra išdėstyti tinkamai, todėl nėra pakeičiami vietomis.&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
Antra iteracija:&lt;br /&gt;
&lt;br /&gt;
	['''7''', '''0''', 42, 123] -&amp;gt; ['''0''', '''7''', 42, 123] Lyginami pirmi du elementai. Antrasis yra didesnis už pirmąjį, todėl elementai pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[0, '''7''', '''42''', 123] -&amp;gt; [0, '''7''', '''42''', 123] Lyginami antras ir trečias elementai. Jie yra išdėstyti tinkamai, todėl nėra pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	[0, 7, '''42''', '''123'''] -&amp;gt; [0, 7, '''42''', '''123'''] Lyginami paskutiniai du elementai. Jie yra išdėstyti tinkamai, todėl nėra pakeičiami vietomis.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
Trečia iteracija:&lt;br /&gt;
&lt;br /&gt;
	['''0''', '''7''', 42, 123] -&amp;gt; ['''0''', '''7''', 42, 123] Elementai išdėstyti tinkamai.&lt;br /&gt;
&lt;br /&gt;
	[0, '''7''', '''42''', 123] -&amp;gt; [0, '''7''', '''42''', 123] Elementai išdėstyti tinkamai.&lt;br /&gt;
&lt;br /&gt;
	[0, 7, '''42''', '''123'''] -&amp;gt; [0, 7, '''42''', '''123'''] Elementai išdėstyti tinkamai.&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
Trečios iteracijos metu algoritmas neatlieka jokių pakeitimų, tad nustatoma, kad sąrašas yra surūšiuotas, algoritmas baigtas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Algoritmo kodą galima užrašyti taip:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def burbuliukoRūšiavimas(sąrašas):&lt;br /&gt;
    sąrašoIlgis = len(sąrašas)&lt;br /&gt;
    # Maksimalus iteracijų skaičius - sąrašo ilgis - 1 elementas&lt;br /&gt;
    for i in range(sąrašoIlgis  - 1): &lt;br /&gt;
        arBuvoPakeitimų = 0&lt;br /&gt;
        # Kiekvienoje iteracijoje lyginami visi elementai&lt;br /&gt;
        for j in range(sąrašoIlgis - 1): &lt;br /&gt;
            if sąrašas[j] &amp;gt; sąrašas[j + 1]:&lt;br /&gt;
                # Sukuriame laikiną elementą, kuris saugo pirmąjį lyginamą elementą&lt;br /&gt;
                laikinasElementas = sąrašas[j]&lt;br /&gt;
                # Pirmąjam elementui priskiriame antro elemento reikšmę&lt;br /&gt;
                sąrašas[j] = sąrašas[j + 1]&lt;br /&gt;
                # Antrajam elementui priskiriame laikino elemento reikšmę, kuri yra lygi buvusiam pirmąjam elementui&lt;br /&gt;
                sąrašas[j + 1] = laikinasElementas&lt;br /&gt;
                # Pasižymime, kad iteracijos metu buvo padaryti pakeitimai, taigi reikės papildomų iteracijų&lt;br /&gt;
                arBuvoPakeitimų = 1&lt;br /&gt;
        # Jei visos iteracijos metu nebuvo nei vieno pakeitimo, algoritmas baigiamas&lt;br /&gt;
        if arBuvoPakeitimų == 0:&lt;br /&gt;
            break&lt;br /&gt;
    return sąrašas&lt;br /&gt;
&lt;br /&gt;
rezultatas = burbuliukoRūšiavimas([42, 7, 0, 123])&lt;br /&gt;
&lt;br /&gt;
print (rezultatas)&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pogramos išvestis: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[0, 7, 42, 123]&lt;br /&gt;
&amp;lt;/code&amp;gt;&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 [[Vadovėlis/Loginiai reiškiniai|Loginiai reiškiniai]]).&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;
&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;
{| 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;
## Š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;
&lt;br /&gt;
{{navigation |previous=Rekursinės funkcijos |next=Ciklai For}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Loginiai_rei%C5%A1kiniai&amp;diff=3927</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=3927"/>
		<updated>2022-04-07T11:37:09Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Ciklai For |next=Žodynai}}&lt;br /&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; (Klaidinga) arba &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; (Teisinga), 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 sutrumpintos grandies įvertinimas (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: Gyvenimas&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) and 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 reiškinys gali sukelti klaidą. Aš panaudojau pirmąjį reiškinį (&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;
Loginiai operatoriai gali būti naudojami, 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;
{| 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;
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>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Loginiai_rei%C5%A1kiniai&amp;diff=3926</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=3926"/>
		<updated>2022-04-07T06:06:18Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Ciklai For |next=Žodynai}}&lt;br /&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; (Klaidinga) arba &amp;lt;code&amp;gt;True&amp;lt;/code&amp;gt; (Teisinga), 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: Gyvenimas&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) and 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 reiškinys gali sukelti klaidą. Aš panaudojau pirmąjį reiškinį (&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;
Loginiai operatoriai gali būti naudojami, 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;
{| 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;
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>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Loginiai_rei%C5%A1kiniai&amp;diff=3925</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=3925"/>
		<updated>2022-04-07T06:05:13Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Ciklai For |next=Žodynai}}&lt;br /&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(Teisinga)&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;False(Klaidinga)&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: Gyvenimas&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) and 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 reiškinys gali sukelti klaidą. Aš panaudojau pirmąjį reiškinį (&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;
Loginiai operatoriai gali būti naudojami, 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;
{| 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;
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>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Loginiai_rei%C5%A1kiniai&amp;diff=3924</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=3924"/>
		<updated>2022-04-07T05:54:11Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Ciklai For |next=Žodynai}}&lt;br /&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: Gyvenimas&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) and 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 reiškinys gali sukelti klaidą. Aš panaudojau pirmąjį reiškinį (&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;
Loginiai operatoriai gali būti naudojami, 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;
{| 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;
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>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=3900</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=3900"/>
		<updated>2022-03-14T09:27:05Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Funkcijų apibrėžimas |next=Sąrašai}}&lt;br /&gt;
&lt;br /&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;
    reikšmė = a + lik&lt;br /&gt;
    return reikšmė&lt;br /&gt;
rezultatas = daug(3, 2)&lt;br /&gt;
print(&amp;quot;3 * 2 = &amp;quot;, rezultatas)&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 (reikia 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 daugybos funkcija:&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;
    reikšmė = a + lik &lt;br /&gt;
    return reikšmė&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Ši funkcija paima du parametrus ir grąžina reikšmę. Vėliau šią funkciją galima bus iškviesti.&lt;br /&gt;
; Kas nutinka toliau?  &lt;br /&gt;
: Vykdoma kita eilutė einanti po funkcijos &amp;lt;code&amp;gt;rezultatas = daug(3, 2)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Ši eilutė priskiria funkcijos &amp;lt;code&amp;gt;daug(3, 2)&amp;lt;/code&amp;gt; grąžinamą reikšmę kintamajam &amp;lt;code&amp;gt;rezultatas&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 sąlygos rezultatas 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;
: Dabar kintamajam &amp;lt;code&amp;gt;lik&amp;lt;/code&amp;gt; priskiriam funkcijos &amp;lt;code&amp;gt;daug(3, 0)&amp;lt;/code&amp;gt; reikšmė.&lt;br /&gt;
; Kokia š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 į tą vietą, kur ji buvo iškviesta.&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; grąžina 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 reikšmė yra 0.&lt;br /&gt;
; Kurią eilutę kompiuteris skaito po to?&lt;br /&gt;
: Toliau vykdoma eilutė &amp;lt;code&amp;gt;reikšmė = 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;reikšmė = 3&amp;lt;/code&amp;gt;. &lt;br /&gt;
; Kas nutinka toliau?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;return reikšmė&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;reikšmė = a + lik&amp;lt;/code&amp;gt; priskiria kintamajam &amp;lt;code&amp;gt;reikšmė&amp;lt;/code&amp;gt; reikšmę &amp;lt;code&amp;gt;3 + 3&amp;lt;/code&amp;gt; arba 6.  &lt;br /&gt;
; Kas įvyksta toliau?&lt;br /&gt;
: Pradedama vykdyti kita eilutė, kuri grąžina 6 iš funkcijos. Tuomet grįžtame prie eilutės &amp;lt;code&amp;gt;rezultatas = daug(3, 2)&amp;lt;/code&amp;gt;, kur kintamajam &amp;lt;code&amp;gt;rezultatas&amp;lt;/code&amp;gt; dabar priskiriama reikšmė 6 &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;, rezultatas)&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;rezultatas&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 pirmo skaičiaus ir pirmo bei vienetu mažesnio už antrąjį sandaugos sumai &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. Kai viskas surašoma vienoje eilutėje, gauname &amp;lt;code&amp;gt;3 + 3 + 0 &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;
Funkcijos, kurios kreipiasi pačios į save yra vadinamos rekursinėmis funkcijomis. Šio skyriaus pavyzdžiuose panagrinėsime tokias funkcijas. 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 dar kelis pavyzdžius.&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_skaičiavimas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def atgalinis_skaičiavimas(n):&lt;br /&gt;
    print(n)&lt;br /&gt;
    if n &amp;gt; 0:&lt;br /&gt;
        return atgalinis_skaičiavimas(n-1)&lt;br /&gt;
&lt;br /&gt;
atgalinis_skaič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=Funkcijų apibrėžimas |next=Sąrašai}}&lt;/div&gt;</summary>
		<author><name>LauraK</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=3895</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=3895"/>
		<updated>2022-03-09T08:37:55Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Įvadas į objektinį programavimą Python 3 |next=Pabaiga}}&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 (Suapvalina skaičių iki artimiausio skaičiaus po kablelio)&lt;br /&gt;
*math.copysign (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;
*math.fabs (Grąžina absoliučią skaičiaus reikšmę, kaip slankiojo kablelio reikšmę)&lt;br /&gt;
*math.factorial (Grąžina skaičiaus faktorialą)&lt;br /&gt;
*math.floor (Grąžina didžiausią sveikąjį skaičių, mažesnį arba lygų duotajam skaičiui)&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 (Grąžina visų skliausteliuose esančių skaičių sumą)&lt;br /&gt;
*math.isfinite (Patikrina ar skaičius yra baigtinis)&lt;br /&gt;
*math.isinf (Patikrina ar skaičius yra begalinis ar ne)&lt;br /&gt;
*math.isnan (Patikrina, ar reikšmė yra NaN (ne skaičius), ar ne)&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 (Apskaičiuoja eksponentinę funkciją e^x, kur e yra matematinė konstanta)&lt;br /&gt;
*math.expm1 (Grąžina E^x - 1)&lt;br /&gt;
*math.log (Grąžina natūralųjį skaičiaus logaritmą)&lt;br /&gt;
*math.log1p (Grąžina log(1+skaičius))&lt;br /&gt;
*math.log10 (Grąžina skaičiaus 10 bazinį logaritmą)&lt;br /&gt;
*math.pow (Grąžina x reikšmę, pakeltą laipsniu y)&lt;br /&gt;
*math.sqrt (Grąžina skaičiaus kvadratinę šaknį)&lt;br /&gt;
*math.acos (Grąžina arccos(x))&lt;br /&gt;
*math.asin (Grąžina arcsin(x))&lt;br /&gt;
*math.atan (Grąžina arctan(x))&lt;br /&gt;
*math.cos (Grąžina reikšmės kosinusą)&lt;br /&gt;
*math.hypot (Grąžina Euklido normą)&lt;br /&gt;
*math.sin (Grąžina reikšmės sinusą)&lt;br /&gt;
*math.tan (Grąžina reikšmės tangentą)&lt;br /&gt;
*math.degrees (Paverčia radianus į laipsnius)&lt;br /&gt;
*math.radians (Paverčia laipsnius į radianus)&lt;br /&gt;
*math.pi (Grąžina π reikšmę)&lt;br /&gt;
*math.e (Grąžina e reikšmę)&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=Įvadas į objektinį programavimą Python 3 |next=Pabaiga}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</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=3894</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=3894"/>
		<updated>2022-03-09T08:37:20Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Įvadas į objektinį programavimą Python 3 |next=Pabaiga}}&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 (Suapvalina skaičių iki artimiausio skaičiaus po kablelio)&lt;br /&gt;
*math.copysign (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;
*math.fabs (Grąžina absoliučią skaičiaus reikšmę, kaip slankiojo kablelio reikšmę)&lt;br /&gt;
*math.factorial (Grąžina skaičiaus faktorialą)&lt;br /&gt;
*math.floor (Grąžina didžiausią sveikąjį skaičių, mažesnį arba lygų duotajam skaičiui)&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 (Grąžina visų skliausteliuose esančių skaičių sumą)&lt;br /&gt;
*math.isfinite (Patikrina ar skaičius yra baigtinis)&lt;br /&gt;
*math.isinf (Patikrina ar skaičius yra begalinis ar ne)&lt;br /&gt;
*math.isnan (Patikrina, ar reikšmė yra NaN (ne skaičius), ar ne)&lt;br /&gt;
*math.ldexp (Grąžina x * (2 ** i) iš pateiktų skaičių x ir i)&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 (Apskaičiuoja eksponentinę funkciją e^x, kur e yra matematinė konstanta)&lt;br /&gt;
*math.expm1 (Grąžina E^x - 1)&lt;br /&gt;
*math.log (Grąžina natūralųjį skaičiaus logaritmą)&lt;br /&gt;
*math.log1p (Grąžina log(1+skaičius))&lt;br /&gt;
*math.log10 (Grąžina skaičiaus 10 bazinį logaritmą)&lt;br /&gt;
*math.pow (Grąžina x reikšmę, pakeltą laipsniu y)&lt;br /&gt;
*math.sqrt (Grąžina skaičiaus kvadratinę šaknį)&lt;br /&gt;
*math.acos (Grąžina arccos(x))&lt;br /&gt;
*math.asin (Grąžina arcsin(x))&lt;br /&gt;
*math.atan (Grąžina arctan(x))&lt;br /&gt;
*math.cos (Grąžina reikšmės kosinusą)&lt;br /&gt;
*math.hypot (Grąžina Euklido normą)&lt;br /&gt;
*math.sin (Grąžina reikšmės sinusą)&lt;br /&gt;
*math.tan (Grąžina reikšmės tangentą)&lt;br /&gt;
*math.degrees (Paverčia radianus į laipsnius)&lt;br /&gt;
*math.radians (Paverčia laipsnius į radianus)&lt;br /&gt;
*math.pi (Grąžina π reikšmę)&lt;br /&gt;
*math.e (Grąžina e reikšmę)&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=Įvadas į objektinį programavimą Python 3 |next=Pabaiga}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</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=3893</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=3893"/>
		<updated>2022-03-09T08:13:46Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Įvadas į objektinį programavimą Python 3 |next=Pabaiga}}&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 (Suapvalina skaičių iki artimiausio skaičiaus po kablelio)&lt;br /&gt;
*math.copysign (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;
*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=Įvadas į objektinį programavimą Python 3 |next=Pabaiga}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</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=3892</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=3892"/>
		<updated>2022-03-09T08:10:36Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Įvadas į objektinį programavimą Python 3 |next=Pabaiga}}&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=Įvadas į objektinį programavimą Python 3 |next=Pabaiga}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Siekiant_tobulumo&amp;diff=3891</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=3891"/>
		<updated>2022-03-09T08:09:39Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Failų IO |next=Rekursija}}&lt;br /&gt;
&lt;br /&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 įvestis &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;.&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;
{| 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;
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;)&lt;br /&gt;
&lt;br /&gt;
&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>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3887</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3887"/>
		<updated>2022-03-03T11:43:43Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Modulių naudojimas|next=Daugiau apie tekstines eilutes}}&lt;br /&gt;
&lt;br /&gt;
Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementais ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina elementų kiekį + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį – pjaustymas (slicing). Štai pavyzdys, leidžiantis suprasti, kaip jis gali būti naudojamas:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poema = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Ta&amp;quot;, &amp;quot;liga&amp;quot;, &amp;quot;nelimpa&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;net&amp;quot;, &amp;quot;ir&amp;quot;, &amp;quot;prie&amp;quot;,&lt;br /&gt;
        &amp;quot;savų.&amp;quot;, &amp;quot;Pats&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;žiopliukas&amp;quot;, &amp;quot;būdamas,&amp;quot;, &amp;quot;neapkrės&amp;quot;, &amp;quot;kitų.&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;Žiopliškumas&amp;quot;, &amp;quot;buvo&amp;quot;, &amp;quot;ir&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;visad&amp;quot;, &amp;quot;jis&amp;quot;, &amp;quot;bus.&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;Jei&amp;quot;, &amp;quot;skandinsi&amp;quot;, &amp;quot;pelkėj,&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;jis&amp;quot;, &amp;quot;ir&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;ten&amp;quot;, &amp;quot;nežus.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def gauk_pastorintą(tekstas):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## ar_pastorintas pasako ar mes dabar tikriname &lt;br /&gt;
    ## pastorintą teksto dalį.&lt;br /&gt;
    ar_pastorintas = false&lt;br /&gt;
    ## pradinis_blokas yra indeksas arba nepastorinta &lt;br /&gt;
    ## teksto dalis arba pastorinta.&lt;br /&gt;
    pradinis_blokas = 0&lt;br /&gt;
    for indeksas in range(len(tekstas)):&lt;br /&gt;
        ## Apdorojama pastorinto teksto pradžia &lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: Papildoma pastorinimo atidarymo žyma&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Nepastorintas:&amp;quot;, tekstas[pradinis_blokas:indeksas]&lt;br /&gt;
            ar_pastorintas = true&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
        ## Apdorojama pastorinto teksto pabaiga&lt;br /&gt;
        ## Atsimink, kad paskutinis skaičius atliekant pjūvį yra indeksas &lt;br /&gt;
        ## po to, kai paskutinis indeksas yra panaudotas.&lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: papildoma pastorinimo uždarymo žyma&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Pastorintas [&amp;quot;, pradinis_blokas, &amp;quot;:&amp;quot;, indeksas, &amp;quot;]&amp;quot;, tekstas[pradinis_blokas:indeksas])&lt;br /&gt;
            ar_pastorintas = false&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
&lt;br /&gt;
gauk_pastorintą(poema)&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;
 Pastorinta [ 1 : 4 ] ['Ta', 'liga', 'nelimpa']&lt;br /&gt;
 Pastorinta [ 11 : 15 ] ['žiopliukas', 'būdamas,', 'neapkrės', 'kitų.']&lt;br /&gt;
 Pastorinta [ 20 : 23 ] ['visad', 'jis', 'bus.']&lt;br /&gt;
 Pastorinta [ 28 : 30 ] ['jis', 'ir']&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; pasiima sau į sąrašą tai, kas buvo padalinta į žodžius ir žymas.  Žymos, kurį ši funkcija ieško - &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt;, nes ji pradeda pastorintą tekstą ir &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt;, kuris užbaigia pastorintą tekstą. Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; eina per tekstą ir ieško pradžios ir pabaigos žymų.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys turėtų nustebinti, kadangi pakeitus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeitė ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Taip yra todėl, kad teiginys &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; sukūrė ''nuorodą (reference)'' iš &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, o tai reiškia, jog &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dabar yra dar vienas &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; vardas.&lt;br /&gt;
Taigi, bet koks &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pakeitimas, keičia ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Tačiau kai kurie priskyrimai nesukuria dviejų pavadinimų vienam sąrašui, pažvelk į dar vieną pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Šiuo atveju &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; nėra nuoroda į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, nes išraiška &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; sukuria naują sąrašą vietoje nuorodos į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Beveik visos priskyrimo operacijos sukuria nuorodą, pavyzdžiui: kai perduodi sąrašą, kaip funkcijos argumentą, tu sukuri nuorodą.&lt;br /&gt;
Visgi, dažniau mums programoje reikia kopijų, o ne nuorodų. Kai norime pakeisti vieną sąrašą, nekeisdami kito sąrašo, mes turime įsitikinti, kad sukūrėme sąrašo kopiją.&lt;br /&gt;
&lt;br /&gt;
Yra keli būdai, kaip gali sukurti sąrašo kopiją. Vienas iš paprasčiausių būdų yra pjaustymo operatorius, kadangi jis visuomet sukuria naują sąrašą, net tada, kai su pjūviu apimame viso sąrašo ilgį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Panaudoję pjūvio operatorių &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; mes sukuriame naują sąrašo kopiją. Turėk omeny, kad nukopijuojamas yra tik išorinis sąrašas. Bet koks vidinis sąrašas turi nuorodą į pirminį sąrašą. Todėl, kai sąraše yra sąrašų, reikia nukopijuoti ir vidinius sąrašus. Tu tai gali padaryti pats, tačiau Python'as savyje jau turi modulį, kuris tai padaro už tave. Gali panaudoti funkciją &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; iš &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; modulio:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
Iš pradžių atkreipk dėmesį į tai, kad &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; sąrašų sąrašas. Toliau, kai kodo eilutė &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; yra vykdoma, tuomet &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeičia, bet &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; ne. Taip nutiko todėl, kad vidiniai masyvai vis dar yra nuorodos, kai naudojamas pjūvio operatorius.  Iš kitos pusės, &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; buvo visiškai nukopijuotas.&lt;br /&gt;
&lt;br /&gt;
Taigi, ar turėčiau nerimauti dėl nuorodų kiekvieną kartą, kai naudoju funkciją ar &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  Geros naujienos yra tos, kad tau reikia nerimauti apie nuorodas tik naudojant žodynus ir sąrašus. Priskiriant skaičiaus ar teksto eilutės reikšmes turinčius kintamuosius nuorodos nesukuriamos ir tau nereikia sukti galvos ar netikėtai pasikeis reikšmė. Tačiau tau reikia turėt omeny nuorodas, kai keiti sąrašus ir žodynus. &lt;br /&gt;
&lt;br /&gt;
Turbūt susimąstei, kam išvis yra reikalingos nuorodos? Pagrindinė priežastis – greitis. Sukurti nuorodą sąrašo tūkstančiui elementų yra daug greičiau nei sukurti jų kopijas. Dar viena priežastis – tai, kad tu gali turėti funkciją, kuri leidžia modifikuoti sąrašus arba žodynus. Jei kada nors susidursi su keistomis problemomis, kai duomenys pasikeičia, nors neturėtų, tai prisimink apie nuorodas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Modulių naudojimas|next=Daugiau apie tekstines eilutes}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3886</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3886"/>
		<updated>2022-03-03T08:21:31Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Modulių naudojimas|next=Daugiau apie tekstines eilutes}}&lt;br /&gt;
&lt;br /&gt;
Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementais ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina elementų kiekį + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį – pjaustymas (slicing). Štai pavyzdys, leidžiantis suprasti, kaip jis gali būti naudojamas:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poema = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Ta&amp;quot;, &amp;quot;liga&amp;quot;, &amp;quot;nelimpa&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;net&amp;quot;, &amp;quot;ir&amp;quot;, &amp;quot;prie&amp;quot;,&lt;br /&gt;
        &amp;quot;savų.&amp;quot;, &amp;quot;Pats&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;žiopliukas&amp;quot;, &amp;quot;būdamas,&amp;quot;, &amp;quot;neapkrės&amp;quot;, &amp;quot;kitų.&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;Žiopliškumas&amp;quot;, &amp;quot;buvo&amp;quot;, &amp;quot;ir&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;visad&amp;quot;, &amp;quot;jis&amp;quot;, &amp;quot;bus.&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;Jei&amp;quot;, &amp;quot;skandinsi&amp;quot;, &amp;quot;pelkėj,&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;jis&amp;quot;, &amp;quot;ir&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;ten&amp;quot;, &amp;quot;nežus.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def gauk_pastorintą(tekstas):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## ar_pastorintas pasako ar mes dabar tikriname &lt;br /&gt;
    ## pastorintą teksto dalį.&lt;br /&gt;
    ar_pastorintas = false&lt;br /&gt;
    ## pradinis_blokas yra indeksas arba nepastorinta &lt;br /&gt;
    ## teksto dalis arba pastorinta.&lt;br /&gt;
    pradinis_blokas = 0&lt;br /&gt;
    for indeksas in range(len(tekstas)):&lt;br /&gt;
        ## Apdorojama pastorinto teksto pradžia &lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: Papildoma pastorinimo atidarymo žyma&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Nepastorintas:&amp;quot;, tekstas[pradinis_blokas:indeksas]&lt;br /&gt;
            ar_pastorintas = true&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
        ## Apdorojama pastorinto teksto pabaiga&lt;br /&gt;
        ## Atsimink, kad paskutinis skaičius atliekant pjūvį yra indeksas &lt;br /&gt;
        ## po to, kai paskutinis indeksas yra panaudotas.&lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: papildoma pastorinimo uždarymo žyma&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Pastorintas [&amp;quot;, pradinis_blokas, &amp;quot;:&amp;quot;, indeksas, &amp;quot;]&amp;quot;, tekstas[pradinis_blokas:indeksas])&lt;br /&gt;
            ar_pastorintas = false&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
&lt;br /&gt;
gauk_pastorintą(poema)&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;
 Pastorinta [ 1 : 4 ] ['Ta', 'liga', 'nelimpa']&lt;br /&gt;
 Pastorinta [ 11 : 15 ] ['žiopliukas', 'būdamas,', 'neapkrės', 'kitų.']&lt;br /&gt;
 Pastorinta [ 20 : 23 ] ['visad', 'jis', 'bus.']&lt;br /&gt;
 Pastorinta [ 28 : 30 ] ['jis', 'ir']&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; pasiima sau į sąrašą tai, kas buvo padalinta į žodžius ir žymas.  Žymos, kurį ši funkcija ieško - &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt;, nes ji pradeda pastorintą tekstą ir &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt;, kuris užbaigia pastorintą tekstą. Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; eina per tekstą ir ieško pradžios ir pabaigos žymų.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys turėtų nustebinti, kadangi pakeitus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeitė ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Taip yra todėl, kad teiginys &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; sukūrė ''nuorodą (reference)'' iš &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, o tai reiškia, jog &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dabar yra dar vienas &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; vardas.&lt;br /&gt;
Taigi, bet koks &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pakeitimas, keičia ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Tačiau kai kurie priskyrimai nesukuria dviejų pavadinimų vienam sąrašui, pažvelk į dar vieną pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Šiuo atveju &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; nėra nuoroda į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, nes išraiška &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; sukuria naują sąrašą vietoje nuorodos į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Beveik visos priskyrimo operacijos sukuria nuorodą, pavyzdžiui: kai perduodi sąrašą, kaip funkcijos argumentą, tu sukuri nuorodą.&lt;br /&gt;
Visgi, dažniau mums programoje reikia kopijų, o ne nuorodų. Kai norime pakeisti vieną sąrašą, nekeisdami kito sąrašo, mes turime įsitikinti, kad sukūrėme sąrašo kopiją.&lt;br /&gt;
&lt;br /&gt;
Yra keli būdai, kaip gali sukurti sąrašo kopiją. Vienas iš paprasčiausių būdų yra pjaustymo operatorius, kadangi jis visuomet sukuria naują sąrašą, net tada, kai su pjūviu apimame viso sąrašo ilgį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Panaudoję pjūvio operatorių &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; mes sukuriame naują sąrašo kopiją. Turėk omeny, kad nukopijuojamas yra tik išorinis sąrašas. Bet koks vidinis sąrašas turi nuorodą į pirminį sąrašą. Todėl, kai sąraše yra sąrašų, reikia nukopijuoti ir vidinius sąrašus. Tu tai gali padaryti pats, tačiau Python'as savyje jau turi modulį, kuris tai padaro už tave. Gali panaudoti funkciją &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; iš &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; modulio:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
Iš pradžių atkreipk dėmesį į tai, kad &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; sąrašų sąrašas. Toliau, kai kodo eilutė &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; yra vykdoma, tuomet &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeičia, bet &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; ne. Taip nutiko todėl, kad vidiniai masyvai vis dar yra nuorodos, kai naudojamas pjūvio operatorius.  Iš kitos pusės, &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; buvo visiškai nukopijuotas.&lt;br /&gt;
&lt;br /&gt;
Taigi, ar turėčiau nerimauti dėl nuorodų kiekvieną kartą, kai naudoju funkciją ar &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  Geros naujienos yra tos, kad tau reikia nerimauti apie nuorodas tik naudojant žodynus ir sąrašus. Priskiriant skaičiaus ar teksto eilutės reikšmes turinčius kintamuosius nuorodos nesukuriamos ir tau nereikia sukti galvos ar netikėtai pasikeis reikšmė. Tačiau tau reikia turėt omeny nuorodas, kai keiti sąrašus ir žodynus. &lt;br /&gt;
&lt;br /&gt;
Turbūt susimąstei, kam išvis yra reikalingos nuorodos? Pagrindinė priežastis – greitis. Sukurti nuorodą sąrašo tūkstančiui elementų yra daug greičiau nei sukurti jų kopijas. Dar viena priežastis – tai, kad tu gali turėti funkciją, kuri leidžia modifikuoti sąrašus arba žodynus. Jei kada nors susidursi su keistomis problemomis, kai duomenys pasikeičia, nors neturėtų, tai prisimink apie nuorodas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Modulių naudojimas|next=Daugiau apie tekstines eilutes}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3885</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3885"/>
		<updated>2022-03-03T08:20:11Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Modulių naudojimas|next=Daugiau apie tekstines eilutes}}&lt;br /&gt;
&lt;br /&gt;
Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementais ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį – pjaustymas (slicing). Štai pavyzdys, leidžiantis suprasti, kaip jis gali būti naudojamas:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poema = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Ta&amp;quot;, &amp;quot;liga&amp;quot;, &amp;quot;nelimpa&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;net&amp;quot;, &amp;quot;ir&amp;quot;, &amp;quot;prie&amp;quot;,&lt;br /&gt;
        &amp;quot;savų.&amp;quot;, &amp;quot;Pats&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;žiopliukas&amp;quot;, &amp;quot;būdamas,&amp;quot;, &amp;quot;neapkrės&amp;quot;, &amp;quot;kitų.&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;Žiopliškumas&amp;quot;, &amp;quot;buvo&amp;quot;, &amp;quot;ir&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;visad&amp;quot;, &amp;quot;jis&amp;quot;, &amp;quot;bus.&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;Jei&amp;quot;, &amp;quot;skandinsi&amp;quot;, &amp;quot;pelkėj,&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;jis&amp;quot;, &amp;quot;ir&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;ten&amp;quot;, &amp;quot;nežus.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def gauk_pastorintą(tekstas):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## ar_pastorintas pasako ar mes dabar tikriname &lt;br /&gt;
    ## pastorintą teksto dalį.&lt;br /&gt;
    ar_pastorintas = false&lt;br /&gt;
    ## pradinis_blokas yra indeksas arba nepastorinta &lt;br /&gt;
    ## teksto dalis arba pastorinta.&lt;br /&gt;
    pradinis_blokas = 0&lt;br /&gt;
    for indeksas in range(len(tekstas)):&lt;br /&gt;
        ## Apdorojama pastorinto teksto pradžia &lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: Papildoma pastorinimo atidarymo žyma&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Nepastorintas:&amp;quot;, tekstas[pradinis_blokas:indeksas]&lt;br /&gt;
            ar_pastorintas = true&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
        ## Apdorojama pastorinto teksto pabaiga&lt;br /&gt;
        ## Atsimink, kad paskutinis skaičius atliekant pjūvį yra indeksas &lt;br /&gt;
        ## po to, kai paskutinis indeksas yra panaudotas.&lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: papildoma pastorinimo uždarymo žyma&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Pastorintas [&amp;quot;, pradinis_blokas, &amp;quot;:&amp;quot;, indeksas, &amp;quot;]&amp;quot;, tekstas[pradinis_blokas:indeksas])&lt;br /&gt;
            ar_pastorintas = false&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
&lt;br /&gt;
gauk_pastorintą(poema)&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;
 Pastorinta [ 1 : 4 ] ['Ta', 'liga', 'nelimpa']&lt;br /&gt;
 Pastorinta [ 11 : 15 ] ['žiopliukas', 'būdamas,', 'neapkrės', 'kitų.']&lt;br /&gt;
 Pastorinta [ 20 : 23 ] ['visad', 'jis', 'bus.']&lt;br /&gt;
 Pastorinta [ 28 : 30 ] ['jis', 'ir']&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; pasiima sau į sąrašą tai, kas buvo padalinta į žodžius ir žymas.  Žymos, kurį ši funkcija ieško - &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt;, nes ji pradeda pastorintą tekstą ir &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt;, kuris užbaigia pastorintą tekstą. Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; eina per tekstą ir ieško pradžios ir pabaigos žymų.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys turėtų nustebinti, kadangi pakeitus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeitė ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Taip yra todėl, kad teiginys &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; sukūrė ''nuorodą (reference)'' iš &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, o tai reiškia, jog &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dabar yra dar vienas &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; vardas.&lt;br /&gt;
Taigi, bet koks &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pakeitimas, keičia ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Tačiau kai kurie priskyrimai nesukuria dviejų pavadinimų vienam sąrašui, pažvelk į dar vieną pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Šiuo atveju &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; nėra nuoroda į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, nes išraiška &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; sukuria naują sąrašą vietoje nuorodos į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Beveik visos priskyrimo operacijos sukuria nuorodą, pavyzdžiui: kai perduodi sąrašą, kaip funkcijos argumentą, tu sukuri nuorodą.&lt;br /&gt;
Visgi, dažniau mums programoje reikia kopijų, o ne nuorodų. Kai norime pakeisti vieną sąrašą, nekeisdami kito sąrašo, mes turime įsitikinti, kad sukūrėme sąrašo kopiją.&lt;br /&gt;
&lt;br /&gt;
Yra keli būdai, kaip gali sukurti sąrašo kopiją. Vienas iš paprasčiausių būdų yra pjaustymo operatorius, kadangi jis visuomet sukuria naują sąrašą, net tada, kai su pjūviu apimame viso sąrašo ilgį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Panaudoję pjūvio operatorių &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; mes sukuriame naują sąrašo kopiją. Turėk omeny, kad nukopijuojamas yra tik išorinis sąrašas. Bet koks vidinis sąrašas turi nuorodą į pirminį sąrašą. Todėl, kai sąraše yra sąrašų, reikia nukopijuoti ir vidinius sąrašus. Tu tai gali padaryti pats, tačiau Python'as savyje jau turi modulį, kuris tai padaro už tave. Gali panaudoti funkciją &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; iš &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; modulio:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
Iš pradžių atkreipk dėmesį į tai, kad &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; sąrašų sąrašas. Toliau, kai kodo eilutė &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; yra vykdoma, tuomet &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeičia, bet &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; ne. Taip nutiko todėl, kad vidiniai masyvai vis dar yra nuorodos, kai naudojamas pjūvio operatorius.  Iš kitos pusės, &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; buvo visiškai nukopijuotas.&lt;br /&gt;
&lt;br /&gt;
Taigi, ar turėčiau nerimauti dėl nuorodų kiekvieną kartą, kai naudoju funkciją ar &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  Geros naujienos yra tos, kad tau reikia nerimauti apie nuorodas tik naudojant žodynus ir sąrašus. Priskiriant skaičiaus ar teksto eilutės reikšmes turinčius kintamuosius nuorodos nesukuriamos ir tau nereikia sukti galvos ar netikėtai pasikeis reikšmė. Tačiau tau reikia turėt omeny nuorodas, kai keiti sąrašus ir žodynus. &lt;br /&gt;
&lt;br /&gt;
Turbūt susimąstei, kam išvis yra reikalingos nuorodos? Pagrindinė priežastis – greitis. Sukurti nuorodą sąrašo tūkstančiui elementų yra daug greičiau nei sukurti jų kopijas. Dar viena priežastis – tai, kad tu gali turėti funkciją, kuri leidžia modifikuoti sąrašus arba žodynus. Jei kada nors susidursi su keistomis problemomis, kai duomenys pasikeičia, nors neturėtų, tai prisimink apie nuorodas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Modulių naudojimas|next=Daugiau apie tekstines eilutes}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Ciklai_For&amp;diff=3746</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=3746"/>
		<updated>2022-01-04T07:56:22Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;And here is the new typing exercise for this chapter:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
onetoten = range(1, 11)&lt;br /&gt;
for count in onetoten:&lt;br /&gt;
    print(count)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the ever-present output:&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;
The output looks awfully familiar but the program code looks different.  The first line uses the &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; function.  The &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; function uses two arguments like this &amp;lt;code&amp;gt;range(start, finish)&amp;lt;/code&amp;gt;.  &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; is the first number that is produced.  &amp;lt;code&amp;gt;finish&amp;lt;/code&amp;gt; is one larger than the last number.  Note that this program could have been done in a shorter way:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for count in range(1, 11):&lt;br /&gt;
    print(count)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The range function returns an iterable.  This can be converted into a list with the &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; function.  &lt;br /&gt;
Here are some examples to show what happens with the &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; command:&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;
The next line &amp;lt;code&amp;gt;for count in onetoten:&amp;lt;/code&amp;gt; uses the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; control structure.  A &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; control structure looks like &amp;lt;code&amp;gt;for variable in list:&amp;lt;/code&amp;gt;.  &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; is gone through starting with the first element of the list and going to the last.  As &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; goes through each element in a list it puts each into &amp;lt;code&amp;gt;variable&amp;lt;/code&amp;gt;.  That allows &amp;lt;code&amp;gt;variable&amp;lt;/code&amp;gt; to be used in each successive time the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop is run through.  Here is another example (you don't have to type this) to demonstrate:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
demolist = ['life', 42, 'the universe', 6, 'and', 7, 'everything']&lt;br /&gt;
for item in demolist:&lt;br /&gt;
    print(&amp;quot;The Current item is:&amp;quot;,item)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output is:&lt;br /&gt;
&lt;br /&gt;
 The Current item is: life&lt;br /&gt;
 The Current item is: 42&lt;br /&gt;
 The Current item is: the universe&lt;br /&gt;
 The Current item is: 6&lt;br /&gt;
 The Current item is: and&lt;br /&gt;
 The Current item is: 7&lt;br /&gt;
 The Current item is: everything&lt;br /&gt;
&lt;br /&gt;
Notice how the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop goes through and sets item to each element in the list. So, what is &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; good for?  The first use is to go through all the elements of a list and do something with each of them.  Here's a quick way to add up all the elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
list = [2, 4, 6, 8]&lt;br /&gt;
sum = 0&lt;br /&gt;
for num in list:&lt;br /&gt;
    sum = sum + num&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;The sum is:&amp;quot;, sum)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the output simply being:&lt;br /&gt;
&lt;br /&gt;
The sum is: 20&lt;br /&gt;
&lt;br /&gt;
Or you could write a program to find out if there are any duplicates in a list like this program does:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
list = [4, 5, 7, 8, 9, 1, 0, 7, 10]&lt;br /&gt;
list.sort()&lt;br /&gt;
prev = list[0]&lt;br /&gt;
del list[0]&lt;br /&gt;
for item in list:&lt;br /&gt;
    if prev == item:&lt;br /&gt;
        print(&amp;quot;Duplicate of&amp;quot;, prev, &amp;quot;found&amp;quot;)&lt;br /&gt;
    prev = item&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and for good measure:&lt;br /&gt;
&lt;br /&gt;
 Duplicate of 7 Found&lt;br /&gt;
&lt;br /&gt;
Okay, so how does it work?  Here is a special debugging version to help you understand (you don't need to type this in):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source 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;
prev = l[0]&lt;br /&gt;
print(&amp;quot;prev = l[0]&amp;quot;, &amp;quot;\t\tprev:&amp;quot;, prev)&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 item in l:&lt;br /&gt;
    if prev == item:&lt;br /&gt;
        print(&amp;quot;Duplicate of&amp;quot;, prev, &amp;quot;found&amp;quot;)&lt;br /&gt;
    print(&amp;quot;if prev == item:&amp;quot;, &amp;quot;\t\tprev:&amp;quot;, prev, &amp;quot;\titem:&amp;quot;, item)&lt;br /&gt;
    prev = item&lt;br /&gt;
    print(&amp;quot;prev = item&amp;quot;, &amp;quot;\t\tprev:&amp;quot;, prev, &amp;quot;\titem:&amp;quot;, item)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the output being:&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;
 prev = l[0]             prev: 0&lt;br /&gt;
 del l[0]                l: [1, 4, 5, 7, 7, 8, 9, 10]&lt;br /&gt;
 if prev == item:        prev: 0         item: 1&lt;br /&gt;
 prev = item             prev: 1         item: 1&lt;br /&gt;
 if prev == item:        prev: 1         item: 4&lt;br /&gt;
 prev = item             prev: 4         item: 4&lt;br /&gt;
 if prev == item:        prev: 4         item: 5&lt;br /&gt;
 prev = item             prev: 5         item: 5&lt;br /&gt;
 if prev == item:        prev: 5         item: 7&lt;br /&gt;
 prev = item             prev: 7         item: 7&lt;br /&gt;
 Duplicate of 7 found&lt;br /&gt;
 if prev == item:        prev: 7         item: 7&lt;br /&gt;
 prev = item             prev: 7         item: 7&lt;br /&gt;
 if prev == item:        prev: 7         item: 8&lt;br /&gt;
 prev = item             prev: 8         item: 8&lt;br /&gt;
 if prev == item:        prev: 8         item: 9&lt;br /&gt;
 prev = item             prev: 9         item: 9&lt;br /&gt;
 if prev == item:        prev: 9         item: 10&lt;br /&gt;
 prev = item             prev: 10        item: 10&lt;br /&gt;
&lt;br /&gt;
The reason I put so many &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; statements in the code was so that you can see what is happening in each line.  (By the way, if you can't figure out why a program is not working, try putting in lots of print statements in places where you want to know what is happening.)  First the program starts with a boring old list.  Next the program sorts the list.  This is so that any duplicates get put next to each other.  The program then initializes a &amp;lt;code&amp;gt;prev&amp;lt;/code&amp;gt;(ious) variable.  Next the first element of the list is deleted so that the first item is not incorrectly thought to be a duplicate.  Next a &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop is gone into.  Each item of the list is checked to see if it is the same as the previous.  If it is a duplicate was found.  The value of &amp;lt;code&amp;gt;prev&amp;lt;/code&amp;gt; is then changed so that the next time the &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop is run through &amp;lt;code&amp;gt;prev&amp;lt;/code&amp;gt; is the previous item to the current.  Sure enough, the 7 is found to be a duplicate.  (Notice how &amp;lt;code&amp;gt;\t&amp;lt;/code&amp;gt; is used to print a tab.)  &lt;br /&gt;
&lt;br /&gt;
The other way to use &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops is to do something a certain number of times.  Here is some code to print out the first 9 numbers of the Fibonacci series:&lt;br /&gt;
&amp;lt;source 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,&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;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the surprising output:&lt;br /&gt;
&lt;br /&gt;
 1 1 2 3 5 8 13 21 34&lt;br /&gt;
&lt;br /&gt;
Everything that can be done with &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops can also be done with &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; loops but &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loops give an easy way to go through all the elements in a list or to do something a certain number of times.&lt;br /&gt;
&lt;br /&gt;
{{../Navigation|Lists|Boolean Expressions}}&lt;br /&gt;
[[Category:Non-Programmer's Tutorial for Python 3.0]]&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Ciklai_For&amp;diff=3745</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=3745"/>
		<updated>2022-01-04T07:34:41Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &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: 9&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>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Loginiai_rei%C5%A1kiniai&amp;diff=3744</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=3744"/>
		<updated>2022-01-04T07:16:49Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &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: Gyvenimas&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;
{| 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;
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>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/S%C4%85ra%C5%A1ai&amp;diff=3714</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=3714"/>
		<updated>2021-12-15T14:26:25Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &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;,tai reiškia 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 surastų &amp;lt;code&amp;gt;elementoIndeksas&amp;lt;/code&amp;gt; ir tada įdėtų &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 [[Vadovėlis/Loginiai reiškiniai|Loginiai reiškiniai]]).&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;
{| 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;
## Š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;
&lt;br /&gt;
{{navigation |previous=Pažangių funkcijų pavyzdys |next=Ciklai For}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=3701</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=3701"/>
		<updated>2021-12-15T12:49:56Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &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;
rezultatas = daug(3, 2)&lt;br /&gt;
print(&amp;quot;3 * 2 = &amp;quot;, rezultatas)&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 (reikia 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 daugybos funkcija:&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;rezultatas = 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;rezultatas&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;rezultatas = daug(3, 2)&amp;lt;/code&amp;gt;, kuriai dabar galima priskirti reikšmę 6 kintamajam &amp;lt;code&amp;gt;rezultatas&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;, rezultatas)&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;rezultatas&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=Funkcijų apibrėžimas |next=Sąrašai}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=3700</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=3700"/>
		<updated>2021-12-15T12:46:57Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &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;
rezultatas = daug(3, 2)&lt;br /&gt;
print(&amp;quot;3 * 2 = &amp;quot;, rezultatas)&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 (reikia 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 daugybos funkcija:&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;rezultatas = 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;rezultatas&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=Funkcijų apibrėžimas |next=Sąrašai}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=3699</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=3699"/>
		<updated>2021-12-15T12:46:08Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &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;
rezultatas = daug(3, 2)&lt;br /&gt;
print(&amp;quot;3 * 2 = &amp;quot;, rezultatas)&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 (reikia 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 daugybos funkcija:&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=Funkcijų apibrėžimas |next=Sąrašai}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=3698</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=3698"/>
		<updated>2021-12-15T12:44:34Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &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;
rezultatas = daug(3, 2)&lt;br /&gt;
print(&amp;quot;3 * 2 = &amp;quot;, rezultatas)&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 (reikia 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=Funkcijų apibrėžimas |next=Sąrašai}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3608</id>
		<title>Python Vadovėlis/Kas čia eina?</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3608"/>
		<updated>2021-12-08T13:28:17Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Pavyzdžiai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Įvestis ir kintamieji ===&lt;br /&gt;
Aš jaučiu, kad atėjo laikas tikrai sudėtingai programai. Štai ji:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Stop!&amp;quot;)&lt;br /&gt;
vartotojo_įvestis = input(&amp;quot; Kas čia eina? &amp;quot;)&lt;br /&gt;
print(&amp;quot;Gali praeiti,&amp;quot;,  vartotojo_įvestis )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kai '''Aš''' paleidau programą, štai ką '''mano''' ekranas parodė:&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina? '''Jonas'''&lt;br /&gt;
 Gali praeiti, Jonas&lt;br /&gt;
&lt;br /&gt;
''Pastaba: Jei paleisi kodą spausdamas &amp;quot;F5&amp;quot;, python shell išves tik tiek:''&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina?&lt;br /&gt;
&lt;br /&gt;
''Tu turi įvesti savo vardą į python shell ir tada paspausti enter norėdama/s pamatyt likusį tekstą.''&lt;br /&gt;
&lt;br /&gt;
Žinoma, kai tu paleisi programą, tavo ekranas atrodys kitaip dėl &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; užklausos.&lt;br /&gt;
Kai paleidai programą (juk paleidai, tiesa?), tu turėjai surinkti savo vardą ir tada paspausti Enter.&lt;br /&gt;
Programa atspausdino dalį teksto ir tavo vardą. Taip atrodo ''įvesties'' pavyzdys.&lt;br /&gt;
Programa pasiekia tam tikrą kodo tašką ir laukia vartotojo įvesties, kad duomenis galėtų panaudoti tolimesniuose procesuose.&lt;br /&gt;
&lt;br /&gt;
Žinoma, gauti informaciją iš vartotojo pasaulio yra nieko verta, jei tos informacijos nėra kur patalpinti. Ir šioje vietoje atsiranda kintamieji.&lt;br /&gt;
Paskutinėje programojo &amp;lt;code&amp;gt;user_input&amp;lt;/code&amp;gt; yra ''kintamasis''. Kintamieji yra kaip dėžes į kurias galima patalpinti tam tikras dalis informacijos. &lt;br /&gt;
Štai programa, parodanti kintamųjų pavyzdžius:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 123.4&lt;br /&gt;
b23 = 'Šlamštas'&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot;&lt;br /&gt;
b = 432&lt;br /&gt;
c = a + b&lt;br /&gt;
print(&amp;quot;a + b yra &amp;quot;,c)&lt;br /&gt;
print(&amp;quot;vardas yra &amp;quot;,vardas)&lt;br /&gt;
print(&amp;quot;Rūšiuotos dalys, Po vidurnakčio ar&amp;quot;,b23)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai kokia išvestis:&lt;br /&gt;
&lt;br /&gt;
 a + b yra 555.4&lt;br /&gt;
 vardas yra Jonas&lt;br /&gt;
 Rūšiuotos dalys, Po vidurnakčio ar Šlamštas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kintamieji talpina duomenis. Viršuje aprašytoje programoje kintamieji yra &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;. Pagrindiniai du kintamųjų tipai yra ''tekstas'' ir ''skaičius''. Tekstas yra raidžių, skaičių ir kitų simbolių seka. Šiame pavyzdyje &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra tekstinio tipo kintamieji. &amp;lt;code&amp;gt;Šlamštas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a + b yra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas yra&amp;lt;/code&amp;gt;, ir &amp;lt;code&amp;gt;Rūšiuotos dalys, Po vidurnakčio ar&amp;lt;/code&amp;gt; šioje programoje yra tiesiog tekstinės reikšmės. Paprastas tekstas yra apsuptas kabučių &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;'&amp;lt;/code&amp;gt;.&lt;br /&gt;
Kitas kintamojo tipas yra skaičius. Atkreipkite dėmesį, kad kintamieji, kurie naudojami saugoti reikšmes, nenaudoja kabučių (&amp;quot; ir '). Jei norite naudoti realias ''reikšmes'', privalote naudoti kabutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reikšmė1 == Op!&lt;br /&gt;
reikšmė2 == &amp;quot;Op!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abu pavyzdžiai atrodo vienodai, bet pirmu atveju Python tikrins ar reikšmė, patalpinta kintamajame &amp;lt;code&amp;gt;reikšmė1&amp;lt;/code&amp;gt;, yra tokia pati kaip ''kintamojo'' &amp;lt;code&amp;gt;Pim&amp;lt;/code&amp;gt;. Antrame pavyzdyje Python tikrins ar tekstas (konkrečios raidės &amp;lt;code&amp;gt;O&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; ir&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;) yra tokios pat kaip ir &amp;lt;code&amp;gt;reikšmė2&amp;lt;/code&amp;gt; (skaitant toliau bus daugiau paaiškinimų apie tekstą ir &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Priskyrimai ===&lt;br /&gt;
&lt;br /&gt;
Gerai, dabar mes turime dėžutes, pavadintas kintamaisiais, taip pat informaciją, kuri gali būti kintamajame. Kompiuteris pamatys tokią eilutę &amp;lt;code&amp;gt;vardas = &amp;quot;Jonas&amp;quot;&amp;lt;/code&amp;gt; ir perskaitys ją kaip &amp;quot;Padėk tekstą &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt; į dėžę (ar kintamąjį) &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;&amp;quot;. Vėliau, pamatęs sakinį &amp;lt;code&amp;gt;c = a + b&amp;lt;/code&amp;gt; jį perskaitys kaip &amp;quot;padėt sumą &amp;lt;code&amp;gt;a + b&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;123.4 + 432&amp;lt;/code&amp;gt;, kas lygu &amp;lt;code&amp;gt;555.4&amp;lt;/code&amp;gt;, į &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;&amp;quot;. Dešinė sakinio pusė ''konvertuosis'' ir rezultatas bus padėtas į kintamajį kairėje pusėje (&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Tai yra vadinama ''priskyrimu''. Turėtume nemaišyti priskyrimo ir matematinio lygybės ženklo (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;). Ką reiškia &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; aptarsime vėliau.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O štai ir kitas kintamųjų naudojimo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a + 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a * 2&lt;br /&gt;
print(a)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir žinoma štai tokį rezultatą gausime:&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
Net jei kintamieji yra abiejose lygybės pusėse (pavyzdžiui šlamštas = šlamštas), kompiuteris vis tiek perskaitys taip: &amp;quot;Pirmiausia surask informaciją, kuri patalpinta ir tada surask, kur ją padėti&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dar viena programa prieš man pabangiant šį skyrių:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
sveikasSkaičius= int(input(&amp;quot;Įvesk sveiką skaičių: &amp;quot;))&lt;br /&gt;
tekstas = input(&amp;quot;Įvesk tekstą: &amp;quot;)&lt;br /&gt;
print(&amp;quot;skaičius =&amp;quot;, skaičius)&lt;br /&gt;
print(&amp;quot;skaičius yra&amp;quot;, type(skaičius ))&lt;br /&gt;
print(&amp;quot;skaičius * 2 =&amp;quot;, skaičius * 2)&lt;br /&gt;
print(&amp;quot;sveikas skaičius =&amp;quot;, sveikasSkaičius)&lt;br /&gt;
print(&amp;quot;sveikas skaičius yra&amp;quot;, type(sveikasSkaičius))&lt;br /&gt;
print(&amp;quot;sveikasSkaičius* 2 =&amp;quot;, sveikasSkaičius* 2)&lt;br /&gt;
print(&amp;quot;tekstas=&amp;quot;, tekstas)&lt;br /&gt;
print(&amp;quot;tekstas yra &amp;quot;, type(tekstas))&lt;br /&gt;
print(&amp;quot;tekstas* 2 =&amp;quot;, tekstas* 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk skaičių: '''12.34'''&lt;br /&gt;
 Įvesk sveiką skaičių: '''-3'''&lt;br /&gt;
 Įvesk tekstą: '''Labas'''&lt;br /&gt;
 skaičius = 12.34&lt;br /&gt;
 skaičius  yra &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
 skaičius * 2 = 24.68&lt;br /&gt;
 sveikas skaičius = -3&lt;br /&gt;
 sveikas skaičius yra &amp;lt;class 'int'&amp;gt;&lt;br /&gt;
 sveikasSkaičius * 2 = -6&lt;br /&gt;
 tekstas = Labas&lt;br /&gt;
 tekstas yra &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
 tekstas * 2 = LabasLabas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; ,&amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt; ir grąžino sveiką skaičių - reikšmę be kablelio, kai tuo tarpu &amp;lt;code&amp;gt;tekstas&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; grąžino tekstinę eilutę (gali būti aprašoma ir &amp;lt;code&amp;gt;str(input())&amp;lt;/code&amp;gt;). Jei tu nori, kad vartotojas įvestų skaičių su kableliu, naudok &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; kintamojo tipą. Jei nori, kad vartotojas įvestų sveiką skaičių, naudok &amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt;, bet jei nori teksto - naudok &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Antra pusė programos naudoja &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; funkciją, kuri nusako, kokio tipo kintamasis yra. Skaičius yra &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; tipo. Tai yra angliškų žodžių ''integer'' (sveikas skaičius) ir ''floating point'' (slankusis kablelis, naudojamas daugiausiai skaičiams su kableliu) trumpiniai. Tekstinė eilutė yra &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt;, trumpinys ''string'' (tekstinė eilutė). Sveiki skaičiai ir slankusis kablelis gali būti naudojami matematinėms funkcijoms, tekstas - ne. Atkreipk dėmesį, kai python daugina skaičių iš sveiko skaičiaus gaunamas rezultatas, kurio ir galima tikėtis, tačiau jei tekstas padauginamas iš sveiko skaičiaus - sukuriamos kelios teksto kopijos (pavyzdžiui, &amp;lt;code&amp;gt;tekstas * 2 = LabasLabas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Operacijos su tekstu daro kitokius dalykus nei operacijos su skaičiaus. Taip pat, kai kurios operacijos veikia tik su skaičiaus ir grąžina klaidą, jei bus bandoma panaudoti tesktą. Štai keletas interaktyvių pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Čia&amp;quot; + &amp;quot; &amp;quot; + &amp;quot;yra&amp;quot; + &amp;quot; junginys.&amp;quot;)&lt;br /&gt;
Čia yra junginys.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5 + &amp;quot;ha!&amp;quot;)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, ha!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(3 - 1)&lt;br /&gt;
2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;3&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
Traceback (paskutinis veiksmas):&lt;br /&gt;
  File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
TypeError: unsupported operand type(s) for -: 'str' and 'str'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai sąrašas kelių operacijų su tekstu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation &lt;br /&gt;
!Symbol &lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Pakartojimas&lt;br /&gt;
|&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;i&amp;quot; * 5 == &amp;quot;iiiii&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Sujungimas&lt;br /&gt;
|&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;Hello, &amp;quot; + &amp;quot;World!&amp;quot; == &amp;quot;Hello, World!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&lt;br /&gt;
'''Laikas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# ši programa apskaičiuoja laiko priklausomybę nuo greičio ir atstumo&lt;br /&gt;
print(&amp;quot;Įvesk greitį ir atstumą&amp;quot;)&lt;br /&gt;
greitis = float(input(&amp;quot;Greitis: &amp;quot;))&lt;br /&gt;
atstumas = float(input(&amp;quot;Atstumas: &amp;quot;))&lt;br /&gt;
laikas=(atstumas / greitis )&lt;br /&gt;
print(&amp;quot;Laikas:&amp;quot;, laikas)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''5'''&lt;br /&gt;
 Atstumas: '''10'''&lt;br /&gt;
 Laikas: 2.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''3.52'''&lt;br /&gt;
 Atstumas: '''45.6'''&lt;br /&gt;
 Laikas: 12.9545454545&lt;br /&gt;
&lt;br /&gt;
'''Plotas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa apskaičiuoja stačiakampio perimetrą ir plotą &lt;br /&gt;
print(&amp;quot;Įveskite stačiakampio informaciją&amp;quot;)&lt;br /&gt;
ilgis = float(input(&amp;quot;Ilgis: &amp;quot;))&lt;br /&gt;
plotis = float(input(&amp;quot;Plotis: &amp;quot;))&lt;br /&gt;
Perimetras=(2 * ilgis+ 2 * plotis) &lt;br /&gt;
print(&amp;quot;Plotas:&amp;quot;, ilgis * plotis)&lt;br /&gt;
print(&amp;quot;Perimetras:&amp;quot;, Perimetras)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įveskite stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''4'''&lt;br /&gt;
 Plotis: '''3'''&lt;br /&gt;
 Plotas: 12.0&lt;br /&gt;
 Perimetras: 14.0&lt;br /&gt;
&lt;br /&gt;
 Įveskite stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''2.53'''&lt;br /&gt;
 Plotis: '''5.2'''&lt;br /&gt;
 Plotas: 13.156&lt;br /&gt;
 Perimetras: 15.46&lt;br /&gt;
&lt;br /&gt;
'''Temperatura.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa konvertuoja temperatūra iš Farenheitų į Celsijų&lt;br /&gt;
far_temp = float(input(&amp;quot;Temperatura Farenheitais: &amp;quot;))&lt;br /&gt;
cels_temp = (far_temp - 32.0) *( 5.0 / 9.0)&lt;br /&gt;
print(&amp;quot;Temperatura Celsijaus laipsniais:&amp;quot;, cels_temp )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''32'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 0.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''-40'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: -40.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''212'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 100.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''98.6'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 37.0&lt;br /&gt;
&lt;br /&gt;
=== Užduotis ===&lt;br /&gt;
Parašyti programa, kuri priima 2 tekstines reikšmes, 2 skaičius ir vartotojo įvestį, sujungia juos be tarpų ir atvaizduoja tekstus, o tada sudaugina du skaičius ir atvaizduoja naujoje eilutėje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sprendimas ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;  &lt;br /&gt;
tekstas1 = input('Tekstas 1: ')&lt;br /&gt;
tekstas2 = input('Tekstas 2: ')&lt;br /&gt;
skaičius1 = float(input('Skaičius 1: '))&lt;br /&gt;
skaičius2 = float(input('Skaičius 2: '))&lt;br /&gt;
print(tekstas1 + tekstas2 )&lt;br /&gt;
print(skaičius1 * skaičius2 )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Hello, World |next=Count to 10}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3607</id>
		<title>Python Vadovėlis/Kas čia eina?</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3607"/>
		<updated>2021-12-08T13:26:30Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Pavyzdžiai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Įvestis ir kintamieji ===&lt;br /&gt;
Aš jaučiu, kad atėjo laikas tikrai sudėtingai programai. Štai ji:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Stop!&amp;quot;)&lt;br /&gt;
vartotojo_įvestis = input(&amp;quot; Kas čia eina? &amp;quot;)&lt;br /&gt;
print(&amp;quot;Gali praeiti,&amp;quot;,  vartotojo_įvestis )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kai '''Aš''' paleidau programą, štai ką '''mano''' ekranas parodė:&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina? '''Jonas'''&lt;br /&gt;
 Gali praeiti, Jonas&lt;br /&gt;
&lt;br /&gt;
''Pastaba: Jei paleisi kodą spausdamas &amp;quot;F5&amp;quot;, python shell išves tik tiek:''&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina?&lt;br /&gt;
&lt;br /&gt;
''Tu turi įvesti savo vardą į python shell ir tada paspausti enter norėdama/s pamatyt likusį tekstą.''&lt;br /&gt;
&lt;br /&gt;
Žinoma, kai tu paleisi programą, tavo ekranas atrodys kitaip dėl &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; užklausos.&lt;br /&gt;
Kai paleidai programą (juk paleidai, tiesa?), tu turėjai surinkti savo vardą ir tada paspausti Enter.&lt;br /&gt;
Programa atspausdino dalį teksto ir tavo vardą. Taip atrodo ''įvesties'' pavyzdys.&lt;br /&gt;
Programa pasiekia tam tikrą kodo tašką ir laukia vartotojo įvesties, kad duomenis galėtų panaudoti tolimesniuose procesuose.&lt;br /&gt;
&lt;br /&gt;
Žinoma, gauti informaciją iš vartotojo pasaulio yra nieko verta, jei tos informacijos nėra kur patalpinti. Ir šioje vietoje atsiranda kintamieji.&lt;br /&gt;
Paskutinėje programojo &amp;lt;code&amp;gt;user_input&amp;lt;/code&amp;gt; yra ''kintamasis''. Kintamieji yra kaip dėžes į kurias galima patalpinti tam tikras dalis informacijos. &lt;br /&gt;
Štai programa, parodanti kintamųjų pavyzdžius:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 123.4&lt;br /&gt;
b23 = 'Šlamštas'&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot;&lt;br /&gt;
b = 432&lt;br /&gt;
c = a + b&lt;br /&gt;
print(&amp;quot;a + b yra &amp;quot;,c)&lt;br /&gt;
print(&amp;quot;vardas yra &amp;quot;,vardas)&lt;br /&gt;
print(&amp;quot;Rūšiuotos dalys, Po vidurnakčio ar&amp;quot;,b23)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai kokia išvestis:&lt;br /&gt;
&lt;br /&gt;
 a + b yra 555.4&lt;br /&gt;
 vardas yra Jonas&lt;br /&gt;
 Rūšiuotos dalys, Po vidurnakčio ar Šlamštas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kintamieji talpina duomenis. Viršuje aprašytoje programoje kintamieji yra &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;. Pagrindiniai du kintamųjų tipai yra ''tekstas'' ir ''skaičius''. Tekstas yra raidžių, skaičių ir kitų simbolių seka. Šiame pavyzdyje &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra tekstinio tipo kintamieji. &amp;lt;code&amp;gt;Šlamštas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a + b yra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas yra&amp;lt;/code&amp;gt;, ir &amp;lt;code&amp;gt;Rūšiuotos dalys, Po vidurnakčio ar&amp;lt;/code&amp;gt; šioje programoje yra tiesiog tekstinės reikšmės. Paprastas tekstas yra apsuptas kabučių &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;'&amp;lt;/code&amp;gt;.&lt;br /&gt;
Kitas kintamojo tipas yra skaičius. Atkreipkite dėmesį, kad kintamieji, kurie naudojami saugoti reikšmes, nenaudoja kabučių (&amp;quot; ir '). Jei norite naudoti realias ''reikšmes'', privalote naudoti kabutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reikšmė1 == Op!&lt;br /&gt;
reikšmė2 == &amp;quot;Op!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abu pavyzdžiai atrodo vienodai, bet pirmu atveju Python tikrins ar reikšmė, patalpinta kintamajame &amp;lt;code&amp;gt;reikšmė1&amp;lt;/code&amp;gt;, yra tokia pati kaip ''kintamojo'' &amp;lt;code&amp;gt;Pim&amp;lt;/code&amp;gt;. Antrame pavyzdyje Python tikrins ar tekstas (konkrečios raidės &amp;lt;code&amp;gt;O&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; ir&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;) yra tokios pat kaip ir &amp;lt;code&amp;gt;reikšmė2&amp;lt;/code&amp;gt; (skaitant toliau bus daugiau paaiškinimų apie tekstą ir &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Priskyrimai ===&lt;br /&gt;
&lt;br /&gt;
Gerai, dabar mes turime dėžutes, pavadintas kintamaisiais, taip pat informaciją, kuri gali būti kintamajame. Kompiuteris pamatys tokią eilutę &amp;lt;code&amp;gt;vardas = &amp;quot;Jonas&amp;quot;&amp;lt;/code&amp;gt; ir perskaitys ją kaip &amp;quot;Padėk tekstą &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt; į dėžę (ar kintamąjį) &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;&amp;quot;. Vėliau, pamatęs sakinį &amp;lt;code&amp;gt;c = a + b&amp;lt;/code&amp;gt; jį perskaitys kaip &amp;quot;padėt sumą &amp;lt;code&amp;gt;a + b&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;123.4 + 432&amp;lt;/code&amp;gt;, kas lygu &amp;lt;code&amp;gt;555.4&amp;lt;/code&amp;gt;, į &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;&amp;quot;. Dešinė sakinio pusė ''konvertuosis'' ir rezultatas bus padėtas į kintamajį kairėje pusėje (&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Tai yra vadinama ''priskyrimu''. Turėtume nemaišyti priskyrimo ir matematinio lygybės ženklo (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;). Ką reiškia &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; aptarsime vėliau.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O štai ir kitas kintamųjų naudojimo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a + 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a * 2&lt;br /&gt;
print(a)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir žinoma štai tokį rezultatą gausime:&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
Net jei kintamieji yra abiejose lygybės pusėse (pavyzdžiui šlamštas = šlamštas), kompiuteris vis tiek perskaitys taip: &amp;quot;Pirmiausia surask informaciją, kuri patalpinta ir tada surask, kur ją padėti&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dar viena programa prieš man pabangiant šį skyrių:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
sveikasSkaičius= int(input(&amp;quot;Įvesk sveiką skaičių: &amp;quot;))&lt;br /&gt;
tekstas = input(&amp;quot;Įvesk tekstą: &amp;quot;)&lt;br /&gt;
print(&amp;quot;skaičius =&amp;quot;, skaičius)&lt;br /&gt;
print(&amp;quot;skaičius yra&amp;quot;, type(skaičius ))&lt;br /&gt;
print(&amp;quot;skaičius * 2 =&amp;quot;, skaičius * 2)&lt;br /&gt;
print(&amp;quot;sveikas skaičius =&amp;quot;, sveikasSkaičius)&lt;br /&gt;
print(&amp;quot;sveikas skaičius yra&amp;quot;, type(sveikasSkaičius))&lt;br /&gt;
print(&amp;quot;sveikasSkaičius* 2 =&amp;quot;, sveikasSkaičius* 2)&lt;br /&gt;
print(&amp;quot;tekstas=&amp;quot;, tekstas)&lt;br /&gt;
print(&amp;quot;tekstas yra &amp;quot;, type(tekstas))&lt;br /&gt;
print(&amp;quot;tekstas* 2 =&amp;quot;, tekstas* 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk skaičių: '''12.34'''&lt;br /&gt;
 Įvesk sveiką skaičių: '''-3'''&lt;br /&gt;
 Įvesk tekstą: '''Labas'''&lt;br /&gt;
 skaičius = 12.34&lt;br /&gt;
 skaičius  yra &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
 skaičius * 2 = 24.68&lt;br /&gt;
 sveikas skaičius = -3&lt;br /&gt;
 sveikas skaičius yra &amp;lt;class 'int'&amp;gt;&lt;br /&gt;
 sveikasSkaičius * 2 = -6&lt;br /&gt;
 tekstas = Labas&lt;br /&gt;
 tekstas yra &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
 tekstas * 2 = LabasLabas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; ,&amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt; ir grąžino sveiką skaičių - reikšmę be kablelio, kai tuo tarpu &amp;lt;code&amp;gt;tekstas&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; grąžino tekstinę eilutę (gali būti aprašoma ir &amp;lt;code&amp;gt;str(input())&amp;lt;/code&amp;gt;). Jei tu nori, kad vartotojas įvestų skaičių su kableliu, naudok &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; kintamojo tipą. Jei nori, kad vartotojas įvestų sveiką skaičių, naudok &amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt;, bet jei nori teksto - naudok &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Antra pusė programos naudoja &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; funkciją, kuri nusako, kokio tipo kintamasis yra. Skaičius yra &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; tipo. Tai yra angliškų žodžių ''integer'' (sveikas skaičius) ir ''floating point'' (slankusis kablelis, naudojamas daugiausiai skaičiams su kableliu) trumpiniai. Tekstinė eilutė yra &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt;, trumpinys ''string'' (tekstinė eilutė). Sveiki skaičiai ir slankusis kablelis gali būti naudojami matematinėms funkcijoms, tekstas - ne. Atkreipk dėmesį, kai python daugina skaičių iš sveiko skaičiaus gaunamas rezultatas, kurio ir galima tikėtis, tačiau jei tekstas padauginamas iš sveiko skaičiaus - sukuriamos kelios teksto kopijos (pavyzdžiui, &amp;lt;code&amp;gt;tekstas * 2 = LabasLabas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Operacijos su tekstu daro kitokius dalykus nei operacijos su skaičiaus. Taip pat, kai kurios operacijos veikia tik su skaičiaus ir grąžina klaidą, jei bus bandoma panaudoti tesktą. Štai keletas interaktyvių pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Čia&amp;quot; + &amp;quot; &amp;quot; + &amp;quot;yra&amp;quot; + &amp;quot; junginys.&amp;quot;)&lt;br /&gt;
Čia yra junginys.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5 + &amp;quot;ha!&amp;quot;)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, ha!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(3 - 1)&lt;br /&gt;
2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;3&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
Traceback (paskutinis veiksmas):&lt;br /&gt;
  File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
TypeError: unsupported operand type(s) for -: 'str' and 'str'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai sąrašas kelių operacijų su tekstu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation &lt;br /&gt;
!Symbol &lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Pakartojimas&lt;br /&gt;
|&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;i&amp;quot; * 5 == &amp;quot;iiiii&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Sujungimas&lt;br /&gt;
|&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;Hello, &amp;quot; + &amp;quot;World!&amp;quot; == &amp;quot;Hello, World!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&lt;br /&gt;
'''Laikas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# ši programa apskaičiuoja laiko priklausomybę nuo greičio ir atstumo&lt;br /&gt;
print(&amp;quot;Įvesk greitį ir atstumą&amp;quot;)&lt;br /&gt;
greitis = float(input(&amp;quot;Greitis: &amp;quot;))&lt;br /&gt;
atstumas = float(input(&amp;quot;Atstumas: &amp;quot;))&lt;br /&gt;
laikas=(atstumas / greitis )&lt;br /&gt;
print(&amp;quot;Laikas:&amp;quot;, laikas)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''5'''&lt;br /&gt;
 Atstumas: '''10'''&lt;br /&gt;
 Laikas: 2.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''3.52'''&lt;br /&gt;
 Atstumas: '''45.6'''&lt;br /&gt;
 Laikas: 12.9545454545&lt;br /&gt;
&lt;br /&gt;
'''Plotas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa apskaičiuoja stačiakampio perimetrą ir plotą &lt;br /&gt;
print(&amp;quot;Įveskite stačiakampio informaciją&amp;quot;)&lt;br /&gt;
ilgis = float(input(&amp;quot;Ilgis: &amp;quot;))&lt;br /&gt;
plotis = float(input(&amp;quot;Plotis: &amp;quot;))&lt;br /&gt;
Perimetras=(2 * ilgis+ 2 * plotis) &lt;br /&gt;
print(&amp;quot;Plotas:&amp;quot;, ilgis * plotis)&lt;br /&gt;
print(&amp;quot;Perimetras:&amp;quot;, Perimetras)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įveskite stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''4'''&lt;br /&gt;
 Plotis: '''3'''&lt;br /&gt;
 Plotas: 12.0&lt;br /&gt;
 Perimetras: 14.0&lt;br /&gt;
&lt;br /&gt;
 Įveskite stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''2.53'''&lt;br /&gt;
 Plotis: '''5.2'''&lt;br /&gt;
 Plotas: 13.156&lt;br /&gt;
 Perimetras: 15.46&lt;br /&gt;
&lt;br /&gt;
'''Temperatura.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa koncertuoja temperatūra iš Farenheitų į Celsijų&lt;br /&gt;
far_temp = float(input(&amp;quot;Temperatura Farenheitais: &amp;quot;))&lt;br /&gt;
cels_temp = (far_temp - 32.0) *( 5.0 / 9.0)&lt;br /&gt;
print(&amp;quot;Temperatura Celsijaus laipsniais:&amp;quot;, cels_temp )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''32'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 0.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''-40'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: -40.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''212'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 100.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''98.6'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 37.0&lt;br /&gt;
&lt;br /&gt;
=== Užduotis ===&lt;br /&gt;
Parašyti programa, kuri priima 2 tekstines reikšmes, 2 skaičius ir vartotojo įvestį, sujungia juos be tarpų ir atvaizduoja tekstus, o tada sudaugina du skaičius ir atvaizduoja naujoje eilutėje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sprendimas ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;  &lt;br /&gt;
tekstas1 = input('Tekstas 1: ')&lt;br /&gt;
tekstas2 = input('Tekstas 2: ')&lt;br /&gt;
skaičius1 = float(input('Skaičius 1: '))&lt;br /&gt;
skaičius2 = float(input('Skaičius 2: '))&lt;br /&gt;
print(tekstas1 + tekstas2 )&lt;br /&gt;
print(skaičius1 * skaičius2 )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Hello, World |next=Count to 10}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3606</id>
		<title>Python Vadovėlis/Kas čia eina?</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3606"/>
		<updated>2021-12-08T13:26:07Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Pavyzdžiai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Įvestis ir kintamieji ===&lt;br /&gt;
Aš jaučiu, kad atėjo laikas tikrai sudėtingai programai. Štai ji:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Stop!&amp;quot;)&lt;br /&gt;
vartotojo_įvestis = input(&amp;quot; Kas čia eina? &amp;quot;)&lt;br /&gt;
print(&amp;quot;Gali praeiti,&amp;quot;,  vartotojo_įvestis )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kai '''Aš''' paleidau programą, štai ką '''mano''' ekranas parodė:&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina? '''Jonas'''&lt;br /&gt;
 Gali praeiti, Jonas&lt;br /&gt;
&lt;br /&gt;
''Pastaba: Jei paleisi kodą spausdamas &amp;quot;F5&amp;quot;, python shell išves tik tiek:''&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina?&lt;br /&gt;
&lt;br /&gt;
''Tu turi įvesti savo vardą į python shell ir tada paspausti enter norėdama/s pamatyt likusį tekstą.''&lt;br /&gt;
&lt;br /&gt;
Žinoma, kai tu paleisi programą, tavo ekranas atrodys kitaip dėl &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; užklausos.&lt;br /&gt;
Kai paleidai programą (juk paleidai, tiesa?), tu turėjai surinkti savo vardą ir tada paspausti Enter.&lt;br /&gt;
Programa atspausdino dalį teksto ir tavo vardą. Taip atrodo ''įvesties'' pavyzdys.&lt;br /&gt;
Programa pasiekia tam tikrą kodo tašką ir laukia vartotojo įvesties, kad duomenis galėtų panaudoti tolimesniuose procesuose.&lt;br /&gt;
&lt;br /&gt;
Žinoma, gauti informaciją iš vartotojo pasaulio yra nieko verta, jei tos informacijos nėra kur patalpinti. Ir šioje vietoje atsiranda kintamieji.&lt;br /&gt;
Paskutinėje programojo &amp;lt;code&amp;gt;user_input&amp;lt;/code&amp;gt; yra ''kintamasis''. Kintamieji yra kaip dėžes į kurias galima patalpinti tam tikras dalis informacijos. &lt;br /&gt;
Štai programa, parodanti kintamųjų pavyzdžius:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 123.4&lt;br /&gt;
b23 = 'Šlamštas'&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot;&lt;br /&gt;
b = 432&lt;br /&gt;
c = a + b&lt;br /&gt;
print(&amp;quot;a + b yra &amp;quot;,c)&lt;br /&gt;
print(&amp;quot;vardas yra &amp;quot;,vardas)&lt;br /&gt;
print(&amp;quot;Rūšiuotos dalys, Po vidurnakčio ar&amp;quot;,b23)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai kokia išvestis:&lt;br /&gt;
&lt;br /&gt;
 a + b yra 555.4&lt;br /&gt;
 vardas yra Jonas&lt;br /&gt;
 Rūšiuotos dalys, Po vidurnakčio ar Šlamštas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kintamieji talpina duomenis. Viršuje aprašytoje programoje kintamieji yra &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;. Pagrindiniai du kintamųjų tipai yra ''tekstas'' ir ''skaičius''. Tekstas yra raidžių, skaičių ir kitų simbolių seka. Šiame pavyzdyje &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra tekstinio tipo kintamieji. &amp;lt;code&amp;gt;Šlamštas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a + b yra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas yra&amp;lt;/code&amp;gt;, ir &amp;lt;code&amp;gt;Rūšiuotos dalys, Po vidurnakčio ar&amp;lt;/code&amp;gt; šioje programoje yra tiesiog tekstinės reikšmės. Paprastas tekstas yra apsuptas kabučių &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;'&amp;lt;/code&amp;gt;.&lt;br /&gt;
Kitas kintamojo tipas yra skaičius. Atkreipkite dėmesį, kad kintamieji, kurie naudojami saugoti reikšmes, nenaudoja kabučių (&amp;quot; ir '). Jei norite naudoti realias ''reikšmes'', privalote naudoti kabutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reikšmė1 == Op!&lt;br /&gt;
reikšmė2 == &amp;quot;Op!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abu pavyzdžiai atrodo vienodai, bet pirmu atveju Python tikrins ar reikšmė, patalpinta kintamajame &amp;lt;code&amp;gt;reikšmė1&amp;lt;/code&amp;gt;, yra tokia pati kaip ''kintamojo'' &amp;lt;code&amp;gt;Pim&amp;lt;/code&amp;gt;. Antrame pavyzdyje Python tikrins ar tekstas (konkrečios raidės &amp;lt;code&amp;gt;O&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; ir&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;) yra tokios pat kaip ir &amp;lt;code&amp;gt;reikšmė2&amp;lt;/code&amp;gt; (skaitant toliau bus daugiau paaiškinimų apie tekstą ir &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Priskyrimai ===&lt;br /&gt;
&lt;br /&gt;
Gerai, dabar mes turime dėžutes, pavadintas kintamaisiais, taip pat informaciją, kuri gali būti kintamajame. Kompiuteris pamatys tokią eilutę &amp;lt;code&amp;gt;vardas = &amp;quot;Jonas&amp;quot;&amp;lt;/code&amp;gt; ir perskaitys ją kaip &amp;quot;Padėk tekstą &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt; į dėžę (ar kintamąjį) &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;&amp;quot;. Vėliau, pamatęs sakinį &amp;lt;code&amp;gt;c = a + b&amp;lt;/code&amp;gt; jį perskaitys kaip &amp;quot;padėt sumą &amp;lt;code&amp;gt;a + b&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;123.4 + 432&amp;lt;/code&amp;gt;, kas lygu &amp;lt;code&amp;gt;555.4&amp;lt;/code&amp;gt;, į &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;&amp;quot;. Dešinė sakinio pusė ''konvertuosis'' ir rezultatas bus padėtas į kintamajį kairėje pusėje (&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Tai yra vadinama ''priskyrimu''. Turėtume nemaišyti priskyrimo ir matematinio lygybės ženklo (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;). Ką reiškia &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; aptarsime vėliau.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O štai ir kitas kintamųjų naudojimo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a + 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a * 2&lt;br /&gt;
print(a)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir žinoma štai tokį rezultatą gausime:&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
Net jei kintamieji yra abiejose lygybės pusėse (pavyzdžiui šlamštas = šlamštas), kompiuteris vis tiek perskaitys taip: &amp;quot;Pirmiausia surask informaciją, kuri patalpinta ir tada surask, kur ją padėti&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dar viena programa prieš man pabangiant šį skyrių:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
sveikasSkaičius= int(input(&amp;quot;Įvesk sveiką skaičių: &amp;quot;))&lt;br /&gt;
tekstas = input(&amp;quot;Įvesk tekstą: &amp;quot;)&lt;br /&gt;
print(&amp;quot;skaičius =&amp;quot;, skaičius)&lt;br /&gt;
print(&amp;quot;skaičius yra&amp;quot;, type(skaičius ))&lt;br /&gt;
print(&amp;quot;skaičius * 2 =&amp;quot;, skaičius * 2)&lt;br /&gt;
print(&amp;quot;sveikas skaičius =&amp;quot;, sveikasSkaičius)&lt;br /&gt;
print(&amp;quot;sveikas skaičius yra&amp;quot;, type(sveikasSkaičius))&lt;br /&gt;
print(&amp;quot;sveikasSkaičius* 2 =&amp;quot;, sveikasSkaičius* 2)&lt;br /&gt;
print(&amp;quot;tekstas=&amp;quot;, tekstas)&lt;br /&gt;
print(&amp;quot;tekstas yra &amp;quot;, type(tekstas))&lt;br /&gt;
print(&amp;quot;tekstas* 2 =&amp;quot;, tekstas* 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk skaičių: '''12.34'''&lt;br /&gt;
 Įvesk sveiką skaičių: '''-3'''&lt;br /&gt;
 Įvesk tekstą: '''Labas'''&lt;br /&gt;
 skaičius = 12.34&lt;br /&gt;
 skaičius  yra &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
 skaičius * 2 = 24.68&lt;br /&gt;
 sveikas skaičius = -3&lt;br /&gt;
 sveikas skaičius yra &amp;lt;class 'int'&amp;gt;&lt;br /&gt;
 sveikasSkaičius * 2 = -6&lt;br /&gt;
 tekstas = Labas&lt;br /&gt;
 tekstas yra &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
 tekstas * 2 = LabasLabas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; ,&amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt; ir grąžino sveiką skaičių - reikšmę be kablelio, kai tuo tarpu &amp;lt;code&amp;gt;tekstas&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; grąžino tekstinę eilutę (gali būti aprašoma ir &amp;lt;code&amp;gt;str(input())&amp;lt;/code&amp;gt;). Jei tu nori, kad vartotojas įvestų skaičių su kableliu, naudok &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; kintamojo tipą. Jei nori, kad vartotojas įvestų sveiką skaičių, naudok &amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt;, bet jei nori teksto - naudok &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Antra pusė programos naudoja &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; funkciją, kuri nusako, kokio tipo kintamasis yra. Skaičius yra &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; tipo. Tai yra angliškų žodžių ''integer'' (sveikas skaičius) ir ''floating point'' (slankusis kablelis, naudojamas daugiausiai skaičiams su kableliu) trumpiniai. Tekstinė eilutė yra &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt;, trumpinys ''string'' (tekstinė eilutė). Sveiki skaičiai ir slankusis kablelis gali būti naudojami matematinėms funkcijoms, tekstas - ne. Atkreipk dėmesį, kai python daugina skaičių iš sveiko skaičiaus gaunamas rezultatas, kurio ir galima tikėtis, tačiau jei tekstas padauginamas iš sveiko skaičiaus - sukuriamos kelios teksto kopijos (pavyzdžiui, &amp;lt;code&amp;gt;tekstas * 2 = LabasLabas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Operacijos su tekstu daro kitokius dalykus nei operacijos su skaičiaus. Taip pat, kai kurios operacijos veikia tik su skaičiaus ir grąžina klaidą, jei bus bandoma panaudoti tesktą. Štai keletas interaktyvių pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Čia&amp;quot; + &amp;quot; &amp;quot; + &amp;quot;yra&amp;quot; + &amp;quot; junginys.&amp;quot;)&lt;br /&gt;
Čia yra junginys.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5 + &amp;quot;ha!&amp;quot;)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, ha!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(3 - 1)&lt;br /&gt;
2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;3&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
Traceback (paskutinis veiksmas):&lt;br /&gt;
  File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
TypeError: unsupported operand type(s) for -: 'str' and 'str'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai sąrašas kelių operacijų su tekstu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation &lt;br /&gt;
!Symbol &lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Pakartojimas&lt;br /&gt;
|&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;i&amp;quot; * 5 == &amp;quot;iiiii&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Sujungimas&lt;br /&gt;
|&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;Hello, &amp;quot; + &amp;quot;World!&amp;quot; == &amp;quot;Hello, World!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&lt;br /&gt;
'''Laikas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# ši programa apskaičiuoja laiko priklausomybę nuo greičio ir atstumo&lt;br /&gt;
print(&amp;quot;Įvesk greitį ir atstumą&amp;quot;)&lt;br /&gt;
greitis = float(input(&amp;quot;Greitis: &amp;quot;))&lt;br /&gt;
atstumas = float(input(&amp;quot;Atstumas: &amp;quot;))&lt;br /&gt;
laikas=(atstumas / greitis )&lt;br /&gt;
print(&amp;quot;Laikas:&amp;quot;, laikas)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''5'''&lt;br /&gt;
 Atstumas: '''10'''&lt;br /&gt;
 Laikas: 2.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''3.52'''&lt;br /&gt;
 Atstumas: '''45.6'''&lt;br /&gt;
 Laikas: 12.9545454545&lt;br /&gt;
&lt;br /&gt;
'''Plotas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa apskaičiuoja stačiakampio perimetrą ir plotą &lt;br /&gt;
print(&amp;quot;Įvestike stačiakampio informaciją&amp;quot;)&lt;br /&gt;
ilgis = float(input(&amp;quot;Ilgis: &amp;quot;))&lt;br /&gt;
plotis = float(input(&amp;quot;Plotis: &amp;quot;))&lt;br /&gt;
Perimetras=(2 * ilgis+ 2 * plotis) &lt;br /&gt;
print(&amp;quot;Plotas:&amp;quot;, ilgis * plotis)&lt;br /&gt;
print(&amp;quot;Perimetras:&amp;quot;, Perimetras)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įveskite stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''4'''&lt;br /&gt;
 Plotis: '''3'''&lt;br /&gt;
 Plotas: 12.0&lt;br /&gt;
 Perimetras: 14.0&lt;br /&gt;
&lt;br /&gt;
 Įveskite stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''2.53'''&lt;br /&gt;
 Plotis: '''5.2'''&lt;br /&gt;
 Plotas: 13.156&lt;br /&gt;
 Perimetras: 15.46&lt;br /&gt;
&lt;br /&gt;
'''Temperatura.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa koncertuoja temperatūra iš Farenheitų į Celsijų&lt;br /&gt;
far_temp = float(input(&amp;quot;Temperatura Farenheitais: &amp;quot;))&lt;br /&gt;
cels_temp = (far_temp - 32.0) *( 5.0 / 9.0)&lt;br /&gt;
print(&amp;quot;Temperatura Celsijaus laipsniais:&amp;quot;, cels_temp )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''32'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 0.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''-40'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: -40.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''212'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 100.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''98.6'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 37.0&lt;br /&gt;
&lt;br /&gt;
=== Užduotis ===&lt;br /&gt;
Parašyti programa, kuri priima 2 tekstines reikšmes, 2 skaičius ir vartotojo įvestį, sujungia juos be tarpų ir atvaizduoja tekstus, o tada sudaugina du skaičius ir atvaizduoja naujoje eilutėje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sprendimas ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;  &lt;br /&gt;
tekstas1 = input('Tekstas 1: ')&lt;br /&gt;
tekstas2 = input('Tekstas 2: ')&lt;br /&gt;
skaičius1 = float(input('Skaičius 1: '))&lt;br /&gt;
skaičius2 = float(input('Skaičius 2: '))&lt;br /&gt;
print(tekstas1 + tekstas2 )&lt;br /&gt;
print(skaičius1 * skaičius2 )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Hello, World |next=Count to 10}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3605</id>
		<title>Python Vadovėlis/Kas čia eina?</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3605"/>
		<updated>2021-12-08T13:15:15Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Priskyrimai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Įvestis ir kintamieji ===&lt;br /&gt;
Aš jaučiu, kad atėjo laikas tikrai sudėtingai programai. Štai ji:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Stop!&amp;quot;)&lt;br /&gt;
vartotojo_įvestis = input(&amp;quot; Kas čia eina? &amp;quot;)&lt;br /&gt;
print(&amp;quot;Gali praeiti,&amp;quot;,  vartotojo_įvestis )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kai '''Aš''' paleidau programą, štai ką '''mano''' ekranas parodė:&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina? '''Jonas'''&lt;br /&gt;
 Gali praeiti, Jonas&lt;br /&gt;
&lt;br /&gt;
''Pastaba: Jei paleisi kodą spausdamas &amp;quot;F5&amp;quot;, python shell išves tik tiek:''&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina?&lt;br /&gt;
&lt;br /&gt;
''Tu turi įvesti savo vardą į python shell ir tada paspausti enter norėdama/s pamatyt likusį tekstą.''&lt;br /&gt;
&lt;br /&gt;
Žinoma, kai tu paleisi programą, tavo ekranas atrodys kitaip dėl &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; užklausos.&lt;br /&gt;
Kai paleidai programą (juk paleidai, tiesa?), tu turėjai surinkti savo vardą ir tada paspausti Enter.&lt;br /&gt;
Programa atspausdino dalį teksto ir tavo vardą. Taip atrodo ''įvesties'' pavyzdys.&lt;br /&gt;
Programa pasiekia tam tikrą kodo tašką ir laukia vartotojo įvesties, kad duomenis galėtų panaudoti tolimesniuose procesuose.&lt;br /&gt;
&lt;br /&gt;
Žinoma, gauti informaciją iš vartotojo pasaulio yra nieko verta, jei tos informacijos nėra kur patalpinti. Ir šioje vietoje atsiranda kintamieji.&lt;br /&gt;
Paskutinėje programojo &amp;lt;code&amp;gt;user_input&amp;lt;/code&amp;gt; yra ''kintamasis''. Kintamieji yra kaip dėžes į kurias galima patalpinti tam tikras dalis informacijos. &lt;br /&gt;
Štai programa, parodanti kintamųjų pavyzdžius:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 123.4&lt;br /&gt;
b23 = 'Šlamštas'&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot;&lt;br /&gt;
b = 432&lt;br /&gt;
c = a + b&lt;br /&gt;
print(&amp;quot;a + b yra &amp;quot;,c)&lt;br /&gt;
print(&amp;quot;vardas yra &amp;quot;,vardas)&lt;br /&gt;
print(&amp;quot;Rūšiuotos dalys, Po vidurnakčio ar&amp;quot;,b23)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai kokia išvestis:&lt;br /&gt;
&lt;br /&gt;
 a + b yra 555.4&lt;br /&gt;
 vardas yra Jonas&lt;br /&gt;
 Rūšiuotos dalys, Po vidurnakčio ar Šlamštas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kintamieji talpina duomenis. Viršuje aprašytoje programoje kintamieji yra &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;. Pagrindiniai du kintamųjų tipai yra ''tekstas'' ir ''skaičius''. Tekstas yra raidžių, skaičių ir kitų simbolių seka. Šiame pavyzdyje &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra tekstinio tipo kintamieji. &amp;lt;code&amp;gt;Šlamštas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a + b yra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas yra&amp;lt;/code&amp;gt;, ir &amp;lt;code&amp;gt;Rūšiuotos dalys, Po vidurnakčio ar&amp;lt;/code&amp;gt; šioje programoje yra tiesiog tekstinės reikšmės. Paprastas tekstas yra apsuptas kabučių &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;'&amp;lt;/code&amp;gt;.&lt;br /&gt;
Kitas kintamojo tipas yra skaičius. Atkreipkite dėmesį, kad kintamieji, kurie naudojami saugoti reikšmes, nenaudoja kabučių (&amp;quot; ir '). Jei norite naudoti realias ''reikšmes'', privalote naudoti kabutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reikšmė1 == Op!&lt;br /&gt;
reikšmė2 == &amp;quot;Op!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abu pavyzdžiai atrodo vienodai, bet pirmu atveju Python tikrins ar reikšmė, patalpinta kintamajame &amp;lt;code&amp;gt;reikšmė1&amp;lt;/code&amp;gt;, yra tokia pati kaip ''kintamojo'' &amp;lt;code&amp;gt;Pim&amp;lt;/code&amp;gt;. Antrame pavyzdyje Python tikrins ar tekstas (konkrečios raidės &amp;lt;code&amp;gt;O&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; ir&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;) yra tokios pat kaip ir &amp;lt;code&amp;gt;reikšmė2&amp;lt;/code&amp;gt; (skaitant toliau bus daugiau paaiškinimų apie tekstą ir &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Priskyrimai ===&lt;br /&gt;
&lt;br /&gt;
Gerai, dabar mes turime dėžutes, pavadintas kintamaisiais, taip pat informaciją, kuri gali būti kintamajame. Kompiuteris pamatys tokią eilutę &amp;lt;code&amp;gt;vardas = &amp;quot;Jonas&amp;quot;&amp;lt;/code&amp;gt; ir perskaitys ją kaip &amp;quot;Padėk tekstą &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt; į dėžę (ar kintamąjį) &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;&amp;quot;. Vėliau, pamatęs sakinį &amp;lt;code&amp;gt;c = a + b&amp;lt;/code&amp;gt; jį perskaitys kaip &amp;quot;padėt sumą &amp;lt;code&amp;gt;a + b&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;123.4 + 432&amp;lt;/code&amp;gt;, kas lygu &amp;lt;code&amp;gt;555.4&amp;lt;/code&amp;gt;, į &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;&amp;quot;. Dešinė sakinio pusė ''konvertuosis'' ir rezultatas bus padėtas į kintamajį kairėje pusėje (&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Tai yra vadinama ''priskyrimu''. Turėtume nemaišyti priskyrimo ir matematinio lygybės ženklo (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;). Ką reiškia &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; aptarsime vėliau.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O štai ir kitas kintamųjų naudojimo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a + 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a * 2&lt;br /&gt;
print(a)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir žinoma štai tokį rezultatą gausime:&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
Net jei kintamieji yra abiejose lygybės pusėse (pavyzdžiui šlamštas = šlamštas), kompiuteris vis tiek perskaitys taip: &amp;quot;Pirmiausia surask informaciją, kuri patalpinta ir tada surask, kur ją padėti&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dar viena programa prieš man pabangiant šį skyrių:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
sveikasSkaičius= int(input(&amp;quot;Įvesk sveiką skaičių: &amp;quot;))&lt;br /&gt;
tekstas = input(&amp;quot;Įvesk tekstą: &amp;quot;)&lt;br /&gt;
print(&amp;quot;skaičius =&amp;quot;, skaičius)&lt;br /&gt;
print(&amp;quot;skaičius yra&amp;quot;, type(skaičius ))&lt;br /&gt;
print(&amp;quot;skaičius * 2 =&amp;quot;, skaičius * 2)&lt;br /&gt;
print(&amp;quot;sveikas skaičius =&amp;quot;, sveikasSkaičius)&lt;br /&gt;
print(&amp;quot;sveikas skaičius yra&amp;quot;, type(sveikasSkaičius))&lt;br /&gt;
print(&amp;quot;sveikasSkaičius* 2 =&amp;quot;, sveikasSkaičius* 2)&lt;br /&gt;
print(&amp;quot;tekstas=&amp;quot;, tekstas)&lt;br /&gt;
print(&amp;quot;tekstas yra &amp;quot;, type(tekstas))&lt;br /&gt;
print(&amp;quot;tekstas* 2 =&amp;quot;, tekstas* 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk skaičių: '''12.34'''&lt;br /&gt;
 Įvesk sveiką skaičių: '''-3'''&lt;br /&gt;
 Įvesk tekstą: '''Labas'''&lt;br /&gt;
 skaičius = 12.34&lt;br /&gt;
 skaičius  yra &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
 skaičius * 2 = 24.68&lt;br /&gt;
 sveikas skaičius = -3&lt;br /&gt;
 sveikas skaičius yra &amp;lt;class 'int'&amp;gt;&lt;br /&gt;
 sveikasSkaičius * 2 = -6&lt;br /&gt;
 tekstas = Labas&lt;br /&gt;
 tekstas yra &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
 tekstas * 2 = LabasLabas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesį, kad &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; ,&amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt; ir grąžino sveiką skaičių - reikšmę be kablelio, kai tuo tarpu &amp;lt;code&amp;gt;tekstas&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; grąžino tekstinę eilutę (gali būti aprašoma ir &amp;lt;code&amp;gt;str(input())&amp;lt;/code&amp;gt;). Jei tu nori, kad vartotojas įvestų skaičių su kableliu, naudok &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; kintamojo tipą. Jei nori, kad vartotojas įvestų sveiką skaičių, naudok &amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt;, bet jei nori teksto - naudok &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Antra pusė programos naudoja &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; funkciją, kuri nusako, kokio tipo kintamasis yra. Skaičius yra &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; tipo. Tai yra angliškų žodžių ''integer'' (sveikas skaičius) ir ''floating point'' (slankusis kablelis, naudojamas daugiausiai skaičiams su kableliu) trumpiniai. Tekstinė eilutė yra &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt;, trumpinys ''string'' (tekstinė eilutė). Sveiki skaičiai ir slankusis kablelis gali būti naudojami matematinėms funkcijoms, tekstas - ne. Atkreipk dėmesį, kai python daugina skaičių iš sveiko skaičiaus gaunamas rezultatas, kurio ir galima tikėtis, tačiau jei tekstas padauginamas iš sveiko skaičiaus - sukuriamos kelios teksto kopijos (pavyzdžiui, &amp;lt;code&amp;gt;tekstas * 2 = LabasLabas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Operacijos su tekstu daro kitokius dalykus nei operacijos su skaičiaus. Taip pat, kai kurios operacijos veikia tik su skaičiaus ir grąžina klaidą, jei bus bandoma panaudoti tesktą. Štai keletas interaktyvių pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Čia&amp;quot; + &amp;quot; &amp;quot; + &amp;quot;yra&amp;quot; + &amp;quot; junginys.&amp;quot;)&lt;br /&gt;
Čia yra junginys.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5 + &amp;quot;ha!&amp;quot;)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, ha!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(3 - 1)&lt;br /&gt;
2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;3&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
Traceback (paskutinis veiksmas):&lt;br /&gt;
  File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
TypeError: unsupported operand type(s) for -: 'str' and 'str'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai sąrašas kelių operacijų su tekstu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation &lt;br /&gt;
!Symbol &lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Pakartojimas&lt;br /&gt;
|&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;i&amp;quot; * 5 == &amp;quot;iiiii&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Sujungimas&lt;br /&gt;
|&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;Hello, &amp;quot; + &amp;quot;World!&amp;quot; == &amp;quot;Hello, World!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&lt;br /&gt;
'''Laikas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# ši programa apskaičiuoja laiko priklausomybę nuo greičio ir atstumo&lt;br /&gt;
print(&amp;quot;Įvesk greitį ir atstumą&amp;quot;)&lt;br /&gt;
greitis = float(input(&amp;quot;Greitis: &amp;quot;))&lt;br /&gt;
atstumas = float(input(&amp;quot;Atstumas: &amp;quot;))&lt;br /&gt;
laikas=(atstumas / greitis )&lt;br /&gt;
print(&amp;quot;Laikas:&amp;quot;, laikas)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''5'''&lt;br /&gt;
 Atstumas: '''10'''&lt;br /&gt;
 Laikas: 2.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''3.52'''&lt;br /&gt;
 Atstumas: '''45.6'''&lt;br /&gt;
 Laikas: 12.9545454545&lt;br /&gt;
&lt;br /&gt;
'''Plotas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa apskaičiuoja stačiakampio perimetrą ir plotą &lt;br /&gt;
print(&amp;quot;Įvestike stačiakampio informaciją&amp;quot;)&lt;br /&gt;
ilgis = float(input(&amp;quot;Ilgis: &amp;quot;))&lt;br /&gt;
plotis = float(input(&amp;quot;Plotis: &amp;quot;))&lt;br /&gt;
Perimetras=(2 * ilgis+ 2 * plotis) &lt;br /&gt;
print(&amp;quot;Plotas:&amp;quot;, ilgis * plotis)&lt;br /&gt;
print(&amp;quot;Perimetras:&amp;quot;, Perimetras)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''4'''&lt;br /&gt;
 Plotis: '''3'''&lt;br /&gt;
 Plotas: 12.0&lt;br /&gt;
 Perimetras: 14.0&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''2.53'''&lt;br /&gt;
 Plotis: '''5.2'''&lt;br /&gt;
 Plotas: 13.156&lt;br /&gt;
 Perimetras: 15.46&lt;br /&gt;
&lt;br /&gt;
'''Temperatura.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa koncertuoja temperatūra iš Farenheitų į Celsijų&lt;br /&gt;
far_temp = float(input(&amp;quot;Temperatura Farenheitais: &amp;quot;))&lt;br /&gt;
cels_temp = (far_temp - 32.0) *( 5.0 / 9.0)&lt;br /&gt;
print(&amp;quot;Temperatura Celsijaus laipsniais:&amp;quot;, cels_temp )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''32'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 0.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''-40'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: -40.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''212'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 100.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''98.6'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 37.0&lt;br /&gt;
&lt;br /&gt;
=== Užduotis ===&lt;br /&gt;
Parašyti programa, kuri priima 2 tekstines reikšmes, 2 skaičius ir vartotojo įvestį, sujungia juos be tarpų ir atvaizduoja tekstus, o tada sudaugina du skaičius ir atvaizduoja naujoje eilutėje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sprendimas ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;  &lt;br /&gt;
tekstas1 = input('Tekstas 1: ')&lt;br /&gt;
tekstas2 = input('Tekstas 2: ')&lt;br /&gt;
skaičius1 = float(input('Skaičius 1: '))&lt;br /&gt;
skaičius2 = float(input('Skaičius 2: '))&lt;br /&gt;
print(tekstas1 + tekstas2 )&lt;br /&gt;
print(skaičius1 * skaičius2 )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Hello, World |next=Count to 10}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3604</id>
		<title>Python Vadovėlis/Kas čia eina?</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3604"/>
		<updated>2021-12-08T13:11:12Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Priskyrimai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Įvestis ir kintamieji ===&lt;br /&gt;
Aš jaučiu, kad atėjo laikas tikrai sudėtingai programai. Štai ji:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Stop!&amp;quot;)&lt;br /&gt;
vartotojo_įvestis = input(&amp;quot; Kas čia eina? &amp;quot;)&lt;br /&gt;
print(&amp;quot;Gali praeiti,&amp;quot;,  vartotojo_įvestis )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kai '''Aš''' paleidau programą, štai ką '''mano''' ekranas parodė:&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina? '''Jonas'''&lt;br /&gt;
 Gali praeiti, Jonas&lt;br /&gt;
&lt;br /&gt;
''Pastaba: Jei paleisi kodą spausdamas &amp;quot;F5&amp;quot;, python shell išves tik tiek:''&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina?&lt;br /&gt;
&lt;br /&gt;
''Tu turi įvesti savo vardą į python shell ir tada paspausti enter norėdama/s pamatyt likusį tekstą.''&lt;br /&gt;
&lt;br /&gt;
Žinoma, kai tu paleisi programą, tavo ekranas atrodys kitaip dėl &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; užklausos.&lt;br /&gt;
Kai paleidai programą (juk paleidai, tiesa?), tu turėjai surinkti savo vardą ir tada paspausti Enter.&lt;br /&gt;
Programa atspausdino dalį teksto ir tavo vardą. Taip atrodo ''įvesties'' pavyzdys.&lt;br /&gt;
Programa pasiekia tam tikrą kodo tašką ir laukia vartotojo įvesties, kad duomenis galėtų panaudoti tolimesniuose procesuose.&lt;br /&gt;
&lt;br /&gt;
Žinoma, gauti informaciją iš vartotojo pasaulio yra nieko verta, jei tos informacijos nėra kur patalpinti. Ir šioje vietoje atsiranda kintamieji.&lt;br /&gt;
Paskutinėje programojo &amp;lt;code&amp;gt;user_input&amp;lt;/code&amp;gt; yra ''kintamasis''. Kintamieji yra kaip dėžes į kurias galima patalpinti tam tikras dalis informacijos. &lt;br /&gt;
Štai programa, parodanti kintamųjų pavyzdžius:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 123.4&lt;br /&gt;
b23 = 'Šlamštas'&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot;&lt;br /&gt;
b = 432&lt;br /&gt;
c = a + b&lt;br /&gt;
print(&amp;quot;a + b yra &amp;quot;,c)&lt;br /&gt;
print(&amp;quot;vardas yra &amp;quot;,vardas)&lt;br /&gt;
print(&amp;quot;Rūšiuotos dalys, Po vidurnakčio ar&amp;quot;,b23)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai kokia išvestis:&lt;br /&gt;
&lt;br /&gt;
 a + b yra 555.4&lt;br /&gt;
 vardas yra Jonas&lt;br /&gt;
 Rūšiuotos dalys, Po vidurnakčio ar Šlamštas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kintamieji talpina duomenis. Viršuje aprašytoje programoje kintamieji yra &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;. Pagrindiniai du kintamųjų tipai yra ''tekstas'' ir ''skaičius''. Tekstas yra raidžių, skaičių ir kitų simbolių seka. Šiame pavyzdyje &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra tekstinio tipo kintamieji. &amp;lt;code&amp;gt;Šlamštas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a + b yra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas yra&amp;lt;/code&amp;gt;, ir &amp;lt;code&amp;gt;Rūšiuotos dalys, Po vidurnakčio ar&amp;lt;/code&amp;gt; šioje programoje yra tiesiog tekstinės reikšmės. Paprastas tekstas yra apsuptas kabučių &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;'&amp;lt;/code&amp;gt;.&lt;br /&gt;
Kitas kintamojo tipas yra skaičius. Atkreipkite dėmesį, kad kintamieji, kurie naudojami saugoti reikšmes, nenaudoja kabučių (&amp;quot; ir '). Jei norite naudoti realias ''reikšmes'', privalote naudoti kabutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reikšmė1 == Op!&lt;br /&gt;
reikšmė2 == &amp;quot;Op!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abu pavyzdžiai atrodo vienodai, bet pirmu atveju Python tikrins ar reikšmė, patalpinta kintamajame &amp;lt;code&amp;gt;reikšmė1&amp;lt;/code&amp;gt;, yra tokia pati kaip ''kintamojo'' &amp;lt;code&amp;gt;Pim&amp;lt;/code&amp;gt;. Antrame pavyzdyje Python tikrins ar tekstas (konkrečios raidės &amp;lt;code&amp;gt;O&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; ir&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;) yra tokios pat kaip ir &amp;lt;code&amp;gt;reikšmė2&amp;lt;/code&amp;gt; (skaitant toliau bus daugiau paaiškinimų apie tekstą ir &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Priskyrimai ===&lt;br /&gt;
&lt;br /&gt;
Gerai, dabar mes turime dėžutes, pavadintas kintamaisiais, taip pat informaciją, kuri gali būti kintamajame. Kompiuteris pamatys tokią eilutę &amp;lt;code&amp;gt;vardas = &amp;quot;Jonas&amp;quot;&amp;lt;/code&amp;gt; ir perskaitys ją kaip &amp;quot;Padėk tekstą &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt; į dėžę (ar kintamąjį) &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;&amp;quot;. Vėliau, pamatęs sakinį &amp;lt;code&amp;gt;c = a + b&amp;lt;/code&amp;gt; jį perskaitys kaip &amp;quot;padėt sumą &amp;lt;code&amp;gt;a + b&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;123.4 + 432&amp;lt;/code&amp;gt;, kas lygu &amp;lt;code&amp;gt;555.4&amp;lt;/code&amp;gt;, į &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;&amp;quot;. Dešinė sakinio pusė ''konvertuosis'' ir rezultatas bus padėtas į kintamajį kairėje pusėje (&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Tai yra vadinama ''priskyrimu''. Turėtume nemaišyti priskyrimo ir matematinio lygybės ženklo (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;). Ką reiškia &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; aptarsime vėliau.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O štai ir kitas kintamųjų naudojimo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a + 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a * 2&lt;br /&gt;
print(a)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir žinoma štai tokį rezultatą gausime:&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
Net jei kintamieji yra abiejose lygybės pusėse (pavyzdžiui šlamštas = šlamštas), kompiuteris vis tiek perskaitys taip: &amp;quot;Pirmiausia surask informaciją, kuri patalpinta ir tada surask, kur ją padėti&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dar viena programa prieš man pabangiant šį skyrių:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
sveikasSkaičius= int(input(&amp;quot;Įvesk sveiką skaičių: &amp;quot;))&lt;br /&gt;
tekstas = input(&amp;quot;Įvesk tekstą: &amp;quot;)&lt;br /&gt;
print(&amp;quot;skaičius =&amp;quot;, skaičius)&lt;br /&gt;
print(&amp;quot;skaičius yra&amp;quot;, type(skaičius ))&lt;br /&gt;
print(&amp;quot;skaičius * 2 =&amp;quot;, skaičius * 2)&lt;br /&gt;
print(&amp;quot;sveikas skaičius =&amp;quot;, sveikasSkaičius)&lt;br /&gt;
print(&amp;quot;sveikas skaičius yra&amp;quot;, type(sveikasSkaičius))&lt;br /&gt;
print(&amp;quot;sveikasSkaičius* 2 =&amp;quot;, sveikasSkaičius* 2)&lt;br /&gt;
print(&amp;quot;tekstas=&amp;quot;, tekstas)&lt;br /&gt;
print(&amp;quot;tekstas yra &amp;quot;, type(tekstas))&lt;br /&gt;
print(&amp;quot;tekstas* 2 =&amp;quot;, tekstas* 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk skaičių: '''12.34'''&lt;br /&gt;
 Įvesk sveiką skaičių: '''-3'''&lt;br /&gt;
 Įvesk tekstą: '''Labas'''&lt;br /&gt;
 skaičius = 12.34&lt;br /&gt;
 skaičius  yra &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
 skaičius * 2 = 24.68&lt;br /&gt;
 sveikas skaičius = -3&lt;br /&gt;
 sveikas skaičius yra &amp;lt;class 'int'&amp;gt;&lt;br /&gt;
 sveikasSkaičius * 2 = -6&lt;br /&gt;
 tekstas = Labas&lt;br /&gt;
 tekstas yra &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
 tekstas * 2 = LabasLabas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesę, kad &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; ,&amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt; ir gražino sveiką skaičių - reikšmę be kablelio, kai tuo tarpu &amp;lt;code&amp;gt;tekstas&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; gražino tekstinę eilutę (gali būti aprašoma ir &amp;lt;code&amp;gt;str(input())&amp;lt;/code&amp;gt;). Jei tu nori, kad vartotojas įvestų skaičių su kableliu, naudok &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; kintamojo tipą. Jei nori, kad vartotojas įvestų sveiką skaičių, naudok &amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt;, bet jei nori teksto - naudok &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Antra pusė programos naudoja &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; funkciją, kuri nusako, kokio tipo kintamasis yra. Skaičius yra &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; tipo. Tai yra angliškų žodžių ''integer'' (sveikas skaičius) ir ''floating point'' (slankusis kablelis, naudojamas daugiausiai skaičiams su kableliu) trumpiniai. Tekstinė eilutė yra &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt;, trumpinys ''string'' (virvelė). Sveiki skaičiai ir slankusis kablelis gali būti naudojami matematinėms funkcijoms, tekstas - ne. Atkreipk dėmesį, kai python daugina skaičių iš sveiko skaičiaus gaunamas rezultatas, kurio ir galima tikėtis, tačiau jei tekstas padauginamas iš sveiko skaičiaus - sukuriamos kelios teksto kopijos (pavyzdžiui, &amp;lt;code&amp;gt;tekstas * 2 = LabasLabas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Operacijos su tekstu daro kitokius dalykus nei operacijos su skaičiaus. Taip pat, kai kurios operacijos veikia tik su skaičiaus ir duos klaidą, jei bus bandoma panaudoti tesktą. Štai keleta interaktyvių pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Čia&amp;quot; + &amp;quot; &amp;quot; + &amp;quot;yra&amp;quot; + &amp;quot; junginys.&amp;quot;)&lt;br /&gt;
Čia yra junginys.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5 + &amp;quot;ha!&amp;quot;)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, ha!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(3 - 1)&lt;br /&gt;
2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;3&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
Traceback (paskutinis veiksmas):&lt;br /&gt;
  File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
TypeError: unsupported operand type(s) for -: 'str' and 'str'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai sąrašas kelių operacijų su tekstu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation &lt;br /&gt;
!Symbol &lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Pakartojimas&lt;br /&gt;
|&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;i&amp;quot; * 5 == &amp;quot;iiiii&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Sujungimas&lt;br /&gt;
|&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;Hello, &amp;quot; + &amp;quot;World!&amp;quot; == &amp;quot;Hello, World!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&lt;br /&gt;
'''Laikas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# ši programa apskaičiuoja laiko priklausomybę nuo greičio ir atstumo&lt;br /&gt;
print(&amp;quot;Įvesk greitį ir atstumą&amp;quot;)&lt;br /&gt;
greitis = float(input(&amp;quot;Greitis: &amp;quot;))&lt;br /&gt;
atstumas = float(input(&amp;quot;Atstumas: &amp;quot;))&lt;br /&gt;
laikas=(atstumas / greitis )&lt;br /&gt;
print(&amp;quot;Laikas:&amp;quot;, laikas)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''5'''&lt;br /&gt;
 Atstumas: '''10'''&lt;br /&gt;
 Laikas: 2.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''3.52'''&lt;br /&gt;
 Atstumas: '''45.6'''&lt;br /&gt;
 Laikas: 12.9545454545&lt;br /&gt;
&lt;br /&gt;
'''Plotas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa apskaičiuoja stačiakampio perimetrą ir plotą &lt;br /&gt;
print(&amp;quot;Įvestike stačiakampio informaciją&amp;quot;)&lt;br /&gt;
ilgis = float(input(&amp;quot;Ilgis: &amp;quot;))&lt;br /&gt;
plotis = float(input(&amp;quot;Plotis: &amp;quot;))&lt;br /&gt;
Perimetras=(2 * ilgis+ 2 * plotis) &lt;br /&gt;
print(&amp;quot;Plotas:&amp;quot;, ilgis * plotis)&lt;br /&gt;
print(&amp;quot;Perimetras:&amp;quot;, Perimetras)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''4'''&lt;br /&gt;
 Plotis: '''3'''&lt;br /&gt;
 Plotas: 12.0&lt;br /&gt;
 Perimetras: 14.0&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''2.53'''&lt;br /&gt;
 Plotis: '''5.2'''&lt;br /&gt;
 Plotas: 13.156&lt;br /&gt;
 Perimetras: 15.46&lt;br /&gt;
&lt;br /&gt;
'''Temperatura.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa koncertuoja temperatūra iš Farenheitų į Celsijų&lt;br /&gt;
far_temp = float(input(&amp;quot;Temperatura Farenheitais: &amp;quot;))&lt;br /&gt;
cels_temp = (far_temp - 32.0) *( 5.0 / 9.0)&lt;br /&gt;
print(&amp;quot;Temperatura Celsijaus laipsniais:&amp;quot;, cels_temp )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''32'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 0.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''-40'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: -40.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''212'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 100.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''98.6'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 37.0&lt;br /&gt;
&lt;br /&gt;
=== Užduotis ===&lt;br /&gt;
Parašyti programa, kuri priima 2 tekstines reikšmes, 2 skaičius ir vartotojo įvestį, sujungia juos be tarpų ir atvaizduoja tekstus, o tada sudaugina du skaičius ir atvaizduoja naujoje eilutėje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sprendimas ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;  &lt;br /&gt;
tekstas1 = input('Tekstas 1: ')&lt;br /&gt;
tekstas2 = input('Tekstas 2: ')&lt;br /&gt;
skaičius1 = float(input('Skaičius 1: '))&lt;br /&gt;
skaičius2 = float(input('Skaičius 2: '))&lt;br /&gt;
print(tekstas1 + tekstas2 )&lt;br /&gt;
print(skaičius1 * skaičius2 )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Hello, World |next=Count to 10}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3603</id>
		<title>Python Vadovėlis/Kas čia eina?</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3603"/>
		<updated>2021-12-08T13:09:01Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Įvestis ir kintamieji */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Įvestis ir kintamieji ===&lt;br /&gt;
Aš jaučiu, kad atėjo laikas tikrai sudėtingai programai. Štai ji:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Stop!&amp;quot;)&lt;br /&gt;
vartotojo_įvestis = input(&amp;quot; Kas čia eina? &amp;quot;)&lt;br /&gt;
print(&amp;quot;Gali praeiti,&amp;quot;,  vartotojo_įvestis )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kai '''Aš''' paleidau programą, štai ką '''mano''' ekranas parodė:&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina? '''Jonas'''&lt;br /&gt;
 Gali praeiti, Jonas&lt;br /&gt;
&lt;br /&gt;
''Pastaba: Jei paleisi kodą spausdamas &amp;quot;F5&amp;quot;, python shell išves tik tiek:''&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina?&lt;br /&gt;
&lt;br /&gt;
''Tu turi įvesti savo vardą į python shell ir tada paspausti enter norėdama/s pamatyt likusį tekstą.''&lt;br /&gt;
&lt;br /&gt;
Žinoma, kai tu paleisi programą, tavo ekranas atrodys kitaip dėl &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; užklausos.&lt;br /&gt;
Kai paleidai programą (juk paleidai, tiesa?), tu turėjai surinkti savo vardą ir tada paspausti Enter.&lt;br /&gt;
Programa atspausdino dalį teksto ir tavo vardą. Taip atrodo ''įvesties'' pavyzdys.&lt;br /&gt;
Programa pasiekia tam tikrą kodo tašką ir laukia vartotojo įvesties, kad duomenis galėtų panaudoti tolimesniuose procesuose.&lt;br /&gt;
&lt;br /&gt;
Žinoma, gauti informaciją iš vartotojo pasaulio yra nieko verta, jei tos informacijos nėra kur patalpinti. Ir šioje vietoje atsiranda kintamieji.&lt;br /&gt;
Paskutinėje programojo &amp;lt;code&amp;gt;user_input&amp;lt;/code&amp;gt; yra ''kintamasis''. Kintamieji yra kaip dėžes į kurias galima patalpinti tam tikras dalis informacijos. &lt;br /&gt;
Štai programa, parodanti kintamųjų pavyzdžius:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 123.4&lt;br /&gt;
b23 = 'Šlamštas'&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot;&lt;br /&gt;
b = 432&lt;br /&gt;
c = a + b&lt;br /&gt;
print(&amp;quot;a + b yra &amp;quot;,c)&lt;br /&gt;
print(&amp;quot;vardas yra &amp;quot;,vardas)&lt;br /&gt;
print(&amp;quot;Rūšiuotos dalys, Po vidurnakčio ar&amp;quot;,b23)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai kokia išvestis:&lt;br /&gt;
&lt;br /&gt;
 a + b yra 555.4&lt;br /&gt;
 vardas yra Jonas&lt;br /&gt;
 Rūšiuotos dalys, Po vidurnakčio ar Šlamštas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kintamieji talpina duomenis. Viršuje aprašytoje programoje kintamieji yra &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;. Pagrindiniai du kintamųjų tipai yra ''tekstas'' ir ''skaičius''. Tekstas yra raidžių, skaičių ir kitų simbolių seka. Šiame pavyzdyje &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra tekstinio tipo kintamieji. &amp;lt;code&amp;gt;Šlamštas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a + b yra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas yra&amp;lt;/code&amp;gt;, ir &amp;lt;code&amp;gt;Rūšiuotos dalys, Po vidurnakčio ar&amp;lt;/code&amp;gt; šioje programoje yra tiesiog tekstinės reikšmės. Paprastas tekstas yra apsuptas kabučių &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;'&amp;lt;/code&amp;gt;.&lt;br /&gt;
Kitas kintamojo tipas yra skaičius. Atkreipkite dėmesį, kad kintamieji, kurie naudojami saugoti reikšmes, nenaudoja kabučių (&amp;quot; ir '). Jei norite naudoti realias ''reikšmes'', privalote naudoti kabutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reikšmė1 == Op!&lt;br /&gt;
reikšmė2 == &amp;quot;Op!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abu pavyzdžiai atrodo vienodai, bet pirmu atveju Python tikrins ar reikšmė, patalpinta kintamajame &amp;lt;code&amp;gt;reikšmė1&amp;lt;/code&amp;gt;, yra tokia pati kaip ''kintamojo'' &amp;lt;code&amp;gt;Pim&amp;lt;/code&amp;gt;. Antrame pavyzdyje Python tikrins ar tekstas (konkrečios raidės &amp;lt;code&amp;gt;O&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; ir&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;) yra tokios pat kaip ir &amp;lt;code&amp;gt;reikšmė2&amp;lt;/code&amp;gt; (skaitant toliau bus daugiau paaiškinimų apie tekstą ir &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Priskyrimai ===&lt;br /&gt;
&lt;br /&gt;
Gerai, dabar mes turime dėžutes, pavadintas kintamaisiais, taip pat informaciją, kuri gali būti kintamajame. Komputeris pamatys tokią eilutę &amp;lt;code&amp;gt;vardas = &amp;quot;Jonas&amp;quot;&amp;lt;/code&amp;gt; ir perskaitys ją kaip &amp;quot;Padėk tekstą &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt; į dėžę (ar kintamąjį) &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;&amp;quot;. Vėliau, pamatęs sakinį &amp;lt;code&amp;gt;c = a + b&amp;lt;/code&amp;gt; jį perskaitys kaip &amp;quot;padėt sumą &amp;lt;code&amp;gt;a + b&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;123.4 + 432&amp;lt;/code&amp;gt;, kas lygu &amp;lt;code&amp;gt;555.4&amp;lt;/code&amp;gt;, į &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;&amp;quot;. Dešinė sakinio pusė ''konvertuosis'' ir rezultatas bus padėtas į kintamajį kairėje pusėje (&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Tai yra vadinama ''priskyrimu''. Turėtume nemaišyti priskyrimo ir matematinio lygybės ženklo (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;). Ką reiškia &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; aptarsime vėliau.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O štai ir kitas kintamųjų naudojimo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a + 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a * 2&lt;br /&gt;
print(a)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir žinoma štai tokį rezultatą gausime:&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
Net jei kintamieji yra abiejose lygybės pusėse (pavyzdžiui šlamštas = šlamštas), komputeris vis tiek perskaitys taip: &amp;quot;Pirmiausia surask informaciją, kuri patalpinta ir tada surask, kur ją padėti&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dar viena programa prieš man pabangiant šį skyrių:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
sveikasSkaičius= int(input(&amp;quot;Įvesk sveiką skaičių: &amp;quot;))&lt;br /&gt;
tekstas = input(&amp;quot;Įvesk tekstą: &amp;quot;)&lt;br /&gt;
print(&amp;quot;skaičius =&amp;quot;, skaičius)&lt;br /&gt;
print(&amp;quot;skaičius yra&amp;quot;, type(skaičius ))&lt;br /&gt;
print(&amp;quot;skaičius * 2 =&amp;quot;, skaičius * 2)&lt;br /&gt;
print(&amp;quot;sveikas skaičius =&amp;quot;, sveikasSkaičius)&lt;br /&gt;
print(&amp;quot;sveikas skaičius yra&amp;quot;, type(sveikasSkaičius))&lt;br /&gt;
print(&amp;quot;sveikasSkaičius* 2 =&amp;quot;, sveikasSkaičius* 2)&lt;br /&gt;
print(&amp;quot;tekstas=&amp;quot;, tekstas)&lt;br /&gt;
print(&amp;quot;tekstas yra &amp;quot;, type(tekstas))&lt;br /&gt;
print(&amp;quot;tekstas* 2 =&amp;quot;, tekstas* 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk skaičių: '''12.34'''&lt;br /&gt;
 Įvesk sveiką skaičių: '''-3'''&lt;br /&gt;
 Įvesk tekstą: '''Labas'''&lt;br /&gt;
 skaičius = 12.34&lt;br /&gt;
 skaičius  yra &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
 skaičius * 2 = 24.68&lt;br /&gt;
 sveikas skaičius = -3&lt;br /&gt;
 sveikas skaičius yra &amp;lt;class 'int'&amp;gt;&lt;br /&gt;
 sveikasSkaičius * 2 = -6&lt;br /&gt;
 tekstas = Labas&lt;br /&gt;
 tekstas yra &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
 tekstas * 2 = LabasLabas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesę, kad &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; ,&amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt; ir gražino sveiką skaičių - reikšmę be kablelio, kai tuo tarpu &amp;lt;code&amp;gt;tekstas&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; gražino tekstinę eilutę (gali būti aprašoma ir &amp;lt;code&amp;gt;str(input())&amp;lt;/code&amp;gt;). Jei tu nori, kad vartotojas įvestų skaičių su kableliu, naudok &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; kintamojo tipą. Jei nori, kad vartotojas įvestų sveiką skaičių, naudok &amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt;, bet jei nori teksto - naudok &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Antra pusė programos naudoja &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; funkciją, kuri nusako, kokio tipo kintamasis yra. Skaičius yra &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; tipo. Tai yra angliškų žodžių ''integer'' (sveikas skaičius) ir ''floating point'' (slankusis kablelis, naudojamas daugiausiai skaičiams su kableliu) trumpiniai. Tekstinė eilutė yra &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt;, trumpinys ''string'' (virvelė). Sveiki skaičiai ir slankusis kablelis gali būti naudojami matematinėms funkcijoms, tekstas - ne. Atkreipk dėmesį, kai python daugina skaičių iš sveiko skaičiaus gaunamas rezultatas, kurio ir galima tikėtis, tačiau jei tekstas padauginamas iš sveiko skaičiaus - sukuriamos kelios teksto kopijos (pavyzdžiui, &amp;lt;code&amp;gt;tekstas * 2 = LabasLabas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Operacijos su tekstu daro kitokius dalykus nei operacijos su skaičiaus. Taip pat, kai kurios operacijos veikia tik su skaičiaus ir duos klaidą, jei bus bandoma panaudoti tesktą. Štai keleta interaktyvių pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Čia&amp;quot; + &amp;quot; &amp;quot; + &amp;quot;yra&amp;quot; + &amp;quot; junginys.&amp;quot;)&lt;br /&gt;
Čia yra junginys.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5 + &amp;quot;ha!&amp;quot;)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, ha!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(3 - 1)&lt;br /&gt;
2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;3&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
Traceback (paskutinis veiksmas):&lt;br /&gt;
  File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
TypeError: unsupported operand type(s) for -: 'str' and 'str'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai sąrašas kelių operacijų su tekstu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation &lt;br /&gt;
!Symbol &lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Pakartojimas&lt;br /&gt;
|&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;i&amp;quot; * 5 == &amp;quot;iiiii&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Sujungimas&lt;br /&gt;
|&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;Hello, &amp;quot; + &amp;quot;World!&amp;quot; == &amp;quot;Hello, World!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&lt;br /&gt;
'''Laikas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# ši programa apskaičiuoja laiko priklausomybę nuo greičio ir atstumo&lt;br /&gt;
print(&amp;quot;Įvesk greitį ir atstumą&amp;quot;)&lt;br /&gt;
greitis = float(input(&amp;quot;Greitis: &amp;quot;))&lt;br /&gt;
atstumas = float(input(&amp;quot;Atstumas: &amp;quot;))&lt;br /&gt;
laikas=(atstumas / greitis )&lt;br /&gt;
print(&amp;quot;Laikas:&amp;quot;, laikas)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''5'''&lt;br /&gt;
 Atstumas: '''10'''&lt;br /&gt;
 Laikas: 2.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''3.52'''&lt;br /&gt;
 Atstumas: '''45.6'''&lt;br /&gt;
 Laikas: 12.9545454545&lt;br /&gt;
&lt;br /&gt;
'''Plotas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa apskaičiuoja stačiakampio perimetrą ir plotą &lt;br /&gt;
print(&amp;quot;Įvestike stačiakampio informaciją&amp;quot;)&lt;br /&gt;
ilgis = float(input(&amp;quot;Ilgis: &amp;quot;))&lt;br /&gt;
plotis = float(input(&amp;quot;Plotis: &amp;quot;))&lt;br /&gt;
Perimetras=(2 * ilgis+ 2 * plotis) &lt;br /&gt;
print(&amp;quot;Plotas:&amp;quot;, ilgis * plotis)&lt;br /&gt;
print(&amp;quot;Perimetras:&amp;quot;, Perimetras)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''4'''&lt;br /&gt;
 Plotis: '''3'''&lt;br /&gt;
 Plotas: 12.0&lt;br /&gt;
 Perimetras: 14.0&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''2.53'''&lt;br /&gt;
 Plotis: '''5.2'''&lt;br /&gt;
 Plotas: 13.156&lt;br /&gt;
 Perimetras: 15.46&lt;br /&gt;
&lt;br /&gt;
'''Temperatura.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa koncertuoja temperatūra iš Farenheitų į Celsijų&lt;br /&gt;
far_temp = float(input(&amp;quot;Temperatura Farenheitais: &amp;quot;))&lt;br /&gt;
cels_temp = (far_temp - 32.0) *( 5.0 / 9.0)&lt;br /&gt;
print(&amp;quot;Temperatura Celsijaus laipsniais:&amp;quot;, cels_temp )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''32'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 0.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''-40'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: -40.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''212'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 100.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''98.6'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 37.0&lt;br /&gt;
&lt;br /&gt;
=== Užduotis ===&lt;br /&gt;
Parašyti programa, kuri priima 2 tekstines reikšmes, 2 skaičius ir vartotojo įvestį, sujungia juos be tarpų ir atvaizduoja tekstus, o tada sudaugina du skaičius ir atvaizduoja naujoje eilutėje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sprendimas ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;  &lt;br /&gt;
tekstas1 = input('Tekstas 1: ')&lt;br /&gt;
tekstas2 = input('Tekstas 2: ')&lt;br /&gt;
skaičius1 = float(input('Skaičius 1: '))&lt;br /&gt;
skaičius2 = float(input('Skaičius 2: '))&lt;br /&gt;
print(tekstas1 + tekstas2 )&lt;br /&gt;
print(skaičius1 * skaičius2 )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Hello, World |next=Count to 10}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3602</id>
		<title>Python Vadovėlis/Kas čia eina?</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3602"/>
		<updated>2021-12-08T13:08:33Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Įvestis ir kintamieji */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Įvestis ir kintamieji ===&lt;br /&gt;
Aš jaučiu, kad atėjo laikas tikrai sudėtingai programai. Štai ji:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Stop!&amp;quot;)&lt;br /&gt;
vartotojo_įvestis = input(&amp;quot; Kas čia eina? &amp;quot;)&lt;br /&gt;
print(&amp;quot;Gali praeiti,&amp;quot;,  vartotojo_įvestis )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kai '''Aš''' paleidau programą, štai ką '''mano''' ekranas parodė:&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina? '''Jonas'''&lt;br /&gt;
 Gali praeiti, Jonas&lt;br /&gt;
&lt;br /&gt;
''Pastaba: Jei paleisi kodą spausdamas &amp;quot;F5&amp;quot;, python shell išves tik tiek:''&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina?&lt;br /&gt;
&lt;br /&gt;
''Tu turi įvesti savo vardą į python shell ir tada paspausti enter norėdama/s pamatyt likusį tekstą.''&lt;br /&gt;
&lt;br /&gt;
Žinoma, kai tu paleisi programą, tavo ekranas atrodys kitaip dėl &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; užklausos.&lt;br /&gt;
Kai paleidai programą (juk paleidai, tiesa?), tu turėjai surinkti savo vardą ir tada paspausti Enter.&lt;br /&gt;
Programa atspausdino dalį teksto ir tavo vardą. Taip atrodo ''įvesties'' pavyzdys.&lt;br /&gt;
Programa pasiekia tam tikrą kodo tašką ir laukia vartotojo įvesties, kad duomenis galėtų panaudoti tolimesniuose procesuose.&lt;br /&gt;
&lt;br /&gt;
Žinoma, gauti informaciją iš vartotojo pasaulio yra nieko verta, jei tos informacijos nėra kur patalpinti. Ir šioje vietoje atsiranda kintamieji.&lt;br /&gt;
Paskutinėje programojo &amp;lt;code&amp;gt;user_input&amp;lt;/code&amp;gt; yra ''kintamasis''. Kintamieji yra kaip dėžes į kurias galima patalpinti tam tikras dalis informacijos. &lt;br /&gt;
Šai programa, parodanti kintamųjų pavyzdžius:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 123.4&lt;br /&gt;
b23 = 'Šlamštas'&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot;&lt;br /&gt;
b = 432&lt;br /&gt;
c = a + b&lt;br /&gt;
print(&amp;quot;a + b yra &amp;quot;,c)&lt;br /&gt;
print(&amp;quot;vardas yra &amp;quot;,vardas)&lt;br /&gt;
print(&amp;quot;Rūšiuotos dalys, Po vidurnakčio ar&amp;quot;,b23)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai kokia išvestis:&lt;br /&gt;
&lt;br /&gt;
 a + b yra 555.4&lt;br /&gt;
 vardas yra Jonas&lt;br /&gt;
 Rūšiuotos dalys, Po vidurnakčio ar Šlamštas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kintamieji talpina duomenis. Viršuje aprašytoje programoje kintamieji yra &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;. Pagrindiniai du kintamųjų tipai yra ''tekstas'' ir ''skaičius''. Tekstas yra raidžių, skaičių ir kitų simbolių seka. Šiame pavyzdyje &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra tekstinio tipo kintamieji. &amp;lt;code&amp;gt;Šlamštas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a + b yra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas yra&amp;lt;/code&amp;gt;, ir &amp;lt;code&amp;gt;Rūšiuotos dalys, Po vidurnakčio ar&amp;lt;/code&amp;gt; šioje programoje yra tiesiog tekstinės reikšmės. Paprastas tekstas yra apsuptas kabučių &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;'&amp;lt;/code&amp;gt;.&lt;br /&gt;
Kitas kintamojo tipas yra skaičius. Atkreipkite dėmesį, kad kintamieji, kurie naudojami saugoti reikšmes, nenaudoja kabučių (&amp;quot; ir '). Jei norite naudoti realias ''reikšmes'', privalote naudoti kabutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reikšmė1 == Op!&lt;br /&gt;
reikšmė2 == &amp;quot;Op!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abu pavyzdžiai atrodo vienodai, bet pirmu atveju Python tikrins ar reikšmė, patalpinta kintamajame &amp;lt;code&amp;gt;reikšmė1&amp;lt;/code&amp;gt;, yra tokia pati kaip ''kintamojo'' &amp;lt;code&amp;gt;Pim&amp;lt;/code&amp;gt;. Antrame pavyzdyje Python tikrins ar tekstas (konkrečios raidės &amp;lt;code&amp;gt;O&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; ir&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;) yra tokios pat kaip ir &amp;lt;code&amp;gt;reikšmė2&amp;lt;/code&amp;gt; (skaitant toliau bus daugiau paaiškinimų apie tekstą ir &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Priskyrimai ===&lt;br /&gt;
&lt;br /&gt;
Gerai, dabar mes turime dėžutes, pavadintas kintamaisiais, taip pat informaciją, kuri gali būti kintamajame. Komputeris pamatys tokią eilutę &amp;lt;code&amp;gt;vardas = &amp;quot;Jonas&amp;quot;&amp;lt;/code&amp;gt; ir perskaitys ją kaip &amp;quot;Padėk tekstą &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt; į dėžę (ar kintamąjį) &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;&amp;quot;. Vėliau, pamatęs sakinį &amp;lt;code&amp;gt;c = a + b&amp;lt;/code&amp;gt; jį perskaitys kaip &amp;quot;padėt sumą &amp;lt;code&amp;gt;a + b&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;123.4 + 432&amp;lt;/code&amp;gt;, kas lygu &amp;lt;code&amp;gt;555.4&amp;lt;/code&amp;gt;, į &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;&amp;quot;. Dešinė sakinio pusė ''konvertuosis'' ir rezultatas bus padėtas į kintamajį kairėje pusėje (&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Tai yra vadinama ''priskyrimu''. Turėtume nemaišyti priskyrimo ir matematinio lygybės ženklo (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;). Ką reiškia &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; aptarsime vėliau.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O štai ir kitas kintamųjų naudojimo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a + 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a * 2&lt;br /&gt;
print(a)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir žinoma štai tokį rezultatą gausime:&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
Net jei kintamieji yra abiejose lygybės pusėse (pavyzdžiui šlamštas = šlamštas), komputeris vis tiek perskaitys taip: &amp;quot;Pirmiausia surask informaciją, kuri patalpinta ir tada surask, kur ją padėti&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dar viena programa prieš man pabangiant šį skyrių:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
sveikasSkaičius= int(input(&amp;quot;Įvesk sveiką skaičių: &amp;quot;))&lt;br /&gt;
tekstas = input(&amp;quot;Įvesk tekstą: &amp;quot;)&lt;br /&gt;
print(&amp;quot;skaičius =&amp;quot;, skaičius)&lt;br /&gt;
print(&amp;quot;skaičius yra&amp;quot;, type(skaičius ))&lt;br /&gt;
print(&amp;quot;skaičius * 2 =&amp;quot;, skaičius * 2)&lt;br /&gt;
print(&amp;quot;sveikas skaičius =&amp;quot;, sveikasSkaičius)&lt;br /&gt;
print(&amp;quot;sveikas skaičius yra&amp;quot;, type(sveikasSkaičius))&lt;br /&gt;
print(&amp;quot;sveikasSkaičius* 2 =&amp;quot;, sveikasSkaičius* 2)&lt;br /&gt;
print(&amp;quot;tekstas=&amp;quot;, tekstas)&lt;br /&gt;
print(&amp;quot;tekstas yra &amp;quot;, type(tekstas))&lt;br /&gt;
print(&amp;quot;tekstas* 2 =&amp;quot;, tekstas* 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk skaičių: '''12.34'''&lt;br /&gt;
 Įvesk sveiką skaičių: '''-3'''&lt;br /&gt;
 Įvesk tekstą: '''Labas'''&lt;br /&gt;
 skaičius = 12.34&lt;br /&gt;
 skaičius  yra &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
 skaičius * 2 = 24.68&lt;br /&gt;
 sveikas skaičius = -3&lt;br /&gt;
 sveikas skaičius yra &amp;lt;class 'int'&amp;gt;&lt;br /&gt;
 sveikasSkaičius * 2 = -6&lt;br /&gt;
 tekstas = Labas&lt;br /&gt;
 tekstas yra &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
 tekstas * 2 = LabasLabas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesę, kad &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; ,&amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt; ir gražino sveiką skaičių - reikšmę be kablelio, kai tuo tarpu &amp;lt;code&amp;gt;tekstas&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; gražino tekstinę eilutę (gali būti aprašoma ir &amp;lt;code&amp;gt;str(input())&amp;lt;/code&amp;gt;). Jei tu nori, kad vartotojas įvestų skaičių su kableliu, naudok &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; kintamojo tipą. Jei nori, kad vartotojas įvestų sveiką skaičių, naudok &amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt;, bet jei nori teksto - naudok &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Antra pusė programos naudoja &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; funkciją, kuri nusako, kokio tipo kintamasis yra. Skaičius yra &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; tipo. Tai yra angliškų žodžių ''integer'' (sveikas skaičius) ir ''floating point'' (slankusis kablelis, naudojamas daugiausiai skaičiams su kableliu) trumpiniai. Tekstinė eilutė yra &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt;, trumpinys ''string'' (virvelė). Sveiki skaičiai ir slankusis kablelis gali būti naudojami matematinėms funkcijoms, tekstas - ne. Atkreipk dėmesį, kai python daugina skaičių iš sveiko skaičiaus gaunamas rezultatas, kurio ir galima tikėtis, tačiau jei tekstas padauginamas iš sveiko skaičiaus - sukuriamos kelios teksto kopijos (pavyzdžiui, &amp;lt;code&amp;gt;tekstas * 2 = LabasLabas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Operacijos su tekstu daro kitokius dalykus nei operacijos su skaičiaus. Taip pat, kai kurios operacijos veikia tik su skaičiaus ir duos klaidą, jei bus bandoma panaudoti tesktą. Štai keleta interaktyvių pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Čia&amp;quot; + &amp;quot; &amp;quot; + &amp;quot;yra&amp;quot; + &amp;quot; junginys.&amp;quot;)&lt;br /&gt;
Čia yra junginys.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5 + &amp;quot;ha!&amp;quot;)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, ha!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(3 - 1)&lt;br /&gt;
2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;3&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
Traceback (paskutinis veiksmas):&lt;br /&gt;
  File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
TypeError: unsupported operand type(s) for -: 'str' and 'str'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai sąrašas kelių operacijų su tekstu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation &lt;br /&gt;
!Symbol &lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Pakartojimas&lt;br /&gt;
|&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;i&amp;quot; * 5 == &amp;quot;iiiii&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Sujungimas&lt;br /&gt;
|&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;Hello, &amp;quot; + &amp;quot;World!&amp;quot; == &amp;quot;Hello, World!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&lt;br /&gt;
'''Laikas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# ši programa apskaičiuoja laiko priklausomybę nuo greičio ir atstumo&lt;br /&gt;
print(&amp;quot;Įvesk greitį ir atstumą&amp;quot;)&lt;br /&gt;
greitis = float(input(&amp;quot;Greitis: &amp;quot;))&lt;br /&gt;
atstumas = float(input(&amp;quot;Atstumas: &amp;quot;))&lt;br /&gt;
laikas=(atstumas / greitis )&lt;br /&gt;
print(&amp;quot;Laikas:&amp;quot;, laikas)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''5'''&lt;br /&gt;
 Atstumas: '''10'''&lt;br /&gt;
 Laikas: 2.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''3.52'''&lt;br /&gt;
 Atstumas: '''45.6'''&lt;br /&gt;
 Laikas: 12.9545454545&lt;br /&gt;
&lt;br /&gt;
'''Plotas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa apskaičiuoja stačiakampio perimetrą ir plotą &lt;br /&gt;
print(&amp;quot;Įvestike stačiakampio informaciją&amp;quot;)&lt;br /&gt;
ilgis = float(input(&amp;quot;Ilgis: &amp;quot;))&lt;br /&gt;
plotis = float(input(&amp;quot;Plotis: &amp;quot;))&lt;br /&gt;
Perimetras=(2 * ilgis+ 2 * plotis) &lt;br /&gt;
print(&amp;quot;Plotas:&amp;quot;, ilgis * plotis)&lt;br /&gt;
print(&amp;quot;Perimetras:&amp;quot;, Perimetras)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''4'''&lt;br /&gt;
 Plotis: '''3'''&lt;br /&gt;
 Plotas: 12.0&lt;br /&gt;
 Perimetras: 14.0&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''2.53'''&lt;br /&gt;
 Plotis: '''5.2'''&lt;br /&gt;
 Plotas: 13.156&lt;br /&gt;
 Perimetras: 15.46&lt;br /&gt;
&lt;br /&gt;
'''Temperatura.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa koncertuoja temperatūra iš Farenheitų į Celsijų&lt;br /&gt;
far_temp = float(input(&amp;quot;Temperatura Farenheitais: &amp;quot;))&lt;br /&gt;
cels_temp = (far_temp - 32.0) *( 5.0 / 9.0)&lt;br /&gt;
print(&amp;quot;Temperatura Celsijaus laipsniais:&amp;quot;, cels_temp )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''32'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 0.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''-40'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: -40.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''212'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 100.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''98.6'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 37.0&lt;br /&gt;
&lt;br /&gt;
=== Užduotis ===&lt;br /&gt;
Parašyti programa, kuri priima 2 tekstines reikšmes, 2 skaičius ir vartotojo įvestį, sujungia juos be tarpų ir atvaizduoja tekstus, o tada sudaugina du skaičius ir atvaizduoja naujoje eilutėje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sprendimas ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;  &lt;br /&gt;
tekstas1 = input('Tekstas 1: ')&lt;br /&gt;
tekstas2 = input('Tekstas 2: ')&lt;br /&gt;
skaičius1 = float(input('Skaičius 1: '))&lt;br /&gt;
skaičius2 = float(input('Skaičius 2: '))&lt;br /&gt;
print(tekstas1 + tekstas2 )&lt;br /&gt;
print(skaičius1 * skaičius2 )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Hello, World |next=Count to 10}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3601</id>
		<title>Python Vadovėlis/Kas čia eina?</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Kas_%C4%8Dia_eina%3F&amp;diff=3601"/>
		<updated>2021-12-08T13:07:58Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Įvestis ir kintamieji */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Įvestis ir kintamieji ===&lt;br /&gt;
Aš jaučiu, kad atėjo laikas tikrai sudėtingai programai. Štai ji:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Stop!&amp;quot;)&lt;br /&gt;
vartotojo_įvestis = input(&amp;quot; Kas čia eina? &amp;quot;)&lt;br /&gt;
print(&amp;quot;Gali praeiti,&amp;quot;,  vartotojo_įvestis )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kai '''Aš''' paleidau programą, štai ką '''mano''' ekranas parodė:&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina? '''Jonas'''&lt;br /&gt;
 Gali praeiti, Jonas&lt;br /&gt;
&lt;br /&gt;
''Pastaba: Jei paleisi kodą spausdamas &amp;quot;F5&amp;quot;, python shell išves tik tiek:''&lt;br /&gt;
&lt;br /&gt;
 Stop!&lt;br /&gt;
 Kas čia eina?&lt;br /&gt;
&lt;br /&gt;
''Tu turi įvesti savo vardą į python shell ir tada paspausti enter norėdama/s pamatyt likusį tekstą.''&lt;br /&gt;
&lt;br /&gt;
Žinoma, kai tu paleisi programą, tavo ekranas atrodys kitaip dėl &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; užklausos.&lt;br /&gt;
Kai paleidai programą (juk paleidai, tiesa?), tu turėjai surinkti savo vardą ir tada paspausti Enter.&lt;br /&gt;
Programa atspausdino dalį teksto ir tavo vardą. Taip atrodo 'įvesties' pavyzdys.&lt;br /&gt;
Programa pasiekia tam tikrą kodo tašką ir laukia vartotojo įvesties, kad duomenis galėtų panaudoti tolimesniuose procesuose.&lt;br /&gt;
&lt;br /&gt;
Žinoma, gauti informaciją iš vartotojo pasaulio yra nieko verta, jei tos informacijos nėra kur patalpinti. Ir šioje vietoje atsiranda kintamieji.&lt;br /&gt;
Paskutinėje programojo &amp;lt;code&amp;gt;user_input&amp;lt;/code&amp;gt; yra ''kintamasis''. Kintamieji yra kaip dėžes į kurias galima patalpinti tam tikras dalis informacijos. &lt;br /&gt;
Šai programa, parodanti kintamųjų pavyzdžius:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 123.4&lt;br /&gt;
b23 = 'Šlamštas'&lt;br /&gt;
vardas = &amp;quot;Jonas&amp;quot;&lt;br /&gt;
b = 432&lt;br /&gt;
c = a + b&lt;br /&gt;
print(&amp;quot;a + b yra &amp;quot;,c)&lt;br /&gt;
print(&amp;quot;vardas yra &amp;quot;,vardas)&lt;br /&gt;
print(&amp;quot;Rūšiuotos dalys, Po vidurnakčio ar&amp;quot;,b23)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai kokia išvestis:&lt;br /&gt;
&lt;br /&gt;
 a + b yra 555.4&lt;br /&gt;
 vardas yra Jonas&lt;br /&gt;
 Rūšiuotos dalys, Po vidurnakčio ar Šlamštas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kintamieji talpina duomenis. Viršuje aprašytoje programoje kintamieji yra &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;. Pagrindiniai du kintamųjų tipai yra ''tekstas'' ir ''skaičius''. Tekstas yra raidžių, skaičių ir kitų simbolių seka. Šiame pavyzdyje &amp;lt;code&amp;gt;b23&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt; yra tekstinio tipo kintamieji. &amp;lt;code&amp;gt;Šlamštas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;a + b yra&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vardas yra&amp;lt;/code&amp;gt;, ir &amp;lt;code&amp;gt;Rūšiuotos dalys, Po vidurnakčio ar&amp;lt;/code&amp;gt; šioje programoje yra tiesiog tekstinės reikšmės. Paprastas tekstas yra apsuptas kabučių &amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;'&amp;lt;/code&amp;gt;.&lt;br /&gt;
Kitas kintamojo tipas yra skaičius. Atkreipkite dėmesį, kad kintamieji, kurie naudojami saugoti reikšmes, nenaudoja kabučių (&amp;quot; ir '). Jei norite naudoti realias ''reikšmes'', privalote naudoti kabutes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
reikšmė1 == Op!&lt;br /&gt;
reikšmė2 == &amp;quot;Op!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abu pavyzdžiai atrodo vienodai, bet pirmu atveju Python tikrins ar reikšmė, patalpinta kintamajame &amp;lt;code&amp;gt;reikšmė1&amp;lt;/code&amp;gt;, yra tokia pati kaip ''kintamojo'' &amp;lt;code&amp;gt;Pim&amp;lt;/code&amp;gt;. Antrame pavyzdyje Python tikrins ar tekstas (konkrečios raidės &amp;lt;code&amp;gt;O&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; ir&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;) yra tokios pat kaip ir &amp;lt;code&amp;gt;reikšmė2&amp;lt;/code&amp;gt; (skaitant toliau bus daugiau paaiškinimų apie tekstą ir &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Priskyrimai ===&lt;br /&gt;
&lt;br /&gt;
Gerai, dabar mes turime dėžutes, pavadintas kintamaisiais, taip pat informaciją, kuri gali būti kintamajame. Komputeris pamatys tokią eilutę &amp;lt;code&amp;gt;vardas = &amp;quot;Jonas&amp;quot;&amp;lt;/code&amp;gt; ir perskaitys ją kaip &amp;quot;Padėk tekstą &amp;lt;code&amp;gt;Jonas&amp;lt;/code&amp;gt; į dėžę (ar kintamąjį) &amp;lt;code&amp;gt;vardas&amp;lt;/code&amp;gt;&amp;quot;. Vėliau, pamatęs sakinį &amp;lt;code&amp;gt;c = a + b&amp;lt;/code&amp;gt; jį perskaitys kaip &amp;quot;padėt sumą &amp;lt;code&amp;gt;a + b&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;123.4 + 432&amp;lt;/code&amp;gt;, kas lygu &amp;lt;code&amp;gt;555.4&amp;lt;/code&amp;gt;, į &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;&amp;quot;. Dešinė sakinio pusė ''konvertuosis'' ir rezultatas bus padėtas į kintamajį kairėje pusėje (&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Tai yra vadinama ''priskyrimu''. Turėtume nemaišyti priskyrimo ir matematinio lygybės ženklo (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;). Ką reiškia &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; aptarsime vėliau.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O štai ir kitas kintamųjų naudojimo pavyzdys:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
a = 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a + 1&lt;br /&gt;
print(a)&lt;br /&gt;
a = a * 2&lt;br /&gt;
print(a)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ir žinoma štai tokį rezultatą gausime:&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
 2&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
Net jei kintamieji yra abiejose lygybės pusėse (pavyzdžiui šlamštas = šlamštas), komputeris vis tiek perskaitys taip: &amp;quot;Pirmiausia surask informaciją, kuri patalpinta ir tada surask, kur ją padėti&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dar viena programa prieš man pabangiant šį skyrių:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
skaičius = float(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
sveikasSkaičius= int(input(&amp;quot;Įvesk sveiką skaičių: &amp;quot;))&lt;br /&gt;
tekstas = input(&amp;quot;Įvesk tekstą: &amp;quot;)&lt;br /&gt;
print(&amp;quot;skaičius =&amp;quot;, skaičius)&lt;br /&gt;
print(&amp;quot;skaičius yra&amp;quot;, type(skaičius ))&lt;br /&gt;
print(&amp;quot;skaičius * 2 =&amp;quot;, skaičius * 2)&lt;br /&gt;
print(&amp;quot;sveikas skaičius =&amp;quot;, sveikasSkaičius)&lt;br /&gt;
print(&amp;quot;sveikas skaičius yra&amp;quot;, type(sveikasSkaičius))&lt;br /&gt;
print(&amp;quot;sveikasSkaičius* 2 =&amp;quot;, sveikasSkaičius* 2)&lt;br /&gt;
print(&amp;quot;tekstas=&amp;quot;, tekstas)&lt;br /&gt;
print(&amp;quot;tekstas yra &amp;quot;, type(tekstas))&lt;br /&gt;
print(&amp;quot;tekstas* 2 =&amp;quot;, tekstas* 2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk skaičių: '''12.34'''&lt;br /&gt;
 Įvesk sveiką skaičių: '''-3'''&lt;br /&gt;
 Įvesk tekstą: '''Labas'''&lt;br /&gt;
 skaičius = 12.34&lt;br /&gt;
 skaičius  yra &amp;lt;class 'float'&amp;gt;&lt;br /&gt;
 skaičius * 2 = 24.68&lt;br /&gt;
 sveikas skaičius = -3&lt;br /&gt;
 sveikas skaičius yra &amp;lt;class 'int'&amp;gt;&lt;br /&gt;
 sveikasSkaičius * 2 = -6&lt;br /&gt;
 tekstas = Labas&lt;br /&gt;
 tekstas yra &amp;lt;class 'str'&amp;gt;&lt;br /&gt;
 tekstas * 2 = LabasLabas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Atkreipk dėmesę, kad &amp;lt;code&amp;gt;skaičius&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; ,&amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt; ir gražino sveiką skaičių - reikšmę be kablelio, kai tuo tarpu &amp;lt;code&amp;gt;tekstas&amp;lt;/code&amp;gt; buvo sukurtas su &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt; gražino tekstinę eilutę (gali būti aprašoma ir &amp;lt;code&amp;gt;str(input())&amp;lt;/code&amp;gt;). Jei tu nori, kad vartotojas įvestų skaičių su kableliu, naudok &amp;lt;code&amp;gt;float(input())&amp;lt;/code&amp;gt; kintamojo tipą. Jei nori, kad vartotojas įvestų sveiką skaičių, naudok &amp;lt;code&amp;gt;int(input())&amp;lt;/code&amp;gt;, bet jei nori teksto - naudok &amp;lt;code&amp;gt;input()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Antra pusė programos naudoja &amp;lt;code&amp;gt;type()&amp;lt;/code&amp;gt; funkciją, kuri nusako, kokio tipo kintamasis yra. Skaičius yra &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; arba &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; tipo. Tai yra angliškų žodžių ''integer'' (sveikas skaičius) ir ''floating point'' (slankusis kablelis, naudojamas daugiausiai skaičiams su kableliu) trumpiniai. Tekstinė eilutė yra &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt;, trumpinys ''string'' (virvelė). Sveiki skaičiai ir slankusis kablelis gali būti naudojami matematinėms funkcijoms, tekstas - ne. Atkreipk dėmesį, kai python daugina skaičių iš sveiko skaičiaus gaunamas rezultatas, kurio ir galima tikėtis, tačiau jei tekstas padauginamas iš sveiko skaičiaus - sukuriamos kelios teksto kopijos (pavyzdžiui, &amp;lt;code&amp;gt;tekstas * 2 = LabasLabas&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Operacijos su tekstu daro kitokius dalykus nei operacijos su skaičiaus. Taip pat, kai kurios operacijos veikia tik su skaičiaus ir duos klaidą, jei bus bandoma panaudoti tesktą. Štai keleta interaktyvių pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Čia&amp;quot; + &amp;quot; &amp;quot; + &amp;quot;yra&amp;quot; + &amp;quot; junginys.&amp;quot;)&lt;br /&gt;
Čia yra junginys.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Ha, &amp;quot; * 5 + &amp;quot;ha!&amp;quot;)&lt;br /&gt;
Ha, Ha, Ha, Ha, Ha, ha!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(3 - 1)&lt;br /&gt;
2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;3&amp;quot; - &amp;quot;1&amp;quot;)&lt;br /&gt;
Traceback (paskutinis veiksmas):&lt;br /&gt;
  File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;
TypeError: unsupported operand type(s) for -: 'str' and 'str'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Štai sąrašas kelių operacijų su tekstu:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation &lt;br /&gt;
!Symbol &lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Pakartojimas&lt;br /&gt;
|&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;i&amp;quot; * 5 == &amp;quot;iiiii&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Sujungimas&lt;br /&gt;
|&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; &lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;quot;Hello, &amp;quot; + &amp;quot;World!&amp;quot; == &amp;quot;Hello, World!&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&lt;br /&gt;
'''Laikas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# ši programa apskaičiuoja laiko priklausomybę nuo greičio ir atstumo&lt;br /&gt;
print(&amp;quot;Įvesk greitį ir atstumą&amp;quot;)&lt;br /&gt;
greitis = float(input(&amp;quot;Greitis: &amp;quot;))&lt;br /&gt;
atstumas = float(input(&amp;quot;Atstumas: &amp;quot;))&lt;br /&gt;
laikas=(atstumas / greitis )&lt;br /&gt;
print(&amp;quot;Laikas:&amp;quot;, laikas)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''5'''&lt;br /&gt;
 Atstumas: '''10'''&lt;br /&gt;
 Laikas: 2.0&lt;br /&gt;
&lt;br /&gt;
 Įvesk greitį ir atstumą&lt;br /&gt;
 Greitis: '''3.52'''&lt;br /&gt;
 Atstumas: '''45.6'''&lt;br /&gt;
 Laikas: 12.9545454545&lt;br /&gt;
&lt;br /&gt;
'''Plotas.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa apskaičiuoja stačiakampio perimetrą ir plotą &lt;br /&gt;
print(&amp;quot;Įvestike stačiakampio informaciją&amp;quot;)&lt;br /&gt;
ilgis = float(input(&amp;quot;Ilgis: &amp;quot;))&lt;br /&gt;
plotis = float(input(&amp;quot;Plotis: &amp;quot;))&lt;br /&gt;
Perimetras=(2 * ilgis+ 2 * plotis) &lt;br /&gt;
print(&amp;quot;Plotas:&amp;quot;, ilgis * plotis)&lt;br /&gt;
print(&amp;quot;Perimetras:&amp;quot;, Perimetras)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''4'''&lt;br /&gt;
 Plotis: '''3'''&lt;br /&gt;
 Plotas: 12.0&lt;br /&gt;
 Perimetras: 14.0&lt;br /&gt;
&lt;br /&gt;
 Įvestike stačiakampio informaciją&lt;br /&gt;
 Ilgis: '''2.53'''&lt;br /&gt;
 Plotis: '''5.2'''&lt;br /&gt;
 Plotas: 13.156&lt;br /&gt;
 Perimetras: 15.46&lt;br /&gt;
&lt;br /&gt;
'''Temperatura.py'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Ši programa koncertuoja temperatūra iš Farenheitų į Celsijų&lt;br /&gt;
far_temp = float(input(&amp;quot;Temperatura Farenheitais: &amp;quot;))&lt;br /&gt;
cels_temp = (far_temp - 32.0) *( 5.0 / 9.0)&lt;br /&gt;
print(&amp;quot;Temperatura Celsijaus laipsniais:&amp;quot;, cels_temp )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pavyzdžio rezultatas:&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''32'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 0.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''-40'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: -40.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''212'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 100.0&lt;br /&gt;
&lt;br /&gt;
 Temperatura Farenheitais: '''98.6'''&lt;br /&gt;
 Temperatura Celsijaus laipsniais: 37.0&lt;br /&gt;
&lt;br /&gt;
=== Užduotis ===&lt;br /&gt;
Parašyti programa, kuri priima 2 tekstines reikšmes, 2 skaičius ir vartotojo įvestį, sujungia juos be tarpų ir atvaizduoja tekstus, o tada sudaugina du skaičius ir atvaizduoja naujoje eilutėje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sprendimas ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;  &lt;br /&gt;
tekstas1 = input('Tekstas 1: ')&lt;br /&gt;
tekstas2 = input('Tekstas 2: ')&lt;br /&gt;
skaičius1 = float(input('Skaičius 1: '))&lt;br /&gt;
skaičius2 = float(input('Skaičius 2: '))&lt;br /&gt;
print(tekstas1 + tekstas2 )&lt;br /&gt;
print(skaičius1 * skaičius2 )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Hello, World |next=Count to 10}}&lt;/div&gt;</summary>
		<author><name>LauraK</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=3475</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=3475"/>
		<updated>2021-10-24T17:39:05Z</updated>

		<summary type="html">&lt;p&gt;LauraK: /* Intro to Imported Libraries and other Functions */&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 pagrindus. Šis skyrius skirtas parodyti tolesnes Python 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ų funkcijų, kurių prireikia programoms, kurios atlieka įvarias matematines operacijas (kurioms 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 &amp;quot;π&amp;quot;, tavo kompiuteryje pasiekiamu tikslumu. &amp;lt;code&amp;gt;math.e&amp;lt;/code&amp;gt; yra matematinė konstanta &amp;quot;e&amp;quot;, tavo kompiuteryje pasiekiamu tikslumu.&lt;br /&gt;
Štai yra abiejų konstantų, įvestų interaktyviuoju režimu Python 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 peržiūrinė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>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3450</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3450"/>
		<updated>2021-10-19T07:22:38Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poema = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Ta&amp;quot;, &amp;quot;liga&amp;quot;, &amp;quot;nelimpa&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;net&amp;quot;, &amp;quot;ir&amp;quot;, &amp;quot;prie&amp;quot;,&lt;br /&gt;
        &amp;quot;savų.&amp;quot;, &amp;quot;Pats&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;žiopliukas&amp;quot;, &amp;quot;būdams,&amp;quot;, &amp;quot;neapkrės&amp;quot;, &amp;quot;kitų.&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;Žiopliškumas&amp;quot;, &amp;quot;buvo&amp;quot;, ir&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;visad&amp;quot;, &amp;quot;jis&amp;quot;, &amp;quot;bus&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;Jei&amp;quot;, &amp;quot;skandinsi&amp;quot;, &amp;quot;pelkėj,&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;jis&amp;quot;, &amp;quot;ir&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;ten&amp;quot;, &amp;quot;nežus&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def gauk_pastorintą(tekstas):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## ar_pastorintas pasako ar mes dabar tikriname &lt;br /&gt;
    ## pastorintą teksto dalį.&lt;br /&gt;
    ar_pastorintas = false&lt;br /&gt;
    ## pradinis_blokas yra indeksas arba nepastorinta &lt;br /&gt;
    ## teksto dalis arba pastorinta.&lt;br /&gt;
    pradinis_blokas = 0&lt;br /&gt;
    for indeksas in range(len(tekstas)):&lt;br /&gt;
        ## Apdorojama pastorinto teksto pradžia &lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: Papildoma pastorinimo atidarymo žyma&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Nepastorintas:&amp;quot;, tekstas[pradinis_blokas:indeksas]&lt;br /&gt;
            ar_pastorintas = true&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
        ## Apdorojama pastorinto teksto pabaiga&lt;br /&gt;
        ## Atsimink, kad paskutinis skaičius atliekant pjūvį yra indeksas &lt;br /&gt;
        ## po to, kai paskutinis indeksas yra panaudotas.&lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: papildoma pastorinimo uždarymo žyma&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Pastorintas [&amp;quot;, pradinis_blokas, &amp;quot;:&amp;quot;, indeksas, &amp;quot;]&amp;quot;, tekstas[pradinis_blokas:indeksas])&lt;br /&gt;
            ar_pastorintas = false&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
&lt;br /&gt;
gauk_pastorintą(poema)&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;
 Pastorinta [ 1 : 4 ] ['Ta', 'liga', 'nelimpa']&lt;br /&gt;
 Pastorinta [ 11 : 15 ] ['žiopliukas', 'būdams,', 'neapkrės', 'kitų.']&lt;br /&gt;
 Pastorinta [ 20 : 23 ] ['visad', 'jis', 'bus.']&lt;br /&gt;
 Pastorinta [ 28 : 30 ] ['jis', 'ir']&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; pasiima sau į sąrašą tai, kas buvo padalinta į žodžius ir žymas.  Žymos, kurį ši funkcija ieško - &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt;, nes ji pradeda pastorintą tekstą ir &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt;, kuris užbaigia pastorintą tekstą. Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; eina per tekstą ir ieško pradžios ir pabaigos žymų.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys turėtų nustebinti, kadangi pakeitus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeitė ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Taip yra todėl, kad teiginys &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; sukūrė ''nuorodą(reference)'' iš &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, o tai reiškia, jog &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dabar yra dar vienas &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; vardas.&lt;br /&gt;
Taigi,  bet koks &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pakeitimas, keičia ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Tačiau kai kurie priskyrimai nesukuria dviejų pavadinimų vienam sąrašui, pažvelk į dar vieną pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Šiuo atveju &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; nėra nuoroda į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, nes išraiška &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; sukuria naują sąrašą vietoje nuorodos į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Visos priskyrimo operacijos sukuria nuorodą, pavyzdžiui: kai perduodi sąrašą kaip funkcijos argumentą, tu sukuri nuorodą.&lt;br /&gt;
Visgi, dažniau kuriame kopijas, o ne nuorodas, todėl svarbu įsitikinti, kas buvo sukurta, pavyzdžiui: kai norime pakeisti vieną sąrašą, nekeisdami kito sąrašo pavadinimo, mes turime įsitikinti, kad sukūrėme sąrašo kopiją.&lt;br /&gt;
&lt;br /&gt;
Yra keli būdai, kaip gali sukurti sąrašo kopiją. Vienas iš paprasčiausių būdų yra pjaustymo operatorius, kadangi jis visuomet sukuria naują sąrašą, net tada, kai su pjūviu apimame viso sąrašo ilgį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Panaudoję pjūvio operatorių &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; mes sukuriame naujo sąrašo kopiją. Turėk omeny, kad nukopijuojamas yra tik išorinis sąrašas. Bet koks vidinis sąrašas turi nuorodą į pirminį sąrašą. Todėl, kai sąraše yra sąrašų, reikia nukopijuoti ir vidinius sąrašus. Tu tai gali padaryti pats, tačiau Python'as savy jau turi modulį, kuris tai padaro už tave. Gali panaudoti funkciją &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; iš &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; modulio:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
Iš pradžių atkreipk dėmesį į tai, kad &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; sąrašų sąrašas. Tada pastebėk, kad, kai kodo eilutė &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; yra vykdoma, tuomet &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeičia, bet &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; ne. Taip nutiko todėl, kad vidiniai masyvai vis dar yra nuorodos, kai naudojamas pjūvio operatorius.  Iš kitos pusės, &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; buvo visiškai nukopijuotas.&lt;br /&gt;
&lt;br /&gt;
Taigi, ar turėčiau nerimauti dėl nuorodų kiekvieną kartą, kai naudoju funkciją ar&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  Geros naujienos yra tos, kad tau reikia nerimauti apie nuorodas tik naudojant žodynus ir sąrašus. Skaičiai ir teksto eilutės sukuria nuorodas tik tada, kai yra vykdoma priskyrimo operacija, tačiau, kitos operacijos sukuria kopija ir tau nereikia sukti galvos ar netikėtai pasikeis reikšmė. Tačiau tau reikia turėt omeny nuorodas, kai keiti sąrašus ir žodynus. &lt;br /&gt;
&lt;br /&gt;
Turbūt susimąstei, kam išvis yra reikalingos nuorodos? Pagrindinė priežastis - greitis. Sukurti nuorodą sąrašo tūkstančiui elementų yra yra daug greičiau nei sukurti jų kopijas. Dar viena priežastis - tai, kad tu gali turėti funkciją, kuri leidžia modifikuoti sąrašus arba žodynus. Jei kada nors susidursi su keistomis problemomis, kai duomenys pasikeičia, nors neturėtų, tai prisimink apie nuorodas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3449</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3449"/>
		<updated>2021-10-19T06:23:59Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poema = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def gauk_pastorintą(tekstas):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## ar_pastorintas pasako ar mes dabar tikriname &lt;br /&gt;
    ## pastorintą teksto dalį.&lt;br /&gt;
    ar_pastorintas = false&lt;br /&gt;
    ## pradinis_blokas yra indeksas arba nepastorinta &lt;br /&gt;
    ## teksto dalis arba pastorinta.&lt;br /&gt;
    pradinis_blokas = 0&lt;br /&gt;
    for indeksas in range(len(tekstas)):&lt;br /&gt;
        ## Apdorojama pastorinto teksto pradžia &lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: Papildoma pastorinimo atidarymo žyma&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Nepastorintas:&amp;quot;, tekstas[pradinis_blokas:indeksas]&lt;br /&gt;
            ar_pastorintas = true&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
        ## Apdorojama pastorinto teksto pabaiga&lt;br /&gt;
        ## Atsimink, kad paskutinis skaičius atliekant pjūvį yra indeksas &lt;br /&gt;
        ## po to, kai paskutinis indeksas yra panaudotas.&lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: papildoma pastorinimo uždarymo žyma&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Pastorintas [&amp;quot;, pradinis_blokas, &amp;quot;:&amp;quot;, indeksas, &amp;quot;]&amp;quot;, tekstas[pradinis_blokas:indeksas])&lt;br /&gt;
            ar_pastorintas = false&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
&lt;br /&gt;
gauk_pastorintą(poema)&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;
 Pastorinta [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Pastorinta [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Pastorinta [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Pastorinta [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; pasiima sau į sąrašą tai, kas buvo padalinta į žodžius ir žymas.  Žymos, kurį ši funkcija ieško - &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt;, nes ji pradeda pastorintą tekstą ir &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt;, kuris užbaigia pastorintą tekstą. Funkcija &amp;lt;code&amp;gt;gauk_pastorintą()&amp;lt;/code&amp;gt; eina per tekstą ir ieško pradžios ir pabaigos žymų.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys turėtų nustebinti, kadangi pakeitus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeitė ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Taip yra todėl, kad teiginys &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; sukūrė ''nuorodą(reference)'' iš &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, o tai reiškia, jog &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dabar yra dar vienas &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; vardas.&lt;br /&gt;
Taigi,  bet koks &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pakeitimas, keičia ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Tačiau kai kurie priskyrimai nesukuria dviejų pavadinimų vienam sąrašui, pažvelk į dar vieną pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Šiuo atveju &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; nėra nuoroda į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, nes išraiška &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; sukuria naują sąrašą vietoje nuorodos į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Visos priskyrimo operacijos sukuria nuorodą, pavyzdžiui: kai perduodi sąrašą kaip funkcijos argumentą, tu sukuri nuorodą.&lt;br /&gt;
Visgi, dažniau kuriame kopijas, o ne nuorodas, todėl svarbu įsitikinti, kas buvo sukurta, pavyzdžiui: kai norime pakeisti vieną sąrašą, nekeisdami kito sąrašo pavadinimo, mes turime įsitikinti, kad sukūrėme sąrašo kopiją.&lt;br /&gt;
&lt;br /&gt;
Yra keli būdai, kaip gali sukurti sąrašo kopiją. Vienas iš paprasčiausių būdų yra pjaustymo operatorius, kadangi jis visuomet sukuria naują sąrašą, net tada, kai su pjūviu apimame viso sąrašo ilgį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Panaudoję pjūvio operatorių &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; mes sukuriame naujo sąrašo kopiją. Turėk omeny, kad nukopijuojamas yra tik išorinis sąrašas. Bet koks vidinis sąrašas turi nuorodą į pirminį sąrašą. Todėl, kai sąraše yra sąrašų, reikia nukopijuoti ir vidinius sąrašus. Tu tai gali padaryti pats, tačiau Python'as savy jau turi modulį, kuris tai padaro už tave. Gali panaudoti funkciją &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; iš &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; modulio:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
Iš pradžių atkreipk dėmesį į tai, kad &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; sąrašų sąrašas. Tada pastebėk, kad, kai kodo eilutė &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; yra vykdoma, tuomet &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeičia, bet &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; ne. Taip nutiko todėl, kad vidiniai masyvai vis dar yra nuorodos, kai naudojamas pjūvio operatorius.  Iš kitos pusės, &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; buvo visiškai nukopijuotas.&lt;br /&gt;
&lt;br /&gt;
Taigi, ar turėčiau nerimauti dėl nuorodų kiekvieną kartą, kai naudoju funkciją ar&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  Geros naujienos yra tos, kad tau reikia nerimauti apie nuorodas tik naudojant žodynus ir sąrašus. Skaičiai ir teksto eilutės sukuria nuorodas tik tada, kai yra vykdoma priskyrimo operacija, tačiau, kitos operacijos sukuria kopija ir tau nereikia sukti galvos ar netikėtai pasikeis reikšmė. Tačiau tau reikia turėt omeny nuorodas, kai keiti sąrašus ir žodynus. &lt;br /&gt;
&lt;br /&gt;
Turbūt susimąstei, kam išvis yra reikalingos nuorodos? Pagrindinė priežastis - greitis. Sukurti nuorodą sąrašo tūkstančiui elementų yra yra daug greičiau nei sukurti jų kopijas. Dar viena priežastis - tai, kad tu gali turėti funkciją, kuri leidžia modifikuoti sąrašus arba žodynus. Jei kada nors susidursi su keistomis problemomis, kai duomenys pasikeičia, nors neturėtų, tai prisimink apie nuorodas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Siekiant_tobulumo&amp;diff=3448</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=3448"/>
		<updated>2021-10-18T18:34:03Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== ...or how to handle errors ===&lt;br /&gt;
&lt;br /&gt;
=== closing files with with ===&lt;br /&gt;
&lt;br /&gt;
We use the &amp;quot;with&amp;quot; statement to open and close files.&amp;lt;ref&amp;gt;&lt;br /&gt;
[http://docs.python.org/3.4/reference/compound_stmts.html#the-with-statement &amp;quot;The 'with' statement&amp;quot;]&lt;br /&gt;
&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;&lt;br /&gt;
[http://preshing.com/20110920/the-python-with-statement-by-example/ 'The Python &amp;quot;with&amp;quot; Statement by Example']&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
with open(&amp;quot;in_test.txt&amp;quot;, &amp;quot;rt&amp;quot;) as in_file:&lt;br /&gt;
    with open(&amp;quot;out_test.txt&amp;quot;, &amp;quot;wt&amp;quot;) as out_file:&lt;br /&gt;
        text = in_file.read()&lt;br /&gt;
        data = parse(text)&lt;br /&gt;
        results = encode(data)&lt;br /&gt;
        out_file.write(results)&lt;br /&gt;
    print( &amp;quot;All done.&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If some sort of error happens anywhere in this code&lt;br /&gt;
(one of the files is inaccessible,&lt;br /&gt;
the parse() function chokes on corrupt data,&lt;br /&gt;
etc.)&lt;br /&gt;
the &amp;quot;with&amp;quot; statements guarantee that all the files will eventually be properly closed. Closing a file just means that the file is &amp;quot;cleaned up&amp;quot; and &amp;quot;released&amp;quot; by our program so that it can be used in another program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{todo|&lt;br /&gt;
Is the &amp;quot;closing files with with&amp;quot; section too much detail for a non-programmers tutorial?&lt;br /&gt;
If so, move it to some other Python Wikibook ([[Subject:Python programming language]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== catching errors with try ===&lt;br /&gt;
So you now have the perfect program, it runs flawlessly, except for one detail, it will crash on invalid user input.  Have no fear, for Python has a special control structure for you.  It's called &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; and it tries to do something.  Here is an example of a program with a problem:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Type Control C or -1 to exit&amp;quot;)&lt;br /&gt;
number = 1&lt;br /&gt;
while number != -1:&lt;br /&gt;
   number = int(input(&amp;quot;Enter a number: &amp;quot;))&lt;br /&gt;
   print(&amp;quot;You entered:&amp;quot;, number)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice how when you enter &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt; it outputs something like:&lt;br /&gt;
&lt;br /&gt;
 Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;try_less.py&amp;quot;, line 4, in &amp;lt;module&amp;gt;&lt;br /&gt;
    number = int(input(&amp;quot;Enter a number: &amp;quot;))&lt;br /&gt;
 ValueError: invalid literal for int() with base 10: '\\@#&amp;amp;'&lt;br /&gt;
&lt;br /&gt;
As you can see the &amp;lt;code&amp;gt;int()&amp;lt;/code&amp;gt; function is unhappy with the number &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt; (as well it should be).  The last line shows what the problem is; Python found a &amp;lt;code&amp;gt;ValueError&amp;lt;/code&amp;gt;.   How can our program deal with this?  What we do is first: put the place where errors may occur in a &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; block, and second: tell Python how we want &amp;lt;code&amp;gt;ValueError&amp;lt;/code&amp;gt;s handled.  The following program does this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Type Control C or -1 to exit&amp;quot;)&lt;br /&gt;
number = 1&lt;br /&gt;
while number != -1:&lt;br /&gt;
    try:&lt;br /&gt;
        number = int(input(&amp;quot;Enter a number: &amp;quot;))&lt;br /&gt;
        print(&amp;quot;You entered:&amp;quot;, number)&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;That was not a number.&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now when we run the new program and give it &amp;lt;code&amp;gt;@#&amp;amp;&amp;lt;/code&amp;gt; it tells us &amp;quot;That was not a number.&amp;quot; and continues with what it was doing before.&lt;br /&gt;
&lt;br /&gt;
When your program keeps having some error that you know how to handle, put code in a &amp;lt;code&amp;gt;try&amp;lt;/code&amp;gt; block, and put the way to handle the error in the &amp;lt;code&amp;gt;except&amp;lt;/code&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
=== Exercises ===&lt;br /&gt;
Update at least the phone numbers program (in section [[../Dictionaries|Dictionaries]]) so it doesn't crash if a user doesn't enter any data at the menu.&lt;br /&gt;
{{Solution|title=Solution|text=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def print_menu():&lt;br /&gt;
	print('1. Print Phone Numbers')&lt;br /&gt;
	print('2. Add a Phone Number')&lt;br /&gt;
	print('3. Remove a Phone Number')&lt;br /&gt;
	print('4. Lookup a Phone Number')&lt;br /&gt;
	print('5. Quit')&lt;br /&gt;
	print()&lt;br /&gt;
&lt;br /&gt;
numbers = {}&lt;br /&gt;
menu_choice = 0&lt;br /&gt;
print_menu()&lt;br /&gt;
while menu_choice != 5:&lt;br /&gt;
	try:&lt;br /&gt;
		menu_choice = int(input(&amp;quot;Type in a number (1-5): &amp;quot;))&lt;br /&gt;
		if menu_choice == 1:&lt;br /&gt;
			print(&amp;quot;Telephone Numbers:&amp;quot;)&lt;br /&gt;
			for x in numbers.keys():&lt;br /&gt;
				print(&amp;quot;Name: &amp;quot;, x, &amp;quot;\tNumber:&amp;quot;, numbers[x])&lt;br /&gt;
			print()&lt;br /&gt;
		elif menu_choice == 2:&lt;br /&gt;
			print(&amp;quot;Add Name and Number&amp;quot;)&lt;br /&gt;
			name = input(&amp;quot;Name: &amp;quot;)&lt;br /&gt;
			phone = input(&amp;quot;Number: &amp;quot;)&lt;br /&gt;
			numbers[name] = phone&lt;br /&gt;
		elif menu_choice == 3:&lt;br /&gt;
			print(&amp;quot;Remove Name and Number&amp;quot;)&lt;br /&gt;
			name = input(&amp;quot;Name: &amp;quot;)&lt;br /&gt;
			if name in numbers:&lt;br /&gt;
				del numbers[name]&lt;br /&gt;
			else:&lt;br /&gt;
				print(name, &amp;quot;was not found&amp;quot;)&lt;br /&gt;
		elif menu_choice == 4:&lt;br /&gt;
			print(&amp;quot;Lookup Number&amp;quot;)&lt;br /&gt;
			name = input(&amp;quot;Name: &amp;quot;)&lt;br /&gt;
			if name in numbers:&lt;br /&gt;
				print(&amp;quot;The number is&amp;quot;, numbers[name])&lt;br /&gt;
			else:&lt;br /&gt;
				print(name, &amp;quot;was not found&amp;quot;)&lt;br /&gt;
		elif menu_choice != 5:&lt;br /&gt;
			print_menu()&lt;br /&gt;
	except ValueError:&lt;br /&gt;
		print(&amp;quot;That was not a number.&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>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis&amp;diff=3447</id>
		<title>Python Vadovėlis</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis&amp;diff=3447"/>
		<updated>2021-10-18T18:32:37Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tai - standartinės Python programavimo kalbos vadovėlis, išverstas iš [https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3 Non programmer's Tutorial for Python 3].&lt;br /&gt;
&lt;br /&gt;
Šis vadovėlis yra atvirojo kodo, [https://www.gnu.org/licenses/gpl-3.0.html GPL v3] licencija.&lt;br /&gt;
&lt;br /&gt;
==Contents==&lt;br /&gt;
{{print version}}&lt;br /&gt;
{{PDF version}}&lt;br /&gt;
;[[Vadovėlis/Authors]] &lt;br /&gt;
: Contributors to this book&lt;br /&gt;
;[[Vadovėlis/Front matter]]&lt;br /&gt;
: Initial remarks&lt;br /&gt;
;[[Vadovėlis/Intro]]&lt;br /&gt;
: Installing and using Python&amp;amp;nbsp;&amp;amp;ndash; where to get help&lt;br /&gt;
;[[Vadovėlis/Hello, World]] [Rokas]&lt;br /&gt;
: The famous first program&amp;amp;nbsp;&amp;amp;ndash; screen output&amp;amp;nbsp;&amp;amp;ndash; variables&amp;amp;nbsp;&amp;amp;ndash; numbers and calculations&lt;br /&gt;
;[[Vadovėlis/Who Goes There?|Vadovėlis/Who Goes There? [Modesta]]]&lt;br /&gt;
: Interactive input&amp;amp;nbsp;&amp;amp;ndash; strings&lt;br /&gt;
;[[Vadovėlis/Count to 10]] [Rokas]&lt;br /&gt;
: &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt; loops&lt;br /&gt;
;[[Vadovėlis/Decisions|Vadovėlis/Decisions [Monika]]]&lt;br /&gt;
:&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt; statements&lt;br /&gt;
;[[Vadovėlis/Debugging|Vadovėlis/Debugging [Monika]]]&lt;br /&gt;
:Finding out what goes wrong&lt;br /&gt;
;[[Vadovėlis/Defining Functions]] [Rokas]&lt;br /&gt;
: Structuring programs with the use of functions&lt;br /&gt;
;[[Vadovėlis/Advanced Functions Example]] [Rokas]&lt;br /&gt;
: (Almost) mind-blowing example of how programmers can think&lt;br /&gt;
;[[Vadovėlis/Lists|Vadovėlis/Lists [Artūras]]]&lt;br /&gt;
:Variables containing more than one value&lt;br /&gt;
;[[Vadovėlis/For Loops|Vadovėlis/For Loops [Artūras]]]&lt;br /&gt;
:A second kind of loop&lt;br /&gt;
;[[Vadovėlis/Boolean Expressions|Vadovėlis/Boolean Expressions [Laura]]]&lt;br /&gt;
:Computer logic&amp;amp;nbsp;&amp;amp;ndash; &amp;lt;tt&amp;gt;True&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;False&amp;lt;/tt&amp;gt;&amp;amp;nbsp;&amp;amp;ndash; &amp;lt;tt&amp;gt;and&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;or&amp;lt;/tt&amp;gt;&amp;amp;nbsp;&amp;amp;ndash; &amp;lt;tt&amp;gt;not&amp;lt;/tt&amp;gt;&lt;br /&gt;
;[[Vadovėlis/Dictionaries|Vadovėlis/Dictionaries [zivile]]]&lt;br /&gt;
:Variables containing key/value pairs&lt;br /&gt;
;[[Vadovėlis/Using Modules |Vadovėlis/Using Modules [zivile]]]&lt;br /&gt;
:Extensions to the standard set of functionality&lt;br /&gt;
;[[Vadovėlis/More on Lists|Vadovėlis/More on Lists [Laura]]]&lt;br /&gt;
:Using elements or parts of lists&lt;br /&gt;
;[[Vadovėlis/Revenge of the Strings]] [Rokas]&lt;br /&gt;
:More advanced text manipulations&lt;br /&gt;
;[[Vadovėlis/File IO|Vadovėlis/File IO [Artūras]]]&lt;br /&gt;
:Reading from files and writing to files&lt;br /&gt;
;[[Vadovėlis/Dealing with the imperfect]]&lt;br /&gt;
:How to handle errors&lt;br /&gt;
;[[Vadovėlis/Recursion]]&lt;br /&gt;
:Recursive Functions&lt;br /&gt;
;[[Vadovėlis/Intro to Object Oriented Programming in Python 3]]&lt;br /&gt;
:Basics of OOP (Object Oriented Programming)&lt;br /&gt;
;[[Vadovėlis/Intro to Imported Libraries and other Functions|Vadovėlis/Intro to Imported Libraries and other Functions [Laura]]]&lt;br /&gt;
:Basic functions from various libraries.&lt;br /&gt;
;[[Vadovėlis/The End]]&lt;br /&gt;
:How to go further&lt;br /&gt;
;[[Vadovėlis/FAQ]]&lt;br /&gt;
:Some frequently asked questions&lt;br /&gt;
;[[Vadovėlis/Terminai]]&lt;br /&gt;
:Terminų žodynas&lt;br /&gt;
&lt;br /&gt;
{{Alphabetical|N}}&lt;br /&gt;
{{status|100%}}&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis&amp;diff=3446</id>
		<title>Python Vadovėlis</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis&amp;diff=3446"/>
		<updated>2021-10-18T18:31:39Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tai - standartinės Python programavimo kalbos vadovėlis, išverstas iš [https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3 Non programmer's Tutorial for Python 3].&lt;br /&gt;
&lt;br /&gt;
Šis vadovėlis yra atvirojo kodo, [https://www.gnu.org/licenses/gpl-3.0.html GPL v3] licencija.&lt;br /&gt;
&lt;br /&gt;
==Contents==&lt;br /&gt;
{{print version}}&lt;br /&gt;
{{PDF version}}&lt;br /&gt;
;[[Vadovėlis/Authors]] &lt;br /&gt;
: Contributors to this book&lt;br /&gt;
;[[Vadovėlis/Front matter]]&lt;br /&gt;
: Initial remarks&lt;br /&gt;
;[[Vadovėlis/Intro]]&lt;br /&gt;
: Installing and using Python&amp;amp;nbsp;&amp;amp;ndash; where to get help&lt;br /&gt;
;[[Vadovėlis/Hello, World]] [Rokas]&lt;br /&gt;
: The famous first program&amp;amp;nbsp;&amp;amp;ndash; screen output&amp;amp;nbsp;&amp;amp;ndash; variables&amp;amp;nbsp;&amp;amp;ndash; numbers and calculations&lt;br /&gt;
;[[Vadovėlis/Who Goes There?|Vadovėlis/Who Goes There? [Modesta]]]&lt;br /&gt;
: Interactive input&amp;amp;nbsp;&amp;amp;ndash; strings&lt;br /&gt;
;[[Vadovėlis/Count to 10]] [Rokas]&lt;br /&gt;
: &amp;lt;tt&amp;gt;while&amp;lt;/tt&amp;gt; loops&lt;br /&gt;
;[[Vadovėlis/Decisions|Vadovėlis/Decisions [Monika]]]&lt;br /&gt;
:&amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt; statements&lt;br /&gt;
;[[Vadovėlis/Debugging|Vadovėlis/Debugging [Monika]]]&lt;br /&gt;
:Finding out what goes wrong&lt;br /&gt;
;[[Vadovėlis/Defining Functions]] [Rokas]&lt;br /&gt;
: Structuring programs with the use of functions&lt;br /&gt;
;[[Vadovėlis/Advanced Functions Example]] [Rokas]&lt;br /&gt;
: (Almost) mind-blowing example of how programmers can think&lt;br /&gt;
;[[Vadovėlis/Lists|Vadovėlis/Lists [Artūras]]]&lt;br /&gt;
:Variables containing more than one value&lt;br /&gt;
;[[Vadovėlis/For Loops|Vadovėlis/For Loops [Artūras]]]&lt;br /&gt;
:A second kind of loop&lt;br /&gt;
;[[Vadovėlis/Boolean Expressions|Vadovėlis/Boolean Expressions [Laura]]]&lt;br /&gt;
:Computer logic&amp;amp;nbsp;&amp;amp;ndash; &amp;lt;tt&amp;gt;True&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;False&amp;lt;/tt&amp;gt;&amp;amp;nbsp;&amp;amp;ndash; &amp;lt;tt&amp;gt;and&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;or&amp;lt;/tt&amp;gt;&amp;amp;nbsp;&amp;amp;ndash; &amp;lt;tt&amp;gt;not&amp;lt;/tt&amp;gt;&lt;br /&gt;
;[[Vadovėlis/Dictionaries|Vadovėlis/Dictionaries [zivile]]]&lt;br /&gt;
:Variables containing key/value pairs&lt;br /&gt;
;[[Vadovėlis/Using Modules |Vadovėlis/Using Modules [zivile]]]&lt;br /&gt;
:Extensions to the standard set of functionality&lt;br /&gt;
;[[Vadovėlis/More on Lists|Vadovėlis/More on Lists [Laura]]]&lt;br /&gt;
:Using elements or parts of lists&lt;br /&gt;
;[[Vadovėlis/Revenge of the Strings]] [Rokas]&lt;br /&gt;
:More advanced text manipulations&lt;br /&gt;
;[[Vadovėlis/File IO|Vadovėlis/File IO [Artūras]]]&lt;br /&gt;
:Reading from files and writing to files&lt;br /&gt;
;[[Vadovėlis/Dealing with the imperfect]]&lt;br /&gt;
:How to handle errors&lt;br /&gt;
;[[Vadovėlis/Recursion]]&lt;br /&gt;
:Recursive Functions&lt;br /&gt;
;[[Vadovėlis/Intro to Object Oriented Programming in Python 3|Vadovėlis/Intro to Object Oriented Programming in Python 3 [Laura]]]&lt;br /&gt;
:Basics of OOP (Object Oriented Programming)&lt;br /&gt;
;[[Vadovėlis/Intro to Imported Libraries and other Functions]]&lt;br /&gt;
:Basic functions from various libraries.&lt;br /&gt;
;[[Vadovėlis/The End]]&lt;br /&gt;
:How to go further&lt;br /&gt;
;[[Vadovėlis/FAQ]]&lt;br /&gt;
:Some frequently asked questions&lt;br /&gt;
;[[Vadovėlis/Terminai]]&lt;br /&gt;
:Terminų žodynas&lt;br /&gt;
&lt;br /&gt;
{{Alphabetical|N}}&lt;br /&gt;
{{status|100%}}&lt;br /&gt;
__NOTOC__ __NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3445</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3445"/>
		<updated>2021-10-18T18:28:01Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poema = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def gauk_pastorintą(tekstas):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## ar_pastorintas pasako ar mes dabar tikriname &lt;br /&gt;
    ## pastorintą teksto dalį.&lt;br /&gt;
    ar_pastorintas = false&lt;br /&gt;
    ## pradinis_blokas yra indeksas arba nepastorinta &lt;br /&gt;
    ## teksto dalis arba pastorinta.&lt;br /&gt;
    pradinis_blokas = 0&lt;br /&gt;
    for indeksas in range(len(tekstas)):&lt;br /&gt;
        ## Apdorojama pastorinto teksto pradžia &lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: Papildoma pastorinimo atidarymo žyma&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Nepastorintas:&amp;quot;, tekstas[pradinis_blokas:indeksas]&lt;br /&gt;
            ar_pastorintas = true&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
        ## Apdorojama pastorinto teksto pabaiga&lt;br /&gt;
        ## Atsimink, kad paskutinis skaičius atliekant pjūvį yra indeksas &lt;br /&gt;
        ## po to, kai paskutinis indeksas yra panaudotas.&lt;br /&gt;
        if tekstas[indeksas] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not ar_pastorintas:&lt;br /&gt;
                print(&amp;quot;Klaida: papildoma pastorinimo uždarymo žyma&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Pastorintas [&amp;quot;, pradinis_blokas, &amp;quot;:&amp;quot;, indeksas, &amp;quot;]&amp;quot;, tekstas[pradinis_blokas:indeksas])&lt;br /&gt;
            ar_pastorintas = false&lt;br /&gt;
            pradinis_blokas = indeksas + 1&lt;br /&gt;
&lt;br /&gt;
gauk_pastorintą(poema)&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;
 Pastorinta [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Pastorinta [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Pastorinta [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Pastorinta [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
Funkcija &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; pasiima sau į sąrašą tai, kas buvo padalinta į žodžius ir žymas.  Žymos, kurį ši funkcija ieško - &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt;, nes ji pradeda pastorintą tekstą ir &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt;, kuris užbaigia pastorintą tekstą. Funkcija &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; eina per tekstą ir ieško pradžios ir pabaigos žymų.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys turėtų nustebinti, kadangi pakeitus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeitė ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Taip yra todėl, kad teiginys &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; sukūrė ''nuorodą(reference)'' iš &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, o tai reiškia, jog &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dabar yra dar vienas &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; vardas.&lt;br /&gt;
Taigi,  bet koks &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pakeitimas, keičia ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Tačiau kai kurie priskyrimai nesukuria dviejų pavadinimų vienam sąrašui, pažvelk į dar vieną pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Šiuo atveju &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; nėra nuoroda į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, nes išraiška &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; sukuria naują sąrašą vietoje nuorodos į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Visos priskyrimo operacijos sukuria nuorodą, pavyzdžiui: kai perduodi sąrašą kaip funkcijos argumentą, tu sukuri nuorodą.&lt;br /&gt;
Visgi, dažniau kuriame kopijas, o ne nuorodas, todėl svarbu įsitikinti, kas buvo sukurta, pavyzdžiui: kai norime pakeisti vieną sąrašą, nekeisdami kito sąrašo pavadinimo, mes turime įsitikinti, kad sukūrėme sąrašo kopiją.&lt;br /&gt;
&lt;br /&gt;
Yra keli būdai, kaip gali sukurti sąrašo kopiją. Vienas iš paprasčiausių būdų yra pjaustymo operatorius, kadangi jis visuomet sukuria naują sąrašą, net tada, kai su pjūviu apimame viso sąrašo ilgį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Panaudoję pjūvio operatorių &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; mes sukuriame naujo sąrašo kopiją. Turėk omeny, kad nukopijuojamas yra tik išorinis sąrašas. Bet koks vidinis sąrašas turi nuorodą į pirminį sąrašą. Todėl, kai sąraše yra sąrašų, reikia nukopijuoti ir vidinius sąrašus. Tu tai gali padaryti pats, tačiau Python'as savy jau turi modulį, kuris tai padaro už tave. Gali panaudoti funkciją &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; iš &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; modulio:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
Iš pradžių atkreipk dėmesį į tai, kad &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; sąrašų sąrašas. Tada pastebėk, kad, kai kodo eilutė &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; yra vykdoma, tuomet &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeičia, bet &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; ne. Taip nutiko todėl, kad vidiniai masyvai vis dar yra nuorodos, kai naudojamas pjūvio operatorius.  Iš kitos pusės, &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; buvo visiškai nukopijuotas.&lt;br /&gt;
&lt;br /&gt;
Taigi, ar turėčiau nerimauti dėl nuorodų kiekvieną kartą, kai naudoju funkciją ar&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  Geros naujienos yra tos, kad tau reikia nerimauti apie nuorodas tik naudojant žodynus ir sąrašus. Skaičiai ir teksto eilutės sukuria nuorodas tik tada, kai yra vykdoma priskyrimo operacija, tačiau, kitos operacijos sukuria kopija ir tau nereikia sukti galvos ar netikėtai pasikeis reikšmė. Tačiau tau reikia turėt omeny nuorodas, kai keiti sąrašus ir žodynus. &lt;br /&gt;
&lt;br /&gt;
Turbūt susimąstei, kam išvis yra reikalingos nuorodos? Pagrindinė priežastis - greitis. Sukurti nuorodą sąrašo tūkstančiui elementų yra yra daug greičiau nei sukurti jų kopijas. Dar viena priežastis - tai, kad tu gali turėti funkciją, kuri leidžia modifikuoti sąrašus arba žodynus. Jei kada nors susidursi su keistomis problemomis, kai duomenys pasikeičia, nors neturėtų, tai prisimink apie nuorodas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3444</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3444"/>
		<updated>2021-10-18T18:01:20Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&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;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys turėtų nustebinti, kadangi pakeitus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeitė ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Taip yra todėl, kad teiginys &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; sukūrė ''nuorodą(reference)'' iš &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, o tai reiškia, jog &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dabar yra dar vienas &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; vardas.&lt;br /&gt;
Taigi,  bet koks &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pakeitimas, keičia ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Tačiau kai kurie priskyrimai nesukuria dviejų pavadinimų vienam sąrašui, pažvelk į dar vieną pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Šiuo atveju &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; nėra nuoroda į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, nes išraiška &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; sukuria naują sąrašą vietoje nuorodos į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Visos priskyrimo operacijos sukuria nuorodą, pavyzdžiui: kai perduodi sąrašą kaip funkcijos argumentą, tu sukuri nuorodą.&lt;br /&gt;
Visgi, dažniau kuriame kopijas, o ne nuorodas, todėl svarbu įsitikinti, kas buvo sukurta, pavyzdžiui: kai norime pakeisti vieną sąrašą, nekeisdami kito sąrašo pavadinimo, mes turime įsitikinti, kad sukūrėme sąrašo kopiją.&lt;br /&gt;
&lt;br /&gt;
Yra keli būdai, kaip gali sukurti sąrašo kopiją. Vienas iš paprasčiausių būdų yra pjaustymo operatorius, kadangi jis visuomet sukuria naują sąrašą, net tada, kai su pjūviu apimame viso sąrašo ilgį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Panaudoję pjūvio operatorių &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; mes sukuriame naujo sąrašo kopiją. Turėk omeny, kad nukopijuojamas yra tik išorinis sąrašas. Bet koks vidinis sąrašas turi nuorodą į pirminį sąrašą. Todėl, kai sąraše yra sąrašų, reikia nukopijuoti ir vidinius sąrašus. Tu tai gali padaryti pats, tačiau Python'as savy jau turi modulį, kuris tai padaro už tave. Gali panaudoti funkciją &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; iš &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; modulio:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
Iš pradžių atkreipk dėmesį į tai, kad &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; sąrašų sąrašas. Tada pastebėk, kad, kai kodo eilutė &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; yra vykdoma, tuomet &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeičia, bet &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; ne. Taip nutiko todėl, kad vidiniai masyvai vis dar yra nuorodos, kai naudojamas pjūvio operatorius.  Iš kitos pusės, &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; buvo visiškai nukopijuotas.&lt;br /&gt;
&lt;br /&gt;
Taigi, ar turėčiau nerimauti dėl nuorodų kiekvieną kartą, kai naudoju funkciją ar&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  Geros naujienos yra tos, kad tau reikia nerimauti apie nuorodas tik naudojant žodynus ir sąrašus. Skaičiai ir teksto eilutės sukuria nuorodas tik tada, kai yra vykdoma priskyrimo operacija, tačiau, kitos operacijos sukuria kopija ir tau nereikia sukti galvos ar netikėtai pasikeis reikšmė. Tačiau tau reikia turėt omeny nuorodas, kai keiti sąrašus ir žodynus. &lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3437</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3437"/>
		<updated>2021-10-18T14:40:47Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&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;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys turėtų nustebinti, kadangi pakeitus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeitė ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Taip yra todėl, kad teiginys &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; sukūrė ''nuorodą(reference)'' iš &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, o tai reiškia, jog &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dabar yra dar vienas &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; vardas.&lt;br /&gt;
Taigi,  bet koks &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pakeitimas, keičia ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Tačiau kai kurie priskyrimai nesukuria dviejų pavadinimų vienam sąrašui, pažvelk į dar vieną pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
Šiuo atveju &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; nėra nuoroda į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, nes išraiška &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; sukuria naują sąrašą vietoje nuorodos į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Visos priskyrimo operacijos sukuria nuorodą, pavyzdžiui: kai perduodi sąrašą kaip funkcijos argumentą, tu sukuri nuorodą.&lt;br /&gt;
Visgi, dažniau kuriame kopijas, o ne nuorodas, todėl svarbu įsitikinti, kas buvo sukurta, pavyzdžiui: kai norime pakeisti vieną sąrašą, nekeisdami kito sąrašo pavadinimo, mes turime įsitikinti, kad sukūrėme sąrašo kopiją.&lt;br /&gt;
&lt;br /&gt;
Yra keli būdai, kaip gali sukurti sąrašo kopiją. Vienas iš paprasčiausių būdų yra pjaustymo operatorius, kadangi jis visuomet sukuria naują sąrašą, net tada, kai su pjūviu apimame viso sąrašo ilgį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Panaudoję pjūvio operatorių &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; mes sukuriame naujo sąrašo kopiją. Turėk omeny, kad nukopijuojamas yra tik išorinis sąrašas. Bet koks vidinis sąrašas yra nuorodos  į pirminę sąraš Any sublist inside is still a references to the sublist in the original list.  Todėl, kai sąraše yra sąrašų, reikia nukopijuoti ir vidinius sąrašus.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3435</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3435"/>
		<updated>2021-10-18T13:52:19Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&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;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys turėtų nustebinti, kadangi pakeitus &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pasikeitė ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Taip yra todėl, kad teiginys &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; sukūrė ''nuorodą(reference)'' iš &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; į &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, o tai reiškia, jog &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; dabar yra dar vienas &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; vardas.&lt;br /&gt;
Taigi,  bet koks &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; pakeitimas, keičia ir &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;. Tačiau kai kurie priskyrimai nesukuria dviejų pavadinimų vienam sąrašui, pažvelk į dar vieną pavyzdį:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; is not a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; since the expression &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; creates a new list. Then the statement&lt;br /&gt;
&amp;lt;code&amp;gt;b = a * 2&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a reference to &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; rather than a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.  All assignment operations create a reference.&lt;br /&gt;
When you pass a list as an argument to a function you create a&lt;br /&gt;
reference as well.  Most of the time you don't have to worry about&lt;br /&gt;
creating references rather than copies.  However when you need to make&lt;br /&gt;
modifications to one list without changing another name of the list&lt;br /&gt;
you have to make sure that you have actually created a copy.&lt;br /&gt;
&lt;br /&gt;
There are several ways to make a copy of a list.  The simplest that&lt;br /&gt;
works most of the time is the slice operator since it always makes a&lt;br /&gt;
new list even if it is a slice of a whole list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Taking the slice &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; creates a new copy of the list. However it only copies the outer list.  Any sublist inside is still a references to the sublist in the original list.  Therefore, when the list contains lists, the inner lists have to be copied as well.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3422</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3422"/>
		<updated>2021-10-15T12:24:21Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok ir išbandyk šios programos kodą):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&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;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
This probably looks surprising since a modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
resulted in &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; being changed as well.  What happened is that the&lt;br /&gt;
statement &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; makes &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a ''reference'' to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
This means that &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; can be thought of as another name for &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
Hence any modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; changes &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; as well.  However&lt;br /&gt;
some assignments don't create two names for one list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; is not a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; since the expression &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; creates a new list. Then the statement&lt;br /&gt;
&amp;lt;code&amp;gt;b = a * 2&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a reference to &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; rather than a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.  All assignment operations create a reference.&lt;br /&gt;
When you pass a list as an argument to a function you create a&lt;br /&gt;
reference as well.  Most of the time you don't have to worry about&lt;br /&gt;
creating references rather than copies.  However when you need to make&lt;br /&gt;
modifications to one list without changing another name of the list&lt;br /&gt;
you have to make sure that you have actually created a copy.&lt;br /&gt;
&lt;br /&gt;
There are several ways to make a copy of a list.  The simplest that&lt;br /&gt;
works most of the time is the slice operator since it always makes a&lt;br /&gt;
new list even if it is a slice of a whole list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Taking the slice &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; creates a new copy of the list. However it only copies the outer list.  Any sublist inside is still a references to the sublist in the original list.  Therefore, when the list contains lists, the inner lists have to be copied as well.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3421</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3421"/>
		<updated>2021-10-15T12:23:47Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Štai (HTML įkvėptas) programos pavyzdys (jei nori, nukopijuok šios programos kodą ir išbandyk):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&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;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
Kitas dalykas, kurį gali daryti su sąrašais - juos kopijuoti, pavyzdžiui: &lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
This probably looks surprising since a modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
resulted in &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; being changed as well.  What happened is that the&lt;br /&gt;
statement &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; makes &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a ''reference'' to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
This means that &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; can be thought of as another name for &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
Hence any modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; changes &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; as well.  However&lt;br /&gt;
some assignments don't create two names for one list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; is not a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; since the expression &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; creates a new list. Then the statement&lt;br /&gt;
&amp;lt;code&amp;gt;b = a * 2&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a reference to &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; rather than a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.  All assignment operations create a reference.&lt;br /&gt;
When you pass a list as an argument to a function you create a&lt;br /&gt;
reference as well.  Most of the time you don't have to worry about&lt;br /&gt;
creating references rather than copies.  However when you need to make&lt;br /&gt;
modifications to one list without changing another name of the list&lt;br /&gt;
you have to make sure that you have actually created a copy.&lt;br /&gt;
&lt;br /&gt;
There are several ways to make a copy of a list.  The simplest that&lt;br /&gt;
works most of the time is the slice operator since it always makes a&lt;br /&gt;
new list even if it is a slice of a whole list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Taking the slice &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; creates a new copy of the list. However it only copies the outer list.  Any sublist inside is still a references to the sublist in the original list.  Therefore, when the list contains lists, the inner lists have to be copied as well.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3397</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3397"/>
		<updated>2021-10-12T10:39:50Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Dar vienas dalykas, kurį turėtum žinoti apie sąrašo pjaustymą - neapibrėžtas indeksas. Jei &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra pirmojo elemento sąraše indeksas. Jei paskutinis &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; nenurodytas, tuomet numatytoji reikšmė yra paskutiniojo elemento sąraše indeksas.  Štai keli pavyzdžiai:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:2]'''&lt;br /&gt;
 [0, 'Jonas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-2:]'''&lt;br /&gt;
 ['Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:3]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[:-5]'''&lt;br /&gt;
 [0, 'Jonas', 2]&lt;br /&gt;
&lt;br /&gt;
Here is a (HTML inspired) program example (copy and paste in the poem definition if you want):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the output being:&lt;br /&gt;
&lt;br /&gt;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
The next feature of lists is copying them. If you try something simple like:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
This probably looks surprising since a modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
resulted in &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; being changed as well.  What happened is that the&lt;br /&gt;
statement &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; makes &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a ''reference'' to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
This means that &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; can be thought of as another name for &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
Hence any modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; changes &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; as well.  However&lt;br /&gt;
some assignments don't create two names for one list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; is not a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; since the expression &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; creates a new list. Then the statement&lt;br /&gt;
&amp;lt;code&amp;gt;b = a * 2&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a reference to &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; rather than a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.  All assignment operations create a reference.&lt;br /&gt;
When you pass a list as an argument to a function you create a&lt;br /&gt;
reference as well.  Most of the time you don't have to worry about&lt;br /&gt;
creating references rather than copies.  However when you need to make&lt;br /&gt;
modifications to one list without changing another name of the list&lt;br /&gt;
you have to make sure that you have actually created a copy.&lt;br /&gt;
&lt;br /&gt;
There are several ways to make a copy of a list.  The simplest that&lt;br /&gt;
works most of the time is the slice operator since it always makes a&lt;br /&gt;
new list even if it is a slice of a whole list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Taking the slice &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; creates a new copy of the list. However it only copies the outer list.  Any sublist inside is still a references to the sublist in the original list.  Therefore, when the list contains lists, the inner lists have to be copied as well.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3396</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3396"/>
		<updated>2021-10-12T09:25:24Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą ir gauti konkrečią jo dalį - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas „perpjauna“ sąrašą  ties &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Another trick with slicing is the unspecified index.  If the first index is not specified the beginning of the list is assumed.  If the last index is not specified the whole rest of the list is assumed.  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:2]'''&lt;br /&gt;
 [0, 'Fred']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-2:]'''&lt;br /&gt;
 ['Jack', 'Jill']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:3]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:-5]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
&lt;br /&gt;
Here is a (HTML inspired) program example (copy and paste in the poem definition if you want):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the output being:&lt;br /&gt;
&lt;br /&gt;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
The next feature of lists is copying them. If you try something simple like:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
This probably looks surprising since a modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
resulted in &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; being changed as well.  What happened is that the&lt;br /&gt;
statement &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; makes &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a ''reference'' to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
This means that &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; can be thought of as another name for &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
Hence any modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; changes &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; as well.  However&lt;br /&gt;
some assignments don't create two names for one list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; is not a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; since the expression &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; creates a new list. Then the statement&lt;br /&gt;
&amp;lt;code&amp;gt;b = a * 2&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a reference to &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; rather than a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.  All assignment operations create a reference.&lt;br /&gt;
When you pass a list as an argument to a function you create a&lt;br /&gt;
reference as well.  Most of the time you don't have to worry about&lt;br /&gt;
creating references rather than copies.  However when you need to make&lt;br /&gt;
modifications to one list without changing another name of the list&lt;br /&gt;
you have to make sure that you have actually created a copy.&lt;br /&gt;
&lt;br /&gt;
There are several ways to make a copy of a list.  The simplest that&lt;br /&gt;
works most of the time is the slice operator since it always makes a&lt;br /&gt;
new list even if it is a slice of a whole list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Taking the slice &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; creates a new copy of the list. However it only copies the outer list.  Any sublist inside is still a references to the sublist in the original list.  Therefore, when the list contains lists, the inner lists have to be copied as well.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3395</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3395"/>
		<updated>2021-10-12T09:14:28Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą į kelias dalis - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą(slicing) naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo(slicing) operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas(slicing) „perpjauna“ sąrašą  prieš &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir po &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Another trick with slicing is the unspecified index.  If the first index is not specified the beginning of the list is assumed.  If the last index is not specified the whole rest of the list is assumed.  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:2]'''&lt;br /&gt;
 [0, 'Fred']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-2:]'''&lt;br /&gt;
 ['Jack', 'Jill']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:3]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:-5]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
&lt;br /&gt;
Here is a (HTML inspired) program example (copy and paste in the poem definition if you want):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the output being:&lt;br /&gt;
&lt;br /&gt;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
The next feature of lists is copying them. If you try something simple like:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
This probably looks surprising since a modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
resulted in &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; being changed as well.  What happened is that the&lt;br /&gt;
statement &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; makes &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a ''reference'' to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
This means that &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; can be thought of as another name for &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
Hence any modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; changes &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; as well.  However&lt;br /&gt;
some assignments don't create two names for one list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; is not a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; since the expression &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; creates a new list. Then the statement&lt;br /&gt;
&amp;lt;code&amp;gt;b = a * 2&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a reference to &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; rather than a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.  All assignment operations create a reference.&lt;br /&gt;
When you pass a list as an argument to a function you create a&lt;br /&gt;
reference as well.  Most of the time you don't have to worry about&lt;br /&gt;
creating references rather than copies.  However when you need to make&lt;br /&gt;
modifications to one list without changing another name of the list&lt;br /&gt;
you have to make sure that you have actually created a copy.&lt;br /&gt;
&lt;br /&gt;
There are several ways to make a copy of a list.  The simplest that&lt;br /&gt;
works most of the time is the slice operator since it always makes a&lt;br /&gt;
new list even if it is a slice of a whole list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Taking the slice &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; creates a new copy of the list. However it only copies the outer list.  Any sublist inside is still a references to the sublist in the original list.  Therefore, when the list contains lists, the inner lists have to be copied as well.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3394</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3394"/>
		<updated>2021-10-12T09:13:47Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Kitas naudingas būdas, kaip gali padalinti sąrašą į kelias dalis - pjaustymas(slicing). Štai dar vienas pavyzdys, leidžiantis suprasti, kam jie gali būti naudojami:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai = [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, &amp;quot;Benas&amp;quot;, &amp;quot;Liepa&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[7]'''&lt;br /&gt;
 'Liepa'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[0:8]'''&lt;br /&gt;
 [0, 'Jonas', 2, 'S.P.A.M.', 'Kojinė', 42, 'Benas', 'Liepa']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[4:7]'''&lt;br /&gt;
 ['Kojinė', 42, 'Benas']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[1:5]'''&lt;br /&gt;
 ['Jonas', 2, 'S.P.A.M.', 'Kojinė']&lt;br /&gt;
&lt;br /&gt;
Pjaustymą(slicing) naudoju tada, kai noriu gauti konkrečią sąrašo dalį. Pjaustymo(slicing) operatorius yra aprašomas taip: &amp;lt;code&amp;gt;dalykai[pirmas_indeksas:paskutinis_indeksas]&amp;lt;/code&amp;gt;. Pjaustymas(slicing) „perpjauna“ sąrašą  prieš &amp;lt;code&amp;gt;pirmas_indeksas&amp;lt;/code&amp;gt; ir po &amp;lt;code&amp;gt;paskutinis_indeksas&amp;lt;/code&amp;gt; ir tuomet grąžina tą sarašo dalį, kuri yra tarp pirmo indekso ir paskutinio indekso rėžių. Gali naudoti abiejų tipų indeksavimą:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:-2]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4]'''&lt;br /&gt;
 'Kojinė'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''dalykai[-4:6]'''&lt;br /&gt;
 ['Kojinė', 42]&lt;br /&gt;
&lt;br /&gt;
Another trick with slicing is the unspecified index.  If the first index is not specified the beginning of the list is assumed.  If the last index is not specified the whole rest of the list is assumed.  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:2]'''&lt;br /&gt;
 [0, 'Fred']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-2:]'''&lt;br /&gt;
 ['Jack', 'Jill']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:3]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:-5]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
&lt;br /&gt;
Here is a (HTML inspired) program example (copy and paste in the poem definition if you want):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the output being:&lt;br /&gt;
&lt;br /&gt;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
The next feature of lists is copying them. If you try something simple like:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
This probably looks surprising since a modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
resulted in &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; being changed as well.  What happened is that the&lt;br /&gt;
statement &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; makes &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a ''reference'' to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
This means that &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; can be thought of as another name for &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
Hence any modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; changes &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; as well.  However&lt;br /&gt;
some assignments don't create two names for one list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; is not a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; since the expression &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; creates a new list. Then the statement&lt;br /&gt;
&amp;lt;code&amp;gt;b = a * 2&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a reference to &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; rather than a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.  All assignment operations create a reference.&lt;br /&gt;
When you pass a list as an argument to a function you create a&lt;br /&gt;
reference as well.  Most of the time you don't have to worry about&lt;br /&gt;
creating references rather than copies.  However when you need to make&lt;br /&gt;
modifications to one list without changing another name of the list&lt;br /&gt;
you have to make sure that you have actually created a copy.&lt;br /&gt;
&lt;br /&gt;
There are several ways to make a copy of a list.  The simplest that&lt;br /&gt;
works most of the time is the slice operator since it always makes a&lt;br /&gt;
new list even if it is a slice of a whole list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Taking the slice &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; creates a new copy of the list. However it only copies the outer list.  Any sublist inside is still a references to the sublist in the original list.  Therefore, when the list contains lists, the inner lists have to be copied as well.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3393</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3393"/>
		<updated>2021-10-12T08:51:09Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Another useful way to get into parts of lists is using slicing.  Here is another example to give you an idea what they can be used for:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things = [0, 'Fred', 2, 'S.P.A.M.', 'Stocking', 42, &amp;quot;Jack&amp;quot;, &amp;quot;Jill&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[7]'''&lt;br /&gt;
 'Jill'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[0:8]'''&lt;br /&gt;
 [0, 'Fred', 2, 'S.P.A.M.', 'Stocking', 42, 'Jack', 'Jill']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[4:7]'''&lt;br /&gt;
 ['Stocking', 42, 'Jack']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[1:5]'''&lt;br /&gt;
 ['Fred', 2, 'S.P.A.M.', 'Stocking']&lt;br /&gt;
&lt;br /&gt;
Slicing is used to return part of a list.  The slicing operator is in the form &amp;lt;code&amp;gt;things[first_index:last_index]&amp;lt;/code&amp;gt;.  Slicing cuts the list before the &amp;lt;code&amp;gt;first_index&amp;lt;/code&amp;gt; and before the &amp;lt;code&amp;gt;last_index&amp;lt;/code&amp;gt; and returns the parts in between.  You can use both types of indexing:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-4:-2]'''&lt;br /&gt;
 ['Stocking', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-4]'''&lt;br /&gt;
 'Stocking'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-4:6]'''&lt;br /&gt;
 ['Stocking', 42]&lt;br /&gt;
&lt;br /&gt;
Another trick with slicing is the unspecified index.  If the first index is not specified the beginning of the list is assumed.  If the last index is not specified the whole rest of the list is assumed.  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:2]'''&lt;br /&gt;
 [0, 'Fred']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-2:]'''&lt;br /&gt;
 ['Jack', 'Jill']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:3]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:-5]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
&lt;br /&gt;
Here is a (HTML inspired) program example (copy and paste in the poem definition if you want):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the output being:&lt;br /&gt;
&lt;br /&gt;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
The next feature of lists is copying them. If you try something simple like:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
This probably looks surprising since a modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
resulted in &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; being changed as well.  What happened is that the&lt;br /&gt;
statement &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; makes &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a ''reference'' to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
This means that &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; can be thought of as another name for &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
Hence any modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; changes &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; as well.  However&lt;br /&gt;
some assignments don't create two names for one list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; is not a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; since the expression &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; creates a new list. Then the statement&lt;br /&gt;
&amp;lt;code&amp;gt;b = a * 2&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a reference to &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; rather than a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.  All assignment operations create a reference.&lt;br /&gt;
When you pass a list as an argument to a function you create a&lt;br /&gt;
reference as well.  Most of the time you don't have to worry about&lt;br /&gt;
creating references rather than copies.  However when you need to make&lt;br /&gt;
modifications to one list without changing another name of the list&lt;br /&gt;
you have to make sure that you have actually created a copy.&lt;br /&gt;
&lt;br /&gt;
There are several ways to make a copy of a list.  The simplest that&lt;br /&gt;
works most of the time is the slice operator since it always makes a&lt;br /&gt;
new list even if it is a slice of a whole list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Taking the slice &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; creates a new copy of the list. However it only copies the outer list.  Any sublist inside is still a references to the sublist in the original list.  Therefore, when the list contains lists, the inner lists have to be copied as well.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
	<entry>
		<id>https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3392</id>
		<title>Python Vadovėlis/Daugiau apie sąrašus</title>
		<link rel="alternate" type="text/html" href="https://wiki.angis.net/index.php?title=Python_Vadov%C4%97lis/Daugiau_apie_s%C4%85ra%C5%A1us&amp;diff=3392"/>
		<updated>2021-10-12T08:46:53Z</updated>

		<summary type="html">&lt;p&gt;LauraK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apie sąrašus ir jų panaudojimą jau girdėjai praėjusiame skyriuje. Dabar, kai turi daugiau žinių, aš išsamiau aprašysiu sąrašus. Iš pradžių parodysiu, kaip dirbti su sąrašo elementai ir tuomet papasakosiu, kaip juos galima kopijuoti.  &lt;br /&gt;
&lt;br /&gt;
Parašiau pavyzdį, kuriame naudoju indeksus, kad pasiimčiau vieną konkretų elementą iš sąrašo:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai = ['nulis', 'vienas', 'du', 'trys', 'keturi', 'penki']'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[0]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[4]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[5]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
&lt;br /&gt;
Visi šie pavyzdžiai tau turėtų atrodyti pažįstami. Jei nori gauti pirmąjį sąrašo elementą, tu žiūri į indeksą 0, jei nori antrojo, tuomet imi indeksą 1 ir taip toliau judi per visą sąrašą. Tačiau ką daryti, jei nori paskutinio sąrašo elemento? Vienas iš būdų galėtų būti funkcijos &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; panaudojimas: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 1]&amp;lt;/code&amp;gt;. Funkcija &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; visada grąžina paskutinį indeksą + 1. Šiuo būdu gali eiti per sąrašą iš kitos pusės, pavyzdžiui: antrasis sąrašo elementas nuo galo yra gaunamas taip: &amp;lt;code&amp;gt;skaičiai[len(skaičiai) - 2]&amp;lt;/code&amp;gt;. Kaip jau minėjau, yra dar vienas lengvesnis būdas, kaip galėtum pasiekti tą patį rezultatą. Python'e paskutinis elementas sąraše visada turi indeksą -1, antrojo elemento nuo sąrašo pabaigos indeksas yra -2 ir taip toliau. Štai daugiau pavyzdžių:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[len(skaičiai) - 2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-1]'''&lt;br /&gt;
 'penki'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-2]'''&lt;br /&gt;
 'keturi'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''skaičiai[-6]'''&lt;br /&gt;
 'nulis'&lt;br /&gt;
&lt;br /&gt;
Taigi, bet kuris sąrašo elementas gali būti indeksuojamas dviem būdais: iš priekio ir iš galo.&lt;br /&gt;
&lt;br /&gt;
Another useful way to get into parts of lists is using slicing.  Here is another example to give you an idea what they can be used for:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things = [0, 'Fred', 2, 'S.P.A.M.', 'Stocking', 42, &amp;quot;Jack&amp;quot;, &amp;quot;Jill&amp;quot;]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[0]'''&lt;br /&gt;
 0&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[7]'''&lt;br /&gt;
 'Jill'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[0:8]'''&lt;br /&gt;
 [0, 'Fred', 2, 'S.P.A.M.', 'Stocking', 42, 'Jack', 'Jill']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[2:4]'''&lt;br /&gt;
 [2, 'S.P.A.M.']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[4:7]'''&lt;br /&gt;
 ['Stocking', 42, 'Jack']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[1:5]'''&lt;br /&gt;
 ['Fred', 2, 'S.P.A.M.', 'Stocking']&lt;br /&gt;
&lt;br /&gt;
Slicing is used to return part of a list.  The slicing operator is in the form &amp;lt;code&amp;gt;things[first_index:last_index]&amp;lt;/code&amp;gt;.  Slicing cuts the list before the &amp;lt;code&amp;gt;first_index&amp;lt;/code&amp;gt; and before the &amp;lt;code&amp;gt;last_index&amp;lt;/code&amp;gt; and returns the parts in between.  You can use both types of indexing:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-4:-2]'''&lt;br /&gt;
 ['Stocking', 42]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-4]'''&lt;br /&gt;
 'Stocking'&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-4:6]'''&lt;br /&gt;
 ['Stocking', 42]&lt;br /&gt;
&lt;br /&gt;
Another trick with slicing is the unspecified index.  If the first index is not specified the beginning of the list is assumed.  If the last index is not specified the whole rest of the list is assumed.  Here are some examples:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:2]'''&lt;br /&gt;
 [0, 'Fred']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[-2:]'''&lt;br /&gt;
 ['Jack', 'Jill']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:3]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''things[:-5]'''&lt;br /&gt;
 [0, 'Fred', 2]&lt;br /&gt;
&lt;br /&gt;
Here is a (HTML inspired) program example (copy and paste in the poem definition if you want):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
poem = [&amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;went&amp;quot;, &amp;quot;up&amp;quot;, &amp;quot;the&amp;quot;,&lt;br /&gt;
        &amp;quot;hill&amp;quot;, &amp;quot;to&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;fetch&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;pail&amp;quot;, &amp;quot;of&amp;quot;, &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;water.&amp;quot;, &amp;quot;Jack&amp;quot;, &amp;quot;fell&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;broke&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;his&amp;quot;, &amp;quot;crown&amp;quot;, &amp;quot;and&amp;quot;, &amp;quot;&amp;lt;B&amp;gt;&amp;quot;, &amp;quot;Jill&amp;quot;, &amp;quot;came&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;, &amp;quot;tumbling&amp;quot;, &amp;quot;after&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
def get_bold(text):&lt;br /&gt;
    true = 1&lt;br /&gt;
    false = 0&lt;br /&gt;
    ## is_bold tells whether or not we are currently looking at &lt;br /&gt;
    ## a bold section of text.&lt;br /&gt;
    is_bold = false&lt;br /&gt;
    ## start_block is the index of the start of either an unbolded &lt;br /&gt;
    ## segment of text or a bolded segment.&lt;br /&gt;
    start_block = 0&lt;br /&gt;
    for index in range(len(text)):&lt;br /&gt;
        ## Handle a starting of bold text&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;B&amp;gt;&amp;quot;:&lt;br /&gt;
            if is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Bold&amp;quot;)&lt;br /&gt;
            ## print &amp;quot;Not Bold:&amp;quot;, text[start_block:index]&lt;br /&gt;
            is_bold = true&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
        ## Handle end of bold text&lt;br /&gt;
        ## Remember that the last number in a slice is the index &lt;br /&gt;
        ## after the last index used.&lt;br /&gt;
        if text[index] == &amp;quot;&amp;lt;/B&amp;gt;&amp;quot;:&lt;br /&gt;
            if not is_bold:&lt;br /&gt;
                print(&amp;quot;Error: Extra Close Bold&amp;quot;)&lt;br /&gt;
            print(&amp;quot;Bold [&amp;quot;, start_block, &amp;quot;:&amp;quot;, index, &amp;quot;]&amp;quot;, text[start_block:index])&lt;br /&gt;
            is_bold = false&lt;br /&gt;
            start_block = index + 1&lt;br /&gt;
&lt;br /&gt;
get_bold(poem)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the output being:&lt;br /&gt;
&lt;br /&gt;
 Bold [ 1 : 4 ] ['Jack', 'and', 'Jill']&lt;br /&gt;
 Bold [ 11 : 15 ] ['fetch', 'a', 'pail', 'of']&lt;br /&gt;
 Bold [ 20 : 23 ] ['down', 'and', 'broke']&lt;br /&gt;
 Bold [ 28 : 30 ] ['Jill', 'came']&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; function takes in a list that is broken into words and tokens. The tokens that it looks for are &amp;lt;code&amp;gt;&amp;amp;lt;B&amp;amp;gt;&amp;lt;/code&amp;gt; which starts the bold text and &amp;lt;code&amp;gt;&amp;amp;lt;/B&amp;amp;gt;&amp;lt;/code&amp;gt; which ends bold text. The function &amp;lt;code&amp;gt;get_bold()&amp;lt;/code&amp;gt; goes through and searches for the start and end tokens.&lt;br /&gt;
&lt;br /&gt;
The next feature of lists is copying them. If you try something simple like:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
This probably looks surprising since a modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;&lt;br /&gt;
resulted in &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; being changed as well.  What happened is that the&lt;br /&gt;
statement &amp;lt;code&amp;gt;b = a&amp;lt;/code&amp;gt; makes &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a ''reference'' to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
This means that &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; can be thought of as another name for &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.&lt;br /&gt;
Hence any modification to &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; changes &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; as well.  However&lt;br /&gt;
some assignments don't create two names for one list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a * 2'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 2, 3, 1, 2, 3]&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; is not a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; since the expression &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; creates a new list. Then the statement&lt;br /&gt;
&amp;lt;code&amp;gt;b = a * 2&amp;lt;/code&amp;gt; gives &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; a reference to &amp;lt;code&amp;gt;a * 2&amp;lt;/code&amp;gt; rather than a reference to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;.  All assignment operations create a reference.&lt;br /&gt;
When you pass a list as an argument to a function you create a&lt;br /&gt;
reference as well.  Most of the time you don't have to worry about&lt;br /&gt;
creating references rather than copies.  However when you need to make&lt;br /&gt;
modifications to one list without changing another name of the list&lt;br /&gt;
you have to make sure that you have actually created a copy.&lt;br /&gt;
&lt;br /&gt;
There are several ways to make a copy of a list.  The simplest that&lt;br /&gt;
works most of the time is the slice operator since it always makes a&lt;br /&gt;
new list even if it is a slice of a whole list:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [1, 2, 3]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [1, 2, 3]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [1, 10, 3]&lt;br /&gt;
&lt;br /&gt;
Taking the slice &amp;lt;code&amp;gt;[:]&amp;lt;/code&amp;gt; creates a new copy of the list. However it only copies the outer list.  Any sublist inside is still a references to the sublist in the original list.  Therefore, when the list contains lists, the inner lists have to be copied as well.  You could do that manually but Python already contains a module to do it.  You use the &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; function of the &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''import copy'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''a = [[1, 2, 3], [4, 5, 6]]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b = a[:]'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c = copy.deepcopy(a)'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''b[0][1] = 10'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''c[1][1] = 12'''&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(a)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(b)'''&lt;br /&gt;
 [[1, 10, 3], [4, 5, 6]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; '''print(c)'''&lt;br /&gt;
 [[1, 2, 3], [4, 12, 6]]&lt;br /&gt;
&lt;br /&gt;
First of all notice that &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; is a list of lists.  Then notice&lt;br /&gt;
that when &amp;lt;code&amp;gt;b[0][1] = 10&amp;lt;/code&amp;gt; is run both &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are changed, but &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; is not.  This happens because the inner arrays are still references when the slice operator is used.  However with &amp;lt;code&amp;gt;deepcopy&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt; was fully copied.&lt;br /&gt;
&lt;br /&gt;
So, should I worry about references every time I use a function or&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;?  The good news is that you only have to worry about&lt;br /&gt;
references when using dictionaries and lists.  Numbers and strings&lt;br /&gt;
create references when assigned but every operation on numbers and&lt;br /&gt;
strings that modifies them creates a new copy so you can never modify&lt;br /&gt;
them unexpectedly.  You do have to think about references when you are&lt;br /&gt;
modifying a list or a dictionary.&lt;br /&gt;
&lt;br /&gt;
By now you are probably wondering why are references used at all?  The&lt;br /&gt;
basic reason is speed.  It is much faster to make a reference to a&lt;br /&gt;
thousand element list than to copy all the elements.  The other reason&lt;br /&gt;
is that it allows you to have a function to modify the inputed list&lt;br /&gt;
or dictionary.  Just remember about references if you ever have some&lt;br /&gt;
weird problem with data being changed when it shouldn't be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  On Sun, Sep 09, 2001 at 02:46:06PM +0100, Hamish Lawson wrote: --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Hello Josh --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I think it's great that you have undertaken to write a non-programmer's --&amp;gt;&lt;br /&gt;
&amp;lt;!--  tutorial on Python. However may I suggest that a different approach to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  the discussion of variables and references may make things easier for --&amp;gt;&lt;br /&gt;
&amp;lt;!--  both you and the reader, and lead to less potential confusion for the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  novice when they explore Python further? --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Programming introductions that use a language like C or Pascal as the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  medium often discuss variables in terms of boxes that store data. But --&amp;gt;&lt;br /&gt;
&amp;lt;!--  for a language like Python, I think this approach ends up making the --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whole subject of variables and references more complicated than it need --&amp;gt;&lt;br /&gt;
&amp;lt;!--  be and means that the reader has a lot to unlearn later. --&amp;gt;&lt;br /&gt;
&amp;lt;!--  --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Saying that &amp;quot;a = []&amp;quot; stores an empty list in 'a' and that &amp;quot;b = a&amp;quot; makes --&amp;gt;&lt;br /&gt;
&amp;lt;!--  'b' a reference to 'a' makes it appear that assignment is --&amp;gt;&lt;br /&gt;
&amp;lt;!--  context-dependent when it isn't really. Things get even trickier when --&amp;gt;&lt;br /&gt;
&amp;lt;!--  you have statements like &amp;quot;b = f()&amp;quot;. Instead a more coherent approach --&amp;gt;&lt;br /&gt;
&amp;lt;!--  might be to say that assignment to a variable stores a reference to --&amp;gt;&lt;br /&gt;
&amp;lt;!--  some object. The difference between &amp;quot;a = []&amp;quot; and &amp;quot;b = a&amp;quot; then lies in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  whether it is a newly created object that you are storing a reference --&amp;gt;&lt;br /&gt;
&amp;lt;!--  to (as produced by '[]') or an existing object (as produced by 'a'), --&amp;gt;&lt;br /&gt;
&amp;lt;!--  *not* in whether or not a reference gets stored in the variable - it --&amp;gt;&lt;br /&gt;
&amp;lt;!--  always does. I believe this approach leads to much less confusion --&amp;gt;&lt;br /&gt;
&amp;lt;!--  overall and less need for special explanations. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Fredrik Lundh has a good explanation of objects and references in --&amp;gt;&lt;br /&gt;
&amp;lt;!--  Python at http://www.effbot.org/guides/python-objects.htm. --&amp;gt;&lt;br /&gt;
&amp;lt;!--   --&amp;gt;&lt;br /&gt;
&amp;lt;!--  I hope you have found this useful. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Using Modules|next=Revenge of the Strings}}&lt;br /&gt;
{{BookCat}}&lt;/div&gt;</summary>
		<author><name>LauraK</name></author>
	</entry>
</feed>