initial
This commit is contained in:
commit
c77ec709b2
17974
20kleagues.txt
Normal file
17974
20kleagues.txt
Normal file
File diff suppressed because it is too large
Load Diff
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 eline@dmz.rs
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
88
deniro.csv
Normal file
88
deniro.csv
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
"Year", "Score", "Title"
|
||||||
|
1968, 86, "Greetings"
|
||||||
|
1970, 17, "Bloody Mama"
|
||||||
|
1970, 73, "Hi, Mom!"
|
||||||
|
1971, 40, "Born to Win"
|
||||||
|
1973, 98, "Mean Streets"
|
||||||
|
1973, 88, "Bang the Drum Slowly"
|
||||||
|
1974, 97, "The Godfather, Part II"
|
||||||
|
1976, 41, "The Last Tycoon"
|
||||||
|
1976, 99, "Taxi Driver"
|
||||||
|
1977, 47, "1900"
|
||||||
|
1977, 67, "New York, New York"
|
||||||
|
1978, 93, "The Deer Hunter"
|
||||||
|
1980, 97, "Raging Bull"
|
||||||
|
1981, 75, "True Confessions"
|
||||||
|
1983, 90, "The King of Comedy"
|
||||||
|
1984, 89, "Once Upon a Time in America"
|
||||||
|
1984, 60, "Falling in Love"
|
||||||
|
1985, 98, "Brazil"
|
||||||
|
1986, 65, "The Mission"
|
||||||
|
1987, 100, "Dear America: Letters Home From Vietnam"
|
||||||
|
1987, 80, "The Untouchables"
|
||||||
|
1987, 78, "Angel Heart"
|
||||||
|
1988, 96, "Midnight Run"
|
||||||
|
1989, 64, "Jacknife"
|
||||||
|
1989, 47, "We're No Angels"
|
||||||
|
1990, 88, "Awakenings"
|
||||||
|
1990, 29, "Stanley & Iris"
|
||||||
|
1990, 96, "Goodfellas"
|
||||||
|
1991, 76, "Cape Fear"
|
||||||
|
1991, 69, "Mistress"
|
||||||
|
1991, 65, "Guilty by Suspicion"
|
||||||
|
1991, 71, "Backdraft"
|
||||||
|
1992, 87, "Thunderheart"
|
||||||
|
1992, 67, "Night and the City"
|
||||||
|
1993, 75, "This Boy's Life"
|
||||||
|
1993, 78, "Mad Dog and Glory"
|
||||||
|
1993, 96, "A Bronx Tale"
|
||||||
|
1994, 39, "Mary Shelley's Frankenstein"
|
||||||
|
1995, 80, "Casino"
|
||||||
|
1995, 86, "Heat"
|
||||||
|
1996, 74, "Sleepers"
|
||||||
|
1996, 38, "The Fan"
|
||||||
|
1996, 80, "Marvin's Room"
|
||||||
|
1997, 85, "Wag the Dog"
|
||||||
|
1997, 87, "Jackie Brown"
|
||||||
|
1997, 72, "Cop Land"
|
||||||
|
1998, 68, "Ronin"
|
||||||
|
1998, 38, "Great Expectations"
|
||||||
|
1999, 69, "Analyze This"
|
||||||
|
1999, 43, "Flawless"
|
||||||
|
2000, 43, "The Adventures of Rocky & Bullwinkle"
|
||||||
|
2000, 84, "Meet the Parents"
|
||||||
|
2000, 41, "Men of Honor"
|
||||||
|
2001, 73, "The Score"
|
||||||
|
2001, 33, "15 Minutes"
|
||||||
|
2002, 48, "City by the Sea"
|
||||||
|
2002, 27, "Analyze That"
|
||||||
|
2003, 4, "Godsend"
|
||||||
|
2004, 35, "Shark Tale"
|
||||||
|
2004, 38, "Meet the Fockers"
|
||||||
|
2005, 4, "The Bridge of San Luis Rey"
|
||||||
|
2005, 46, "Rent"
|
||||||
|
2005, 13, "Hide and Seek"
|
||||||
|
2006, 54, "The Good Shepherd"
|
||||||
|
2007, 21, "Arthur and the Invisibles"
|
||||||
|
2007, 76, "Captain Shakespeare"
|
||||||
|
2008, 19, "Righteous Kill"
|
||||||
|
2008, 51, "What Just Happened?"
|
||||||
|
2009, 46, "Everybody's Fine"
|
||||||
|
2010, 72, "Machete"
|
||||||
|
2010, 10, "Little Fockers"
|
||||||
|
2010, 50, "Stone"
|
||||||
|
2011, 25, "Killer Elite"
|
||||||
|
2011, 7, "New Year's Eve"
|
||||||
|
2011, 70, "Limitless"
|
||||||
|
2012, 92, "Silver Linings Playbook"
|
||||||
|
2012, 51, "Being Flynn"
|
||||||
|
2012, 29, "Red Lights"
|
||||||
|
2013, 46, "Last Vegas"
|
||||||
|
2013, 7, "The Big Wedding"
|
||||||
|
2013, 29, "Grudge Match"
|
||||||
|
2013, 11, "Killing Season"
|
||||||
|
2014, 9, "The Bag Man"
|
||||||
|
2015, 60, "Joy"
|
||||||
|
2015, 26, "Heist"
|
||||||
|
2015, 61, "The Intern"
|
||||||
|
2016, 11, "Dirty Grandpa"
|
|
83
fajlovi.py
Normal file
83
fajlovi.py
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# fajlovi
|
||||||
|
|
||||||
|
# Kako manipulisemo fajlovima?
|
||||||
|
# Kako citamo fajlove?
|
||||||
|
# Kako kreiramo fajlove?
|
||||||
|
# Kako pisemo (dodajemo sadrzaj) u fajlove?
|
||||||
|
|
||||||
|
# Da bi otvorili fajl (za citanje ili pisanje) u python-u, koristimo funkciju:
|
||||||
|
# open
|
||||||
|
# argumenti za funkciju `open` su:
|
||||||
|
# - ime fajla (onog koji zelimo da otvorimo),
|
||||||
|
# - mod
|
||||||
|
|
||||||
|
# Objasnjenje za modove:
|
||||||
|
# Oni govore pajtonu sta planiramo da radimo sa tim fajlom. Neki od ponudjenih
|
||||||
|
# i najcesce koriscenih modova su:
|
||||||
|
# - "w" za pisanje, ako fajl ne postoji, kreira se novi, ako fajl postoji,
|
||||||
|
# sve u njemu se brise i onda mozemo da pisemo u taj fajl
|
||||||
|
# - "a" za pisanje, nalik na "w" samo sto mod "a" ne brise fajl nego dodaje
|
||||||
|
# - "r" za citanje
|
||||||
|
|
||||||
|
# znaci da bi otvorili neki fajl (tekstualni fajl) i njegov sadrzaj zabelezili
|
||||||
|
# u promenljivoj (tipa string) mozemo da uradimo sledece:
|
||||||
|
|
||||||
|
neki_fajl = open("tekst.txt", "r") # tekst.txt je fajl koji se nalazi u istom
|
||||||
|
# folderu kao i ovaj fajl (fajlovi.py)
|
||||||
|
|
||||||
|
sadrzaj_fajla = neki_fajl.read()
|
||||||
|
|
||||||
|
print(sadrzaj_fajla)
|
||||||
|
|
||||||
|
neki_fajl.close() # sve fajlove koje otvorimo moramo i da zatvorimo!!!
|
||||||
|
# inace rizikujemo da se desi korupcija fajla
|
||||||
|
|
||||||
|
# ako otvorimo neki fajl, i 2 puta pokusamo da procitamo njegov sadrzaj, samo
|
||||||
|
# prvi put cemo procitati taj sadrzaj; tj. citanje fajla, "konzumira" taj fajl!
|
||||||
|
# !! to ne znaci da ce fajl biti obrisan !!
|
||||||
|
|
||||||
|
|
||||||
|
fajl = open("tekst.txt", "r")
|
||||||
|
|
||||||
|
print(fajl.read())
|
||||||
|
print(fajl.read()) # ovde necemo stampati nista, zato sto je fajl vec procitan
|
||||||
|
# ako zelimo ponovo da procitamo isti fajl, moramo ga prvo
|
||||||
|
# zatvoriti pa ponovo otvoriti
|
||||||
|
fajl.close()
|
||||||
|
|
||||||
|
# druge metode (osim read()) koje mozemo koristiti su:
|
||||||
|
# - readline() koji cita jednu liniju fajla (vraca nam string)
|
||||||
|
# - readlines() koji cita sve linije fajla i vraca nam niz linija
|
||||||
|
# - write(tekst) koji upisuje zadati tekst (argument tipa string) u zeljeni fajl
|
||||||
|
|
||||||
|
# u python-u, mozemo iterirati preko fajlova (kao i sa nizovima i recnicima)
|
||||||
|
|
||||||
|
deniro_fajl = open("deniro.csv","r")
|
||||||
|
|
||||||
|
filmovi = {}
|
||||||
|
# ako pogledate fajl "deniro.csv", sastoji se od jedne linije koja opisuje redove
|
||||||
|
# fajla, a ostatak fajla su pomenuti redovi u formatu:
|
||||||
|
# vrednost, vrednost, vrednost
|
||||||
|
# !! pogledati fajl "deniro.csv" !!
|
||||||
|
|
||||||
|
fajl.readline() # da "preskocimo" prvu liniju fajla
|
||||||
|
|
||||||
|
for linija in fajl:
|
||||||
|
linija = linija.strip() # uklanjamo '\n' (znak za novi red) iz linije
|
||||||
|
# zatim delimo liniju na 3 dela (za 2 reza..), gde su delovi:
|
||||||
|
# godina kada je film objavljen, rejting filma i naslov filma
|
||||||
|
godina, rejting, naslov = linija.split(", ", 2)
|
||||||
|
filmovi[naslov] = (rejting, godina)
|
||||||
|
|
||||||
|
# sada u recniku "filmovi" koji smo definisali iznad, imamo parove
|
||||||
|
# film => (rejting, godina)
|
||||||
|
|
||||||
|
# to mozemo da iskoristimo da nadjemo npr:
|
||||||
|
# - sve filmove odredjene godine (npr. pitamo korisnika koju godinu zele, i onda
|
||||||
|
# ispisemo sve filmove od te godine, sortirane po rejtingu)
|
||||||
|
# - najbolje ocenjeno filmove
|
||||||
|
# - da vrsimo pretragu nad filmovima (npr. pitamo korisnika koji film zeli, i
|
||||||
|
# onda ispisemo godinu izlaska tog filma i njegov rejting, a ako u recniku
|
||||||
|
# nemamo taj film, onda ispisemo da nemamo trazeni film)
|
||||||
|
|
||||||
|
# ovo sve mogu biti zadaci za domaci!
|
26
iteriranje.py
Normal file
26
iteriranje.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# primer u kome se vidi nacin na koji "iteriramo" kroz niz, kao i kroz recnik
|
||||||
|
|
||||||
|
niz = [1,2,3,4,5]
|
||||||
|
|
||||||
|
# u primeru niza, iteriramo preko elemenata
|
||||||
|
for element in niz:
|
||||||
|
print(element)
|
||||||
|
|
||||||
|
print("---------------")
|
||||||
|
|
||||||
|
recnik = {
|
||||||
|
"a": 1,
|
||||||
|
"b": 2,
|
||||||
|
"c": 3,
|
||||||
|
"d": 4,
|
||||||
|
"e": 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
# u primeru recnika, iteriramo preko kljuca
|
||||||
|
# a da dobijemo element u recniku koristimo `recnik[kljuc]`
|
||||||
|
for kljuc in recnik:
|
||||||
|
print(kljuc, recnik[kljuc])
|
||||||
|
|
||||||
|
# imati na umu da `kljuc` promenljiva u liniji `for kljuc in recnik` ne mora da se zove kljuc,
|
||||||
|
# to je samo naziv koji smo mi odabrali; samo treba zapamtiti da to ime mozemo da koristimo samo
|
||||||
|
# unutar for pelje (tj, za vreme iteriranja)
|
19
ocene.py
Normal file
19
ocene.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# jednostavan primer koji pokazuje iteraciju preko recnika, kao i jedan od
|
||||||
|
# standardnih problema za cije resavnanje obicno koristimo recnike
|
||||||
|
|
||||||
|
ocene = {
|
||||||
|
"srpski": 5,
|
||||||
|
"matematika": 4,
|
||||||
|
"likovno": 3
|
||||||
|
}
|
||||||
|
|
||||||
|
suma = 0
|
||||||
|
|
||||||
|
for predmet in ocene:
|
||||||
|
print("predmet", predmet, ":", ocene[predmet])
|
||||||
|
suma = suma + ocene[predmet]
|
||||||
|
|
||||||
|
prosek = suma / len(ocene)
|
||||||
|
|
||||||
|
print("prosek je", prosek)
|
||||||
|
|
103
recnici.py
Normal file
103
recnici.py
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
# primer u kome predstavljamo recnike i radimo poredjenje izmedju recnika i nizova
|
||||||
|
|
||||||
|
# u vecini slucajeva, sintaksa za rad sa nizovima i recnicima je ista
|
||||||
|
|
||||||
|
niz = [1,2,3,4,5]
|
||||||
|
|
||||||
|
if 6 in niz: # pomocu `in` kljucne reci, mozemo proveriti da li je neka vrednost clan niza
|
||||||
|
print("6 je u nizu")
|
||||||
|
else:
|
||||||
|
print("6 nije u nizu")
|
||||||
|
|
||||||
|
ocene = { # za razliku od nizova, koje definisemo koriscenjem [] zagrada, za recnike koristimo {}
|
||||||
|
"srpski": 5,
|
||||||
|
"engleski": 2,
|
||||||
|
"matematika": 4,
|
||||||
|
"matematika": 5
|
||||||
|
}
|
||||||
|
|
||||||
|
print(ocene["srpski"]) # sintaksa za pristupanje elementima recnika je nalik na onu za pristupanje
|
||||||
|
# clanovima niza, samo sto u ovom slucaju umesto indeksa (tj. broja),
|
||||||
|
# koristimo kljuceve
|
||||||
|
|
||||||
|
print("ocena iz engleskog",ocene["engleski"]) # 2
|
||||||
|
ocene["engleski"] = 4 # za razliku od nizova kod kojis smo morali da koristimo append metodu, za
|
||||||
|
# dodavanje elemenata u recnik koristimo istu sintaksu kao i za pristupanje
|
||||||
|
# elementima
|
||||||
|
print("ocena iz engleskog",ocene["engleski"]) # 4
|
||||||
|
|
||||||
|
if "fizicko" in ocene: # kao sto primecujete, sintaksa za proveravanje da li je neka vrednost clan
|
||||||
|
# recnika, je potpuno ista kao i za proveravanje da li je neka vrednost clan
|
||||||
|
# niza
|
||||||
|
print("ocena iz fizickog",ocene["fizicko"])
|
||||||
|
else:
|
||||||
|
print("nema ocene iz fizickog")
|
||||||
|
|
||||||
|
print(ocene)
|
||||||
|
del ocene["engleski"] # mozemo da uklonima neki par (kljuc, vrenost) iz recnika (kao i sa nizovima)
|
||||||
|
print(ocene)
|
||||||
|
|
||||||
|
# malo ozbiljniji primer u kojem su kljucevi recnika imena (tipa string), a vrednosti drugi recnici
|
||||||
|
# koji predstavljaju neke ljude (ime, prezime, zanimanje, godiste, itd.)
|
||||||
|
|
||||||
|
petar = {
|
||||||
|
"ime": "Petar",
|
||||||
|
"prezime": "Petrovic",
|
||||||
|
"zanimanje": "Moler",
|
||||||
|
"godiste": 1950,
|
||||||
|
"imena dece": ["Mika", "Zika"],
|
||||||
|
"adresa": {
|
||||||
|
"grad": "Beograd",
|
||||||
|
"ulica": "Stolarska",
|
||||||
|
"broj": 35
|
||||||
|
}
|
||||||
|
}
|
||||||
|
marko = {
|
||||||
|
"ime": "Marko",
|
||||||
|
"prezime": "Markovic",
|
||||||
|
"zanimanje": "Zidar",
|
||||||
|
"godiste": 1990,
|
||||||
|
"imena dece": ["Iva", "Ana"],
|
||||||
|
"adresa": {
|
||||||
|
"grad": "Beograd",
|
||||||
|
"ulica": "Zidarska",
|
||||||
|
"broj": 13
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
adresar = { # mogli smo da ne pravimo posebne promenljive za ljude, vec da inicijalizujemo sve unutar
|
||||||
|
# recnika direktno, a mozemo i da za neke ljude koristimo vec definisane promenljive a za
|
||||||
|
# druge da ih definisemo direktno unutar recnika
|
||||||
|
"Petar Petrovic": petar,
|
||||||
|
"Marko Markovic": marko,
|
||||||
|
"Ivan Ivanovic": {
|
||||||
|
"ime": "Ivan",
|
||||||
|
"prezime": "Ivanovic",
|
||||||
|
"zanimanje": "TV voditelj",
|
||||||
|
"godiste": 1975,
|
||||||
|
"imena dece": [],
|
||||||
|
"adresa": {
|
||||||
|
"grad": "Beograd",
|
||||||
|
"ulica": "Knjeginje Zorke",
|
||||||
|
"broj": 25
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
print("Marko Markovic zivi u ulici: ",adresar["Marko Markovic"]["adresa"]["ulica"])
|
||||||
|
|
||||||
|
stevan = {
|
||||||
|
"ime": "Stevan",
|
||||||
|
"prezime": "Markovic",
|
||||||
|
"zanimanje": "Fotograf",
|
||||||
|
"godiste": 1970,
|
||||||
|
"imena dece": ["Iva", "Ana"],
|
||||||
|
"adresa": {
|
||||||
|
"grad": "Novi Sad",
|
||||||
|
"ulica": "Zidarska",
|
||||||
|
"broj": 13
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
adresar["Stevan Markovic"] = stevan # naravno mozemo dodati novu osobu u adresar (recnik)
|
||||||
|
|
5634
romeo and juliet.txt
Normal file
5634
romeo and juliet.txt
Normal file
File diff suppressed because it is too large
Load Diff
53
sekspir.py
Normal file
53
sekspir.py
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# ucitati fajl u promenljivu
|
||||||
|
# podelimo taj tekst u reci
|
||||||
|
# napravimo recnik koji ce cuvati (brojac) broj ponavljanja svake reci u tekstu
|
||||||
|
#
|
||||||
|
# proci cemo kroz sve reci
|
||||||
|
# ako smo vec videli tu rec
|
||||||
|
# povecamo brojac za tu rec
|
||||||
|
# ako je to nova rec
|
||||||
|
# namestimo brojac za tu rec na 1
|
||||||
|
|
||||||
|
fajl = open("romeo and juliet.txt")
|
||||||
|
tekst = fajl.read()
|
||||||
|
fajl.close()
|
||||||
|
|
||||||
|
tekst = tekst.replace("."," ") # zamenjujemo tacke za razmake (efekivno izbacujemo tacke iz teksta)
|
||||||
|
tekst = tekst.replace("!"," ") # zamenjujemo uzvicnike za razmake
|
||||||
|
tekst = tekst.replace("?"," ") # zamenjujemo upitnike za razmake
|
||||||
|
tekst = tekst.replace("\""," ") # zamenjujemo navodnike za razmake
|
||||||
|
tekst = tekst.replace("-"," ") # zamenjujemo crtice za razmake
|
||||||
|
tekst = tekst.replace(","," ") # zamenjujemo zareze za razmake
|
||||||
|
# tekst = tekst.replace("\n"," ") # zamenjujemo znakove za novi red za razmake (ovo u nasem slucaju nije neophodno)
|
||||||
|
|
||||||
|
reci = tekst.split() # delimo tekst u reci (delimo ga tako sto svaki put kada naidjemo na razmak
|
||||||
|
# pravimo novu rec
|
||||||
|
|
||||||
|
tabela = {} # kreiramo recnik koji ce cuvati gorepomenute brojace
|
||||||
|
|
||||||
|
for rec in reci:
|
||||||
|
if rec not in tabela: # ako rec nije u tabeli, tj. ako nismo videli rec pre toga
|
||||||
|
tabela[rec] = 1
|
||||||
|
else: # u suprotnom rec je vec u tabeli, tj. rec smo vec videli
|
||||||
|
tabela[rec] += 1
|
||||||
|
|
||||||
|
#print(tabela) # mozemo ispisati celu tabelu
|
||||||
|
|
||||||
|
print("Romeo se pominje", tabela["Romeo"], "puta")
|
||||||
|
print("Julija se pominje", tabela["Juliet"], "puta")
|
||||||
|
if tabela["Romeo"]>tabela["Juliet"]:
|
||||||
|
print("Romeo se pominje vise puta od Julije")
|
||||||
|
else:
|
||||||
|
print("Julija se pominje vise puta od Romea")
|
||||||
|
|
||||||
|
# mozemo i da sortiramo reci da bi videli koje se najvise ponavljaju (ovo je malo komplikovaniji primer)
|
||||||
|
|
||||||
|
sortirane_reci = sorted(tabela.items(), key=lambda x: x[1], reverse=True)
|
||||||
|
|
||||||
|
# ispismo 20 najucestalijih reci
|
||||||
|
for i in range(20):
|
||||||
|
print(sortirane_reci[i][0],"=>", sortirane_reci[i][1])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user