Jos o strukturama podatka u Python-u

Pored vec razmatranih osnovnih tipova (brojevi, stringovi, logicke vrednosti, liste), Python ima jos neke pogodne strukture koje cemo sada kratko opisati.

Skupovi (set)

Set je struktura koja moze da sadrzi prizvoljan broj unikatnih elemenata. Ta struktura je veoma slicna definiciji matematickoj definiciji skupa, pa je tako i sa Python skupovima moguce obavljati operacije unija, presek, direfencija skupova.

Skupovi se kreiraju koriscenjem viticastih zagrada {}.

Na primer,

s = { 1, 2, 3, "reka", "4"}, je skup koji ima 5 elemenata.

Na casu smo radili sledeci primer koriscenja skupa.

plivanje = {"utorak","cetvrtak"}
predavanja = {"ponedeljak","sreda"}
vezbe = {"petak"}
while 1:
    dan = input("Koji je da: ")
    if dan == "nedelja":
        break
    if dan in plivanje:
        print("plivanje")
    if dan in predavanja:
        print("predavanje")
    if dan in vezbe:
        print("vezbe")

Tuplovi (tuple)

Tuplovi su slicni listama i za njihovo kreitanje se koriste male zagrade (). Za razliku od liste u tuplovi se ne mogu modifikovati.

Na primer:

(1,2,3,5,"grad",9) je tupl od 6 elemenata

Tuplovi se najcesce koriste kada treba neke fiksne podatke drazati zajedno.

Recnici (dictionary)

Recnici su slicni skupovima, kod kojih su elementi skupa parovi satavljeni od kljuca i njemu pridruzene vrednosti.

Radili smo primer englesko-srpskog recnika:

recnik = {"day":"dan", "bread":"hleb", "good":"dobar","night":"noc"}

Takodje smo naveli i primer cenovnika:

cenovnik = {"hleb":25, "sir":250, "meso":540}

Fajlovi

Fajlovi sluze da u njima skladistimo podatke na diskovima i drugim uredjajima sa permanentnom memorijom.

Obicno se faj koristi u tri karakteristicna koraka:

1) Otvaranje (open) fajla za citanje ili pisanje,

2) Citanje(read) ili pisanje (write) fajla

3) Zatvaranje (close) fajla

Primer citanja fajla:

f = open("tekst.txt","rb") # Otvaranja fajla tekst.txt koji se nalazi u tekucem folderu
sadrzaj = f.read()         # Citanje celog sadrzaja fajla
print(sadrzaj)             # Prikaz celog sadrzaja na ekranu
f.close()                  # Zatvaranje fajla
 

Primer pisanja u fajl:

imeFajla = input("Ime fajla: ") # Preuzimanje imena fajla sa tastature
f = open(imeFajla,"w")          # Otvaranje fajla
print("Unesite podatke\n")      # Prompt za unos podataka
while 1:                        # Beskonacna while petlja
    linija = input()            # Ucitavanje podataka sa tastature
    if linija == "*":           # Ako je uneti podatak * prekinuti sa radom
    break
    f.write(linija+"\n")        # Zapisati u faj ucitani podatak
f.close()                       # Zatvoriti datoteku

Jedan primer obrade datoteke

U datoteci ispitnirok.dat nalaze se podaci o polozenim ispitima kao na primer:

2A1/0089/11 34567 8
2A1/0018/11 36854 9
2A1/0067/11 12345 10
2A1/0001/11 23333 6
itd...

Napisati Python program koji se obradom fajla izracunava prosecna ocena postignuta u celom fajlu.

Resenje:

f = open("ispitnirok.dat","r")    # Otvaranje datoteke ispitnirok.dat
brojStudenata = 0                 # Brojac studenata postaviti na nulu
zbirOcena = 0;                    # Zbir svih ocena posatviti na nulu
for line in f.readlines():        # Za svaki red (liniju) podataka raditi u ciklusu
    zbirOcena = zbirOcena + int(line.split()[2])  # Na zbir ocena dodati ocenu iz tekuceg reda
    brojStudenata = brojStudenata +1     # Povecati broj studenata za 1
f.close() # Zatvoriti datoteku
print("prosecna ocena je : " + str(float(zbirOcena)/brojStudenata)) #stampati rezultat