2: Funkcijos (komandos)

Mes jau susipažinome su funkcija (komanda) print(...), kuri atspausdina duomenis. Norint panaudoti funkciją, reikia parašyti jos vardą, po kurio skliausteliuose ( ) nurodyti jai pateikiamus duomenis - argumentus. Funkcijos darbas priklausys nuo gautų argumentų. Pvz., print funkcija atspausdina gautus argumentus paeiliui:

Pavyzdys
Atspausdink tris skaičius
Papildomoi tarpai šioje programoje prasmės nekeičia. Tačiau, būkite atsargūs naudodami tarpus eilutės pradžioje - atitraukimas nuo krašto (angl. indentation) gali lemti klaidą. Daugiau apie atitraukimą sužinosime po kelių pamokų.

Būna funkcijų, kurioms argumentų nereikia nurodyti - tada tiesiog rašomi tušti skliausteliai, nes neparašius skliaustelių funkcija neveiks. Tokios funkcijos arba visada daro tą patį (pvz, print() tiesiog spausdina tuščią eilutę), arba duomenis gauna kitaip: nuskaito iš failo ar naudoja globalius (visoje programoje pasiekiamus) kintamuosius.

Funkcija gali grąžinti darbo metu apskaičiuotas reikšmes (angl. return values) . Pavyzdžiui funkcija max() grąžina didžiausią reikšmę.

Pavyzdys
Pabandykite atspėti, ką atspausdins programa?
Pavyzdyje max(42, 17) sakome, kad "funkcija max grąžino reikšmę 42."

Funkcija max turi draugę - min funkciją, kuri grąžina mažiausią iš duotų argumentų.

Pasirinkimo užduotis: Min ir Max (I)
Ką atspausdins ši programa?

x = 13
y = 7
a = max(x+y, x*2)
b = min(x, y)
print(a, b)
Teisingai!

Funkcijos gali būti kombinuojamos.

Trumpo atsakymo užduotis: Min ir Max (II)
Ką atspausdins ši programa? Hint

x = min(max(13, 7), 9)
print(x)
Teisingai!

Python leidžia kurti savo funkcijas (naudojant žodelį “def”) - po kelių pamokų to išmoksime.

Dažniausios klaidos

Jei funkcija gaus per daug ar per mažai argumentų, bus klaida. Pavyzdžiui funkcija max reikalauja bent vieno argumento.

Pavyzdys
Kviečiame max su per mažai argumentų.

Jei programa “nulūžo”, svarbu perskaityti klaidos aprašymą - ten yra naudingos informacijos.

Pavyzdys
Paleisk programą ir panagrinėk klaidos pranešimą.

Python sako kad tai sintaksės klaida - programa nesupranta, ką tu užrašei:

 Traceback (most recent call last):
   In line 2 of the code you submitted:
     bigger = max(3, 4)
          ^
 SyntaxError: invalid syntax
Tačiau, eilutė bigger = max(3, 4)yra gera. Problema tame, kad mes užmiršome eilutėje smaller = min(14, 99 uždaryti skliaustus. Todėl Python ieškojo ) tolimesnėje eilutėje. Taigi, ieškant klaidos, verta patikrinti aplinkines programos eilutes.

Pratimai

Tai dviejų dalių užduotis, kurioje naudosime min ir max funkcijas. Tarp dviejų miestų Maxime ir Miniac yra keletas tiltų. Kiekvienu iš tiltų leidžiama vežti tik tam tikrą svorį.

Programavimo pratimas: Vienas kelias
Tarp dviejų miestų yra tik vienas kelias. Kelias turi tris tiltus, kiekvienas jų leidžia vežti svorius a, b ir c, žr. paveikslėlyje:

Sunkvežimis turi nuvažiuoti visą kelią. Jo krovinys negali būti sunkesnis už silpniausio tilto leidžiamą apkrovą. Parašykite programą, kuri atspausdintų didžiausią saugų krovinio svorį. Kintamieji a, b ir c bus paruošti - jums tereikia juos panaudoti.

Programavimo pratimas: Du keliai
Antra dalis: miestus jungia ir antras kelias kuriame yra du tiltai, pirmo svorio riba yra d, o antro - e.

Tavo sunkvežimis gali pasirinkti bet kurį kelią. Parašykime programą, kuri atspausdins didžiausią svorį, kokį galime vežti. Naudokite kintamuosius - tiltų svorio ribas a, b, c, d ir e. Hint

Pratimas: sumaišytas kodas

Sudėliokite eilutes teisinga tvarka.

Sumaišytų eilučių užduotis: Kažkokia keistenybė
Sudėliokite eilutes taip, kad skaičiai x, y ir z būtų atspausdinti didėjimo tvarka.
  • print(max(x, y, z))
  • print(min(x, y, z))
  • print(x+y+z-min(x, y, z)-max(x, y, z))

Atlikus pratimus galima eiti: