Python: funkcije i klase
Funkcije
-
funkcija ima
def
i opcionalnoreturn
, moguće je zadati podrazumijevane vrijednosti argumenatadef funkcija1(arg1, arg2=0): return 2 * arg1 + arg2 def funkcija2(arg1=1, arg2=0): print("Rezultat: ", 2 * arg1 + arg2)
// ekvivalentan C++ kod #include <iostream> using namespace std; int funkcija1 (int arg1, int arg2 = 0) { return 2 * arg1 + arg2; } void funkcija2 (int arg1 = 1, int arg2 = 0) { cout << "Rezultat: " << 2 * arg1 + arg2 << endl; }
Zadatak
- Napišite funkciju
prosjek(lista)
koja ispisuje na ekran prosječnu vrijednost elemenata liste(suma elemenata / broj elemenata)
. Pretpostavite da lista ima samo podatke tipovaint
ifloat
. - Napišite funkciju
najduzi_niz_znakova(lista_nizova_znakova)
koja traži najduži niz znakova u listi nizova znakova i vraća ga. Pretpostavite da lista ima samo podatke tipastr
.
Zadatak
Uzmite da sustav za e-učenje predanu domaću zadaću studenta Ivo Ivić sprema kao ivo_ivic.tar.gz
. Napišite funkciju koja će na temelju liste predanih zadaća oblika
[ "ivo_ivic.tar.gz", "ana_anic.tar.gz", "marko_horvat.tar.gz"]
ispisati prezimena i imena studenata koji su predali zadaću. Pritom zanemarite hrvatske znakove, međutim pripazite da prezime i ime počinju velikim početnim slovom.
Zadatak
-
Definirajte funkciju
select_from(table, id)
kojoj se šalje "tablica" oblikatablica = [[3, "Marko", "Ivić"], [6, "Ana", "Anić"], [4, "Hrvoje", "Horvat"]]
i koja kao rezultat vraća traženi "redak" ili
None
ako redak ne postoji. -
Definirajte funkciju
delete_from(table, id)
koja mijenja "tablicu"table
tako da iz nje briše redak koji ima daniid
. Funkcija ispisuje novu tablicu, ali ne vraća vrijednost.
Generatori
ToDo
Ovaj dio treba napisati u cijelosti.
Klase
- klasa je slična strukturi (i klasi) u C++-u i omogućuje nasljeđivanje atributa i metoda (više o tome čuti ćete na Objektno orijentiranom programiranju)
-
class
se koristi za definiranje klaseclass Iznos: broj = 0 slovima = "nula" def ispis(self): return str(broj) + " (" + slovima + ")"
// ekvivalentan C++ kod #include <iostream> using namespace std; class Iznos { int broj = 0; string slovima = "nula"; void ispis() { cout << broj << " (" << slovima << ")" << endl; } };
ToDo
Ovdje treba dati opisati nasljeđivanje.
Zadatak
- Definirajte klasu
Covjek
koja sadrži atributevisina
,tezina
,dob
ibudnost
te funkcijusay_hello()
. - Definirajte klasu
Student
koja nasljeđuje klasuCovjek
i dodaje atributefakultet
igodina_studija
.
ToDo
Učini ovaj zadatak smislenim.
- objekt je instanca klase
self
je referenca na objekt-
konstruktor je funkcija istog imena kao i pripadna klasa, stvara objekt koji je instanca te klase
- promjenjiv uz redefiniranje metode
__init__()
- promjenjiv uz redefiniranje metode
ToDo
Ovdje treba osmisliti primjere i zadatak.
Author: Vedran Miletić