Python: funkcije i klase
Funkcije
-
funkcija ima
defi opcionalnoreturn, moguće je zadati podrazumijevane vrijednosti argumenata#!/usr/bin/env python def 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 tipovaintifloat. - 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
Noneako redak ne postoji. -
Definirajte funkciju
delete_from(table, id)koja mijenja "tablicu"tabletako 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)
-
classse koristi za definiranje klase#!/usr/bin/env python class 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
Covjekkoja sadrži atributevisina,tezina,dobibudnostte funkcijusay_hello(). - Definirajte klasu
Studentkoja nasljeđuje klasuCovjeki dodaje atributefakultetigodina_studija.
ToDo
Učini ovaj zadatak smislenim.
- objekt je instanca klase
selfje 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ć