Skrajšani zapiski

Da se tisti, ki že znate programirati, ne boste prebijali čez zapiske, katerih dolžine se ne bi sramovala ne Fjodor Mihajlovič ne Lev Nikolajevič, je tu bistveno skrajšana verzija, v kateri skoraj nič na manjka.

Python v konzoli

Na prvih predavanjih običajno poženem python (npr. iz konzole/lupine/terminala/ukaznega pozivnika) in potem direktno vpisujem stvari vanj. Vpišeš 1 + 1 (Enter) in odgovori 2. Vpišeš x = 3 + 4 in ne odgovori ničesar. Napišeš x (Enter) in reče 7. Napišeš abs(x - 10) in reče 3 (če je x enak 7).

To je luštno zato, ker lahko sproti preskušamo kakšne izraze, funkcije ipd. Za predavanja pa je sploh praktično.

Števila

Python ima cela in necela števila, ampak samo po ena vsake vrste. Tipa se imenujeta int in float. int je lahko poljubno velik in ne le 232 ali 264, kot je to običajno v drugih jezikih. Lahko izpišete 2 ** 1000000, če čte (** pomeni potenciranje). float ima osem bajtov; v kakem drugem jeziku bi to prodajali že kot double.

+, -, * in % so takšni, kot ste jih navajeni. ** je potenciranje.

Rezultat / je vedno float, tudi, če delimo int-e. 8 / 3 je 2.6666666665, ne 2. Pač pa ima Python še // za celoštevilsko deljenje. 8 // 3 je 2 in 4.5 // 1.2 je 3.0 (float, ampak celo število). Predvsem obnašanje / je kar fino, ker se v drugih jezikih zmotiš tako, da ponesreči deliš int-e in ti potem ni jasno, zakaj ne dela. Obratno se zgodi redkeje.

Nizi

Python ima samo nize (tip se imenuje str), ne pa posameznih znakov (a la char).

Enojni in dvojni narekovaji so si enakovredni. Vseeno je, katere uporabljamo, samo da niz, ki ga začnemo z enojnimi tudi končamo z enojnimi in obratno. To je dobro zaradi:

sentence = "Don't do this."
levstik = 'Cesar reče: "Pa srečno hodi," minister pa nič.'

Nize seštevamo s +. Lahko jih tudi množimo s številom. "Ana" * 3 vrne "AnaAnaAna", kar je logično, saj je "Ana" * 3 pač isto kot "Ana" + "Ana" + "Ana". To je uporabno, da z "-" * 10 dobimo "----------".

Če hočemo pretvoriti niz v število, pokličemo int ali float. int("13") vrne 13 in float("3.14") vrne 3.14. Obratno poskusite sami. Aha, tudi int(3.67) je 3. (Ozadje: malo podobno kot v C++ ali Kotlinu (in malo manj kot v Javi ali JavaScriptu) so tudi v Pythonu imena tipov pravzaprav konstruktorji. Samo da je v Pythonu tu zadaj še malo globja filozofija.)

V drugo smer: str(13) vrne "13".

Python ni JavaScript. "1" + 1 ne vrne niza "11" temveč javi napako.

Spremenljivke

Pomen spremenljivk je malo drugačen kot v Javi ali C/C++, ter bolj podoben spremenljivkam v JavaScriptu. In običajno ne rečemo "spremenljivka", temveč "ime". Zakaj, povem čez par tednov.

Spremenljivk ni potrebno vnaprej deklarirati. Preprosto napišemo x = 5 ali x = 3.14. V prvem primeru se ime x nanaša na nek int, v drugem na nek float. Isto ime se lahko v istem programu/funkciji nanaša najprej na en tip, potem na drugega. Tole je legalen program.

x = 5
x = 3.14
x = "Ana"
print(x)
Ana

Kot sem napisal: x ni spremenljivka v C-jevskem/Javanskem pomenu. (Python je strogo dinamično tipiziran jezik. Dinamično, ker se isto ime lahko nanaša na različne tipe, strogo, ker noče sešteti "1" + 1. Za primerjavo: Javascript = šibko dinamično, C#/C++/Java = strogo statično, Kotlin = nacistično statično, Php = konfuzno.)

Imena spremenljivk so, kot običajno, sestavljena iz črk, podčrtajev in števk (samo ne na začetku). Črke so lahko tudi slovenske, ruske ali japonske, ampak tega ne počnite.

V Pythonu je običaj, da spremenljivke pišemo z malimi črkami in med besede dajemo podčrtaj. Se pravi visina_triglava in ne visinaTriglava (kot bi bilo običajno v Cju, Javi, Javascriptu) ali celo VisinaTriglava (yay, basic!). Tak je pač dogovor. Navadite se, da v vsakem jeziku programirate tako, kot je v tem jeziku navada. Te navade navadno niso same sebi namen.

Izogibajte se imenom O in l, ker jih je v nekaterih pisavah težko ločiti od 0 in 1.

Izogibajte se imenom, kot so a, aa, bbb... ki ne povedo nič. Če bom na predavanjih kdaj počel kaj takega, je to samo zato, da ne bom predolgo tipkal.

Ime naj pove vsebino, ne vrste. Ko bomo začeli uporabljati sezname, bodo mnogi imeli spremenljivko seznam, in, če bo seznamov več, se bodo imenovali seznam1, seznam2, seznam3. A ne bi bilo boljše, če bi ime povedalo kaj je v katerem od njih, in ne le, da gre za neke sezname?

Funkcije

Funkcije pokličemo kot v vseh normalnih jezikih, z oklepaji: abs(-3.14).

Python ima nekaj vdelanih funkcij, npr. abs, len, print, input... Teh ni potrebno uvažati. Nobenega C-jevskega #include <stdio.h>.

Vse drugo je, kot ste najbrž že navajeni, po raznih modulih. Za začetek jih bomo na hitro uvažamo z ukazi, kot npr. from math import *, da dobimo sin, cos, log ..., čez nekaj tednov pa se bomo naučili pravilnejšega uvažanja.

Vpis in izpis

Funkcija print prejme poljubno število argumentov poljubnih tipov in izpiše njihove vrednosti. Vmes doda presledke. To izgleda sitno, ampak je praktično, saj bomo takrat, ko jih ne bomo hoteli, itak naredili nekaj drugega.

print(6, "krat", 8, "je", 42) izpiše "6 krat 8 je 42". Čeprav ni.

Funkcija input prejme niz, počaka, da uporabnik kaj tvipka in vrne tipkano. Kot niz, četudi je uporabnik morda vpisal šteivlo.

Program

temp_C = input("Temperatura [C]? ")
temp_F = float(temp_C) * 5 / 9 + 32
print(temp_C, "C je enako", temp_F, "F")
Temperatura [C]? 15
15 C je enako 40.333333333333336 F

Na konce vrstic ne pišemo podpičij. Lahko jih, ampak vas bodo čudno gledali.

Na začetke vrstic ne smemo dajati presledkov. Zamikati moramo tam (in smemo samo tam), kjer je treba.

Program lahko natipkamo v poljubnem Notepadu, Textpadu, VS Codeu, Sublimeu, vi-ju, emacsu ... in ga poženemo s python ime_datoteke_s_programom. Raje pa ga vtipkamo v PyCharm in poženemo s Ctrl-Shift-F10 (Cmd-Shift-R na macOS).

Programi v Pythonu se ne prevajajo. Točneje, se, ampak tik pred izvajanjem, zato izgleda, kot da se ne. Zato python ni prevajalnik (compiler) temveč "tolmač" (interpreter).