Kreirano 2024-09-30 Mon 13:44, pritisni ESC za mapu, m za meni, Ctrl+Shift+F za pretragu
Instalirajte proizvoljan editor koji podržava Python. Npr. PyCharm ili VS Code.
Virtuelna Python okruženja služe za izolaciju instaliranih biblioteka po projektu.
Upotrebom venv
modula kreirati i aktivirati virtualeno Python okruženje.
Testirati instalacijom biblioteke textX sa PyPI:
python -m venv venv # Po završetku ispitati sadržaj kreiranog venv foldera source venv/bin/activate # Na Windowsu venv\Scripts\activate.bat pip install textx[cli]
Testirati da li je textX instaliran pozivom:
textx version
pip
omogućava instalaciju u razvojnom modu što je zgodno kada želimo da
pratimo najsvežiju verziju iz nekog git repozitorijuma (npr. sa GitHub-a).
Klonirajte neki repozitorijum i instalirajte ga u tzv. editable modu za razvoj:
git clone git@github.com:pyflies/pyflies.git pip install -e pyflies pip list
Sa komandom pip list
videćete da se kodu ovog paketa pristupa direktno iz
kloniranog git repozitorijuma. Sada je moguće ažurirati paket upotrebom git-a:
cd pyflies git pull
Napisati funkciju koja transformiše listu reči u listu gde svaki element predstavlja broj samoglasnika iz originalne liste.
Napisati funkciju koja kreira akronim (prva slova svake reči, kao velika slova)
od zadate rečenice. Na primer: Fakultet tehničkih nauka
-> FTN
.
Dat vam je tekstualni CSV fajl čije linije su oblika:
<reč>, <broj>
Na primer:
jabuka, 120 programiranje, 450 ...
Napraviti funkciju koja za zadatu putanju do fajla vraća rečnik (dict
) gde će
ključevi biti reči a vrednosti odgovarajući brojevi iz datog fajla.
Kreirati klase Product
sa atributima:
name
- naziv proizvoda,price
- jedinična cena proizvoda,discount
- trenutno aktivan popust na cenu u procentima (npr. vrednost 10
znači 10% popusta). Podrazumevana vrednost je 0.
i klasu Stock
sa atributima products
koji će biti lista instanci klase
ProductAmount
. Klasa ProductAmount
ima sledeće atribute:
product
- referenca na instancu Product
amount
- količina na lageru
Kreirati property discount_price
nad klasom Product
koji će da vraća
vrednost sa uračunatim popustom.
Kreirati property total_value
i total_discount_value
nad klasom Stock
koji vraća ukupnu vrednost lagera proizvoda bez i sa uračunatim popustom.
Napisati kod koji testira implementaciju.
Sortirati proizvode na lageru iz prethodnog zadatka po ceni:
sort
i key
sort
i definisanjem specijalnih metoda za poređenje u klasi
Product
Kreirati klasu Point
sa atributima x
i y
. Omogućiti sabiranje instanci ove
klase. Takođe, omogućiti poređenje tačaka po jednakosti.
Operacija +
treba da vrati novu tačku sa koordinatama koje predstavljaju
zbir odgovarajućih koorinata operanada. Odnosno:
a = Point(2, 4)
b = Point(3, 4)
assert a + b is not a
assert a + b == Point(5, 8)
Takođe implementirati sabiranje “u mestu” (operator +=
) gde će rezultat izmeniti
prvi operand, tj. obaviće translaciju za vrednost drugog operanda. Odnosno:
a = Point(2, 4)
x = a
b = Point(3, 4)
a += b
assert a == Point(5, 8)
assert a is x
Napisati test gde će lista tačaka biti translirana za isti vektor.
Proširiti prethodni zadatak uvođenjem klase Line
koja sadrži dve tačke. Takođe
omogućiti sabiranje sa tačkom (translaciju) sa operatorima +
i +=
.
Napisati test gde će lista koja sadrži i tačke i duži biti translirana za isti vektor. Prolazak kroz listu i translacija treba da se obavi kodom koji ne proverava tip elementa.
Napisati funkciju za konverziju iz rimskog brojnog sistema u arapski i obrnuto.
Kreirati projektnu strukturu tako da je moguća jednostavna instalacija vašeg
paketa u bilo koje virtuelno Python okruženje upotrebom pip
alata. Videti na
prethodnom slajdu. Potrebno je da vaš projekat poseduje setup.py
i setup.cfg
fajl. Ugledati se na druge Python projekte (npr. textX).
Omogućiti poziv konverzije sa komandne linije (CLI).
Napomena: Rešenje za Python postoji u vidu paketa roman. Probati uraditi
samostalno. Uporediti svoje rešenje sa roman
paketom.