Knyga/Importuotos bibliotekos ir vėžlys

Iš Pitonas.


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()


---