4. Ponovitev - osnove#

V času krožka smo vzeli že kar nekaj konstruktov in se naučili pisanja preprostih programov. Ker sem med reševanjem nalog opazil ponavljanje enakih osnovnih napak, je nastopil čas, da še enkrat ponovimo, kar smo se naučili do sedaj. Počitnice pretekli teden pa so še dodaten razlog, da še enkrat pogledamo, kaj vse imamo zaenkrat na voljo v našem programerskem arzenalu.

4.1. Osnovne operacije#

Python lahko uporabljamo kot navaden kalkulator.

>>> (1 + 2 - 2) * 6 / 3
2.0

Navadno deljenje

>>> 5 / 3
1.6666666666666667

Celoštevilsko deljenje

>>> 5 // 3
1

Ostanek pri deljenju

>>> 5 % 3
2

Potenciranje

>>> 5 ** 2
25

Korenjenje (potenciranje na 0.5)

>>> 4 ** 0.5
2.0

4.2. Podatkovni tipi#

Ko števila zapisujemo v računalniku, je važno, kakšnega tipa je podatek. Do sedaj smo spoznali 4 podatkovne tipe.
int -> cela števila

>>> 2 + 3
5
>>> type(2)
int

float -> realna števila

>>> 4 / 3
1.3333333333333333
>>> type(0.5)
float

string -> besedilo (nizi) -> enojni ali dvojni narekovaji

>>> "Danes je lepo vreme"
'Danes je lepo vreme'
>>> type("Danes")
str

bool -> logične vrednosti

>>> True and False
True
>>> type(True)
bool

4.3. Nekaj uporabnih funkcij#

int(arg), float(arg), str(arg), bool(arg) -> pretvarjanje med podatkovnimi tipi

>>> int(2.0)
2
>>> float("2.34")
2.34
>>> str(3232)
'3232'

round(stevilo, decimalk) -> zaokroži število na podano število decimalk

>>> round(2.3456, 2)
2.35
>>> round(2.34343)
2

abs(st) -> absolutna vrednost

>>> abs(-2)
2

4.4. Operacije na nizih#

+ -> Lepljenje nizov

>>> "Danes " + "je" + " lepo vreme"
'Danes je lepo vreme'

* -> ponavljanje niza

>>> "ha" * 3
'hahaha'

4.5. Spremenljivke#

Spremenljivko deklariramo / ji dodelimo vrednost, nato pa jo lahko pokličemo, ko želimo uporabiti vrednost.

# deklaracija
>>> stevilo = 4

# klic
>>> stevilo
4

Spremenljivko lahko nato uporabimo v računanju

>>> 5 + stevilo
9

Vrednost lahko spreminjamo

>>> stevilo
4
>>> stevilo = 7
>>> stevilo
7
>>> stevilo = stevilo + 5
>>> stevilo
12

4.6. Print#

Vrednosti na zaslon prikažemo z ukazom print()

print("hello, world!")
hello, world!

Izraz znotraj printa se bo najprej poračunal, nato pa prikazal na zaslonu.

print(4 + 5 / 3)
5.666666666666667

Izpise lahko oblikujemo na dva načina. Prvi način je, da posamezne dele ločimo z vejico. Na ta način lahko tiskamo različne podatkovne tipe, vendar bo python vmes avtomatsko dodal presledek.

print("Danes", "je", 5, "stopinj.")
Danes je 5 stopinj.

Če želimo več nadzora nad izpisom, uporabimo lepljenje nizov. Vsi elementi izpisa morajo biti tipa str, zato jih ustrezno pretvorimo.

print("Danes " + "je " + str(5) + "°C.")
Danes je 5°C.

4.7. Input#

Podatke od uporabnika dobimo z ukazom input(prompt). Znotraj oklepajev napišemo iztočnico, ki se bo uporabniku prikazala na zaslonu. Kar dobimo, moramo nujno nato shraniti v spremenljivko.

ime = input("Vnesi svoje ime: ")
Vnesi svoje ime: Mihael
print(ime)
Mihael

Funkcija input() bo vedno podatke pridobila kot podatkovni tip str. Če pričakujemo število, moramo podatke ustrezno pretvoriti (int(), float()), drugače ne bomo mogli računati z njim. Največkrat to naredimo kar v isti vrstici, kot input:

letnica_rojstva = int(input("Vnesi svojo letnico rojstva: "))
Vnesi svojo letnico rojstva: 1950
starost = 2022 - letnica_rojstva
print("Star sem " + str(starost) + " let.")
Star sem 72 let.

4.8. Primeri pogojev#

Pogoj je lahko katerikoli izraz, ki se evaluira v bool (logično vrednost).

# primerjanje < > <= >=
4 < 5
True
# Pozor! Enakost preverjamo z dvojnim enačajem!
# enakost == in neenakost !=
4 == 4
True
# pogoje lahko zduzujemo s poljubnimi logičnimi vezniki
# Logični vezniki: and, or, not
a = 5
a != 4 and True
True
# Lahko preverjamo tudi več neenakosti hkrati
a = 5
3 < a < 6
True

4.9. Pogojni stavek#

S pogojnim stavkom lahko v program dodamo pogoje. Kodo, ki se izvede pod določenim pogojem, moramo zamakniti za 4 presledke ali tabulator (vendar znotraj programa teh dveh ne mešamo!)

starost = 15
if 10 < starost < 20:
    print("Najstnik")
Najstnik

Dodamo lahko tudi else del, ki se izvede, če pogoj ni izpolnjen:

starost = 21
if 10 < starost < 20:
    print("Najstnik")
else:
    print("Očitno nisi najstnik")
Očitno nisi najstnik

Preverjamo lahko tudi več različnih možnosti. Prvo začnemo z if, naslednje z elif, če pa noben pogoj ni izpolnjen, pa zaključimo z else:

zival = "mačka"
if zival == 'pes':
    print("hov hov!")
elif zival == "mačka":
    print("mijav!")
elif zival == "konj":
    print("ihaha")
else:
    print("Ne poznam živali!")
mijav!

Pogoje lahko tudi gnezdimo

starost = 17
if  starost < 20:
    if starost > 10:
        print("najstnik")
    else:
        print("otrok")
else:
    print("ne najstnik, ne otrok")
najstnik

4.10. Zanka while#

Z zanko lahko dosežemo, da se del kode nekajkrat ponovi ali pa se ponavalja, dokler je pogoj izpolnjen. Spodaj je nekaj primerov uporabe.

Dostikrat zanko uporabimo skupaj s števcem, ki ga poimenujemo i. Tega nato uporabimo v pogoju. Znotraj zanke ga tudi povečamo / zmanjšamo.

števec lahko povečamo i = i + 1 ali krajše i += 1. Okrajšava deluje za vse osnovne operacije (i -= 1, i *= 1, i /= 1, i //= 1 i %= 1 )

4.10.1. Petkrat ponovimo print():#

i = 0
while i < 5:
    print("hej")
    i += 1
hej
hej
hej
hej
hej

4.10.2. Štetje od 1 do 10#

i = 1
while i <= 10:
    print(i)
    i += 1
1
2
3
4
5
6
7
8
9
10

4.10.3. Seštevanje števil#

Recimo da nam uporabnik poda 5 števil, mi pa jih moramo sešteti. Kako bi naredili to? Izven zanke definiramo spremenljivko vsota. Zanko moramo izvesti 5x, pri čemer v vsaki iteraciji od uporabnika dobimo nov input. Trenutni input prištejemo vsoti. Na koncu natisnemo rezultat.

vsota = 0
i = 0
while i < 5:
    st = int(input("Vnesi število: "))
    vsota += st
    i += 1
print("Vsota je", vsota)
Vnesi število: 2
Vnesi število: 3
Vnesi število: 4
Vnesi število: 5
Vnesi število: 2
Vsota je 16

4.10.4. Računanje povprečja#

Kako bi izračunali povprečje? Povprečje je v resnici vsota, deljena s številom elementov, ki smo jih sešteli. Kot v prejšnjem primeru z zanko seštejemo elemente, nato pa vsoto delimo s številom elementov.

st_elementov = 3
vsota = 0
i = 0
while i < st_elementov:
    vsota += int(input("Vnesi število: "))
    i += 1
povprecje = vsota / st_elementov
print("Povprečje:", povprecje)
Vnesi število: 2
Vnesi število: 4
Vnesi število: 6
Povprečje: 4.0

4.10.5. Izpis lihih števil#

Z zanko se bomo sprehodili čez števila, če bo trenutno število liho, ga izpišemo.

i = 0
while i < 10:
    if i % 2 == 1:
        print(i)
    i += 1
1
3
5
7
9