class Oseba: def __init__(self, prednik, ime, spol, starost): self.prednik = prednik self.ime = ime self.spol = spol self.starost = starost self.otroci = [] # Tole je metoda, ki kliče metodo (oz. metodi), ki ju boš napisal kot # rešitev obvezne naloge # Te metode NE SMETE SPREMINJATI def linija(self): dolzina = 0 oseba = self while oseba is not None: dolzina += 1 oseba = oseba.dedic() return dolzina # Tu je prostor za tvoje rešitve. # Tu tudi. # Od tu naprej pa so samo še testi import unittest class TestOsebe(unittest.TestCase): rodbina = """Adam: Matjaž-90; Cilka-88; Daniel-85; Erik-83 Matjaž: Viljem-58 Viljem: Tadeja-20 Daniel: Elizabeta-67; Hans-64 Elizabeta: Ludvik-50; Jurij-49; Barbara-45; Herman-39; Mihael-32 Jurij: Franc-30; Jožef-29 Herman: Margareta-3 Jožef: Alenka-9; Aleksander-5; Petra-7""" def sestavi_rodbino(self, cls): rodbina = {"Adam": cls(None, "Adam", "M", 111)} for opis in TestOsebe.rodbina.splitlines(): ime, opisi_otrok = opis.split(":") oseba = rodbina[ime] for otrok in opisi_otrok.split(";"): ime, starost = otrok.split("-") ime = ime.strip() starost = int(starost) otrok = cls(oseba, ime, "MZ"[ime[-1] == "a"], starost) rodbina[ime] = otrok oseba.otroci.append(otrok) return rodbina def test_stevilo_otrok(self): rodbina = self.sestavi_rodbino(Oseba) self.assertEqual(rodbina["Adam"].stevilo_otrok(), 4) self.assertEqual(rodbina["Daniel"].stevilo_otrok(), 2) self.assertEqual(rodbina["Hans"].stevilo_otrok(), 0) self.assertEqual(rodbina["Adam"].stevilo_vnukov(), 3) self.assertEqual(rodbina["Daniel"].stevilo_vnukov(), 5) self.assertEqual(rodbina["Hans"].stevilo_vnukov(), 0) self.assertEqual(rodbina["Jožef"].stevilo_vnukov(), 0) def test_linija_prvorojencev(self): rodbina = self.sestavi_rodbino(Oseba1) self.assertEqual(rodbina["Adam"].linija(), 4) self.assertEqual(rodbina["Daniel"].linija(), 3) self.assertEqual(rodbina["Hans"].linija(), 1) def test_linija_drugorojencev(self): rodbina = self.sestavi_rodbino(Oseba2) self.assertEqual(rodbina["Adam"].linija(), 2) self.assertEqual(rodbina["Daniel"].linija(), 2) self.assertEqual(rodbina["Hans"].linija(), 1) self.assertEqual(rodbina["Elizabeta"].linija(), 4) def test_velikost_rodbine(self): rodbina = self.sestavi_rodbino(Oseba) self.assertEqual(rodbina["Adam"].velikost_rodbine(), 20) self.assertEqual(rodbina["Daniel"].velikost_rodbine(), 14) self.assertEqual(rodbina["Hans"].velikost_rodbine(), 1) self.assertEqual(rodbina["Elizabeta"].velikost_rodbine(), 12) if __name__ == "__main__": unittest.main()