Knyga/Importuotos bibliotekos ir vėžlys: Skirtumas tarp puslapio versijų

Iš Pitonas.
(Naujas puslapis: {{navigation |previous=Įvadas į objektinį programavimą Python 3 |next=Pažangios funkcijos}} Š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 žinai apie kalbą. == math == :Matematikos biblioteka aprėpia daug na...)
 
Nėra keitimo santraukos
 
1 eilutė: 1 eilutė:
{{navigation |previous=Įvadas į objektinį programavimą Python 3 |next=Pažangios funkcijos}}
{{navigation |previous=Įvadas į objektinį programavimą Python 3 |next=Pažangios funkcijos}}


Š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 žinai apie kalbą.
=== Ką išmoksi šiame skyriuje? ===
* Kas yra Python modulis ir kam jis reikalingas
* Kaip importuoti standartinius modulius (<code>math</code>, <code>time</code>, <code>random</code>)
* Kaip naudoti <code>import</code> ir <code>from ... import ...</code>
* Kaip panaudoti <code>math</code> funkcijas: <code>ceil()</code>, <code>floor()</code>, <code>sqrt()</code>, <code>sin()</code>, <code>cos()</code>, <code>tan()</code> ir kt.
* Kaip pasiekti matematines konstantas (<code>math.pi</code>, <code>math.e</code>)
* Kaip patikrinti, ar skaičius yra baigtinis, begalinis arba NaN
* Kaip naudoti <code>turtle</code> modulį piešimams ir animacijoms
* Kaip derinti <code>turtle</code> su ciklais ir funkcijomis


== math ==
----


:Matematikos biblioteka aprėpia daug naudingų ir programoms reikalingų funkcijų, kurios atlieka įvarias matematines operacijas (kai neužtenka Python'o operatorių).
=== Modulių naudojimas ===


:Šiame skyriuje daroma prielaida, kad turi matematikos žinias iki trigonometrijos kurso imtinai.
Kartais programuojant prireikia funkcijų, kurių pačiam rašyti nereikia – jos jau būna sukurtos ir sudėtos į specialius „paketus“ arba '''modulius'''.


Python turi labai daug tokių paruoštų modulių – tai vadinama '''standartine biblioteka'''. Joje galima rasti visko: matematikos funkcijų, darbui su laiku, failais, tinklu ir net animacijomis. 
Kad galėtum naudotis moduliu, reikia jį '''importuoti'''. Tai daroma su komanda <code>import</code> arba <code>from ... import ...</code>.
---
=== Modulis <code>math</code> ===
Matematikos modulis <code>math</code> leidžia atlikti įvairias skaičiavimų operacijas. 
Šiame sąraše išvardintos visos matematikos bibliotekos funkcijos:
Šiame sąraše išvardintos visos matematikos bibliotekos funkcijos:
*math.ceil (Suapvalina skaičių iki artimiausio skaičiaus po kablelio)
*math.ceil (Suapvalina skaičių iki artimiausio skaičiaus po kablelio)
42 eilutė: 59 eilutė:
*math.e (Grąžina e reikšmę)
*math.e (Grąžina e reikšmę)


:Žinoma, neapimsime visų šių funkcijų, bet padengsime didelę jų dalį.
Žinoma, neapimsime visų šių funkcijų, bet padengsime didelę jų dalį.
 
<syntaxhighlight lang="python">
import math
 
print(math.sqrt(16))  # Kvadratinė šaknis iš 16 → 4.0
print(math.ceil(2.3))  # Suapvalina į didesnę pusę → 3
print(math.floor(2.9)) # Suapvalina žemyn → 2
print(math.sin(math.pi / 2))  # Sinus(π/2) = 1.0
print(math.cos(0))            # Kosinus(0) = 1.0
print(math.tan(math.pi / 4))  # Tangentas(π/4) = 1.0
print(math.log(8, 2))          # Logaritmas: log₂(8) = 3.0
</syntaxhighlight>
 
Be funkcijų, <code>math</code> turi ir keletą '''konstantų''': 
* <code>math.pi</code> – skaičius π (3.14159...) 
* <code>math.e</code> – natūrinio logaritmo pagrindas (2.71828...) 
 
💡 `math.fsum()` skirta tikslesniems slankiojo kablelio sumavimams nei įprastas <code>sum()</code>. Tai naudinga, kai sudedama daug trupmeninių skaičių.
 
---
 
=== Modulis <code>time</code> ===
 
<code>time</code> modulis leidžia dirbti su laiku ir datomis. 
 
Pavyzdys – dabartinio laiko išvedimas:
 
<syntaxhighlight lang="python">
from time import time, ctime
 
while True:
    print(ctime(time()))  # Spausdina dabartinį laiką
    # Sustabdyti galima paspaudus Ctrl + C
</syntaxhighlight>
 
---
 
=== Modulis <code>random</code> ===
 
Kartais programose reikia '''atsitiktinių skaičių'''. Tam naudojamas modulis <code>random</code>. 
 
<syntaxhighlight lang="python">
import random
 
print(random.randint(0, 99))  # Atsitiktinis skaičius nuo 0 iki 99
</syntaxhighlight>
 
💡 Funkcija <code>randint(a, b)</code> grąžina sveiką skaičių iš intervalo '''[a; b]''' (abi ribos įskaitomos). 
 
---
 
=== Savo moduliai ===
 
Modulis yra tiesiog '''.py failas''', kurio funkcijas galima panaudoti kitame faile. 
 
Pavyzdžiui, jei turi failą <code>skaičiavimai.py</code>:
 
<syntaxhighlight lang="python">
def padauginti(a, b):
    return a * b
</syntaxhighlight>
 
Tuomet kitame faile gali parašyti:
 
<syntaxhighlight lang="python">
import skaičiavimai
 
print(skaičiavimai.padauginti(3, 4))  # 12
</syntaxhighlight>
 
💡 Jei tavo failo pavadinimas bus toks pat kaip standartinio modulio (pvz., <code>calendar.py</code>), Python gali supainioti ir importuoti ne tą failą.
 
---
 
=== <code>if __name__ == "__main__":</code> ===
 
Kai Python failas paleidžiamas '''tiesiogiai''', kintamojo <code>__name__</code> reikšmė būna <code>"__main__"</code>. 
Kai failas importuojamas kaip modulis – reikšmė bus tokia, kaip failo pavadinimas. 
 
Todėl dažnai naudojame:
 
<syntaxhighlight lang="python">
def funkcija():
    print("Labas!")
 
if __name__ == "__main__":
    funkcija()
</syntaxhighlight>
 
Taip užtikriname, kad funkcija pasileis '''tik tada, kai paleidžiame šį failą''', bet ne tada, kai jį importuojame kitur.
 
---
 
=== Modulis <code>turtle</code> ===
 
<code>turtle</code> (liet. ''vėžlys'') yra linksma Python biblioteka piešimui. 
Ji leidžia kurti grafinius piešinius ekrane – „vėžliukas“ juda, o paskui jį lieka spalvota linija. 
 
Pirmasis pavyzdys – ''paprastas kvadratas'':
 
<syntaxhighlight lang="python">
import turtle
 
t = turtle.Turtle()
 
for i in range(4):
    t.forward(100)  # Einame 100 žingsnių į priekį
    t.right(90)      # Pasukame 90 laipsnių į dešinę
 
turtle.done()
</syntaxhighlight>
 
💡 Pastebėk, kad naudojame <code>forward()</code> ir <code>right()</code> – tai paprastos funkcijos, kurios valdo „vėžliuko“ judėjimą.
 
Antras pavyzdys – ''spalvotas raštas'':
 
<syntaxhighlight lang="python">
import turtle
 
t = turtle.Turtle()
colors = ["red", "green", "blue", "orange", "purple"]
 
for i in range(36):
    t.color(colors[i % len(colors)])  # Pasirenkame spalvą iš sąrašo
    t.circle(100)                    # Nupiešiame apskritimą
    t.right(10)                      # Šiek tiek pasukame
 
turtle.done()
</syntaxhighlight>
 
💡 Naudodamas sąrašus ir ciklus, gali kurti įdomius ornamentus ar net animacijas.
 
---
 
=== Pratimai ===
# Parašyk programą, kuri nupiešia '''trikampį''' su vėžliuku. 
# Sukurk funkciją <code>zvaigzde(dydis)</code>, kuri nupiešia žvaigždę. 
# Sukurk programą, kuri nupiešia '''saulutę''': vėžliukas apsisuka ratu, o kiekviename žingsnyje nubrėžia spindulį. 
# ''Papildoma užduotis'': pabandyk nupiešti savo inicialus (pvz., „AN“) naudodamas <code>turtle</code>.
 
{| class="mw-collapsible mw-collapsed wikitable"
! colspan="2" | Sprendimas 1 &nbsp;
|-
|
<syntaxhighlight lang="python">
import turtle
 
t = turtle.Turtle()
 
for i in range(3):
    t.forward(150)
    t.left(120)
 
turtle.done()
</syntaxhighlight>
|-
|}
 
{| class="mw-collapsible mw-collapsed wikitable"
! colspan="2" | Sprendimas 2 &nbsp;
|-
|
<syntaxhighlight lang="python">
import turtle


Pradėkime nuo dviejų konstantų matematikos bibliotekoje. <code>math.pi</code> yra matematinė konstanta „π“, tavo kompiuteryje pasiekiamu tikslumu. <code>math.e</code> yra matematinė konstanta „e“, tavo kompiuteryje pasiekiamu tikslumu.
def zvaigzde(dydis):
Štai yra abiejų konstantų, įvestų interaktyviuoju režimu Python'o terminale, pavyzdys:
    t = turtle.Turtle()
>>> import math
    for i in range(5):
>>> math.e
        t.forward(dydis)
<span style="color:blue;">2.718281828459045</span>
        t.right(144) # kampas žvaigždei nupiešti
>>> math.pi
  <span style="color:blue;">3.141592653589793</span>


Š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:
zvaigzde(200)
>>> conste = math.e
turtle.done()
>>> (conste + 5 / 2) * 2.21
</syntaxhighlight>
<span style="color:blue;">11.532402840894488</span>
|-
>>> constpi = math.pi
|}
>>> (((7 /2.1) % constpi) * 2)
<span style="color:blue;">0.38348135948707984</span>
>>>


Dabar pažvelk į funkcijas: pradėk nuo sąrašo viršaus ir judėk žemyn (kai kurios funkcijos bus praleistos).
{| class="mw-collapsible mw-collapsed wikitable"
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.
! colspan="2" | Sprendimas 3 &nbsp;
|-
|
<syntaxhighlight lang="python">
import turtle


Žemiau pateikiamas kiekvienos <code>math</code> modulio funkcijos pavyzdys ir kaip ji naudojama (išskyrus anksčiau nurodytas funkcijas, kurių nereikia paaiškinti)
t = turtle.Turtle()
t.speed(0)  # maksimalus greitis
for i in range(36):
    t.forward(100)
    t.backward(100)
    t.right(10)


>>> import math
turtle.done()
>>> math.ceil(4.5) ** Suapvalina skaičių iki artimiausio skaičiaus po kablelio **
</syntaxhighlight>
5
|-
>>> math.ceil(4.1)
|}
<span style="color:blue;">5</span>
>>> math.copysign(4, -.4)  ** Grąžina absoliučią reikšmę <code>x</code> su ženklu, kurį turi skaičius <code>y</code>. <code>(x, y)</code>
<span style="color:blue;">-4.0</span>
>>> math.copysign(-4, 4)
<span style="color:blue;">4.0</span>
>>> math.fabs(-44)  ** Grąžina absoliučią skaičiaus reikšmę, kaip slankiojo kablelio reikšmę **
<span style="color:blue;">44.0</span>
>>> math.factorial(4)  **  Grąžina skaičiaus faktorialą **
<span style="color:blue;">24</span>
>>> math.floor(4.3) ** Grąžina didžiausią sveikąjį skaičių, mažesnį arba lygų duotajam skaičiui **
<span style="color:blue;">4</span>
>>> math.floor(4.99999)
<span style="color:blue;">4</span>
>>> math.fsum([.1,.2,5,45.2,-.054,.4]) **  Grąžina visų skliausteliuose esančių skaičių sumą. Funkcija ne visada tiksli **
<span style="color:blue;">50.846000000000004</span>
>>> math.isfinite(3) ** Grąžina <code>True</code>, jei reikšmė nėra begalinė ar NaN. Kitu atveju, grąžina <code>False</code>. **
<span style="color:blue;">True</span>


== turtle ==
<!-- Pastaba: sprendimo 4 (inicialai) paliekame kūrybai – kiekvieno vardas skirtingas :) -->
''turtle'' (iš anglų kalbos verčiant, tai būtų "vėžlys") yra iš anksto įdiegta "Python" biblioteka, leidžianti tau kurti paveikslėlius ir figūras naudojant virtualią drobę. Ekrane esantis rašiklis, kurį naudoji piešimui, vadinamas vėžliuku, nuo kurio ir kilo bibliotekos pavadinimas. Trumpai tariant, "Python" vėžlio biblioteka padeda naujiems programuotojams smagiu ir interaktyviu būdu pajusti, koks yra programavimas naudojant "Python".


Su "Python" vėžlių biblioteka gali braižyti ir kurti įvairias figūras ir vaizdus. Štai pavyzdys, kokius piešinius gali kurti naudodami vėžlį:
---


{{navigation |previous=Įvadas į objektinį programavimą Python 3 |next=Pažangios funkcijos}}
{{navigation |previous=Įvadas į objektinį programavimą Python 3 |next=Pažangios funkcijos}}
[[Category:Knyga]]
[[Category:Knyga]]

Dabartinė 16:49, 15 rugsėjo 2025 versija


Ką išmoksi šiame skyriuje?

  • Kas yra Python modulis ir kam jis reikalingas
  • Kaip importuoti standartinius modulius (math, time, random)
  • Kaip naudoti import ir from ... import ...
  • Kaip panaudoti math funkcijas: ceil(), floor(), sqrt(), sin(), cos(), tan() ir kt.
  • Kaip pasiekti matematines konstantas (math.pi, math.e)
  • Kaip patikrinti, ar skaičius yra baigtinis, begalinis arba NaN
  • Kaip naudoti turtle modulį piešimams ir animacijoms
  • Kaip derinti turtle su ciklais ir funkcijomis

Modulių naudojimas

Kartais programuojant prireikia funkcijų, kurių pačiam rašyti nereikia – jos jau būna sukurtos ir sudėtos į specialius „paketus“ arba modulius.

Python turi labai daug tokių paruoštų modulių – tai vadinama standartine biblioteka. Joje galima rasti visko: matematikos funkcijų, darbui su laiku, failais, tinklu ir net animacijomis.

Kad galėtum naudotis moduliu, reikia jį importuoti. Tai daroma su komanda import arba from ... import ....

---

Modulis math

Matematikos modulis math leidžia atlikti įvairias skaičiavimų operacijas. Šiame sąraše išvardintos visos matematikos bibliotekos funkcijos:

  • math.ceil (Suapvalina skaičių iki artimiausio skaičiaus po kablelio)
  • math.copysign (Grąžina absoliučią reikšmę x su ženklu, kurį turi skaičius y. (x, y))
  • math.fabs (Grąžina absoliučią skaičiaus reikšmę, kaip slankiojo kablelio reikšmę)
  • math.factorial (Grąžina skaičiaus faktorialą)
  • math.floor (Grąžina didžiausią sveikąjį skaičių, mažesnį arba lygų duotajam skaičiui)
  • math.fmod (Nėra pati idealiausia funkcija su kuria galima pasiekti nurodytą tikslą. Šiame skyriuje nebus detaliau paaiškinta.)
  • math.frexp (Už šios pamokos ribų. Šiame skyriuje nebus detaliau paaiškinta.)
  • math.fsum (Grąžina visų skliausteliuose esančių skaičių sumą)
  • math.isfinite (Patikrina ar skaičius yra baigtinis)
  • math.isinf (Patikrina ar skaičius yra begalinis ar ne)
  • math.isnan (Patikrina, ar reikšmė yra NaN (ne skaičius), ar ne)
  • math.modf (Už šios pamokos srities ribų. Šiame skyriuje nebus detaliau paaiškinta.)
  • math.trunc (Už šios pamokos srities ribų. Šiame skyriuje nebus detaliau paaiškinta.)
  • math.exp (Apskaičiuoja eksponentinę funkciją e^x, kur e yra matematinė konstanta)
  • math.expm1 (Grąžina E^x - 1)
  • math.log (Grąžina natūralųjį skaičiaus logaritmą)
  • math.log1p (Grąžina log(1+skaičius))
  • math.log10 (Grąžina skaičiaus 10 bazinį logaritmą)
  • math.pow (Grąžina x reikšmę, pakeltą laipsniu y)
  • math.sqrt (Grąžina skaičiaus kvadratinę šaknį)
  • math.acos (Grąžina arccos(x))
  • math.asin (Grąžina arcsin(x))
  • math.atan (Grąžina arctan(x))
  • math.cos (Grąžina reikšmės kosinusą)
  • math.hypot (Grąžina Euklido normą)
  • math.sin (Grąžina reikšmės sinusą)
  • math.tan (Grąžina reikšmės tangentą)
  • math.degrees (Paverčia radianus į laipsnius)
  • math.radians (Paverčia laipsnius į radianus)
  • math.pi (Grąžina π reikšmę)
  • math.e (Grąžina e reikšmę)

Žinoma, neapimsime visų šių funkcijų, bet padengsime didelę jų dalį.

import math

print(math.sqrt(16))   # Kvadratinė šaknis iš 16 → 4.0
print(math.ceil(2.3))  # Suapvalina į didesnę pusę → 3
print(math.floor(2.9)) # Suapvalina žemyn → 2
print(math.sin(math.pi / 2))  # Sinus(π/2) = 1.0
print(math.cos(0))             # Kosinus(0) = 1.0
print(math.tan(math.pi / 4))   # Tangentas(π/4) = 1.0
print(math.log(8, 2))          # Logaritmas: log₂(8) = 3.0

Be funkcijų, math turi ir keletą konstantų:

  • math.pi – skaičius π (3.14159...)
  • math.e – natūrinio logaritmo pagrindas (2.71828...)
💡 `math.fsum()` skirta tikslesniems slankiojo kablelio sumavimams nei įprastas sum(). Tai naudinga, kai sudedama daug trupmeninių skaičių.

---

Modulis time

time modulis leidžia dirbti su laiku ir datomis.

Pavyzdys – dabartinio laiko išvedimas:

from time import time, ctime

while True:
    print(ctime(time()))   # Spausdina dabartinį laiką
    # Sustabdyti galima paspaudus Ctrl + C

---

Modulis random

Kartais programose reikia atsitiktinių skaičių. Tam naudojamas modulis random.

import random

print(random.randint(0, 99))  # Atsitiktinis skaičius nuo 0 iki 99

💡 Funkcija randint(a, b) grąžina sveiką skaičių iš intervalo [a; b] (abi ribos įskaitomos).

---

Savo moduliai

Modulis yra tiesiog .py failas, kurio funkcijas galima panaudoti kitame faile.

Pavyzdžiui, jei turi failą skaičiavimai.py:

def padauginti(a, b):
    return a * b

Tuomet kitame faile gali parašyti:

import skaičiavimai

print(skaičiavimai.padauginti(3, 4))  # 12

💡 Jei tavo failo pavadinimas bus toks pat kaip standartinio modulio (pvz., calendar.py), Python gali supainioti ir importuoti ne tą failą.

---

if __name__ == "__main__":

Kai Python failas paleidžiamas tiesiogiai, kintamojo __name__ reikšmė būna "__main__". Kai failas importuojamas kaip modulis – reikšmė bus tokia, kaip failo pavadinimas.

Todėl dažnai naudojame:

def funkcija():
    print("Labas!")

if __name__ == "__main__":
    funkcija()

Taip užtikriname, kad funkcija pasileis tik tada, kai paleidžiame šį failą, bet ne tada, kai jį importuojame kitur.

---

Modulis turtle

turtle (liet. vėžlys) yra linksma Python biblioteka piešimui. Ji leidžia kurti grafinius piešinius ekrane – „vėžliukas“ juda, o paskui jį lieka spalvota linija.

Pirmasis pavyzdys – paprastas kvadratas:

import turtle

t = turtle.Turtle()

for i in range(4):
    t.forward(100)   # Einame 100 žingsnių į priekį
    t.right(90)      # Pasukame 90 laipsnių į dešinę

turtle.done()

💡 Pastebėk, kad naudojame forward() ir right() – tai paprastos funkcijos, kurios valdo „vėžliuko“ judėjimą.

Antras pavyzdys – spalvotas raštas:

import turtle

t = turtle.Turtle()
colors = ["red", "green", "blue", "orange", "purple"]

for i in range(36):
    t.color(colors[i % len(colors)])  # Pasirenkame spalvą iš sąrašo
    t.circle(100)                     # Nupiešiame apskritimą
    t.right(10)                       # Šiek tiek pasukame

turtle.done()

💡 Naudodamas sąrašus ir ciklus, gali kurti įdomius ornamentus ar net animacijas.

---

Pratimai

  1. Parašyk programą, kuri nupiešia trikampį su vėžliuku.
  2. Sukurk funkciją zvaigzde(dydis), kuri nupiešia žvaigždę.
  3. Sukurk programą, kuri nupiešia saulutę: vėžliukas apsisuka ratu, o kiekviename žingsnyje nubrėžia spindulį.
  4. Papildoma užduotis: pabandyk nupiešti savo inicialus (pvz., „AN“) naudodamas turtle.
Sprendimas 1  
import turtle

t = turtle.Turtle()

for i in range(3):
    t.forward(150)
    t.left(120)

turtle.done()
Sprendimas 2  
import turtle

def zvaigzde(dydis):
    t = turtle.Turtle()
    for i in range(5):
        t.forward(dydis)
        t.right(144)  # kampas žvaigždei nupiešti

zvaigzde(200)
turtle.done()
Sprendimas 3  
import turtle

t = turtle.Turtle()
t.speed(0)  # maksimalus greitis
for i in range(36):
    t.forward(100)
    t.backward(100)
    t.right(10)

turtle.done()


---