Vaše úlohy budu hodnotit v řádkovém režimu, nepoužívejte, prosím, proto konstrukty, které se s ním nesnesou.
Svůj program vtěsnejte do jednoho textového souboru a ten nazvěte 4.py a bez zipování či jiné komprese ho odevzdejte do příslušné Odevzdávárny. Jakožto poznámku uveďte na začátku svého programu svá odháčárkovaná jméno a příjmení.
Podle pokynů páně docentových Pelánkových máte použít nejméně dvě třídy (class) a rekursi. Tady to jsou třída Member_of_dynasty s rodem, jménem, roky narození, úmrtí, nastoupení vlády a jejím skončením a syny a třída Dynasty se jménem dynastie a jejími členy.
Ve vstupních souborech jsou řádky dvojího druhu: oba se jménem rodu, vlastním jménem a výše zmíněnými roky. Pokud člen dynastie vládu nikdy nenastoupil, jsou jakožto údaje jejího začátku a konce uvedeny nuly (0). A jiné, které ještě za „symbolem” „–>” obsahují seznam synů. (Náš příklad je z temného středověku, kdy vládnout mohli jen muži a to nejstarší ... )
Funkce plural
, kterou máte také napsat, má fungovat jen na jménech dynastií,
jež jsou ve vstupních souborech.
V proměnné dynasties
nejsou v mém programu použity instance třídy Dynasty.
Ta je použita jakožto výstup select_to_dynasty
Rekursi použijte pro vypis „genealogického stromu” (print_dynasties
)
a pro výpočet počtu potomků count_offspring
all_members_of_dynasties, dynasties = read_data("kingsNF.txt") print_dynasties(dynasties) print() print("--------------") print("Number of offsprings of Habsburk Ferdinand is", count_offspring(all_members_of_dynasties["Habsburk Ferdinand"])) print("--------------") print("Those of shortest reign's are") for mmbr in shortest_reign(all_members_of_dynasties): print(" ", mmbr) print("--------------") s = select_to_dynasty("Premyslovec", all_members_of_dynasties) print(plural(s.get_name())) print_all_members(s) print("--------------") print() all_members_of_dynasties, dynasties = read_data("kingsR.txt") print_dynasties(dynasties) |
Premyslovci Premysl Otakar *1167 +1230 reign 1198 - 1230 Vaclav *1205 +1253 reign 1230 - 1253 Vladislav Cesky *1227 +1247 Premysl Otakar II. *1233 +1278 reign 1253 - 1278 Vaclav II. *1271 +1305 reign 1278 - 1305 Vaclav III. *1289 +1306 reign 1305 - 1306 Mikulas Vladislav *1207 +1227 Premysl *1209 +1239 Jagellonci Vladislav *1456 +1516 reign 1471 - 1516 Ludvik *1506 +1526 reign 1516 - 1526 Lucemburci Jan *1296 +1346 reign 1310 - 1346 Karel *1316 +1378 reign 1346 - 1378 Vaclav *1361 +1419 reign 1363 - 1419 Zikmund *1368 +1437 reign 1436 - 1437 Jan Jindrich *1322 +1375 Jost *1351 +1411 Jan Sobeslav Prokop Habsburci Ferdinand *1503 +1564 reign 1526 - 1564 Maxmilian *1527 +1576 reign 1562 - 1576 Rudolf *1552 +1612 reign 1576 - 1611 Matyas *1557 +1619 reign 1611 - 1619 Ferdinand Tyrolsky Karel Styrsky *1540 +1590 Ferdinand Styrsky *1578 +1637 reign 1619 - 1637 Ferdinand III. *1608 +1657 reign 1637 - 1657 Ferdinand IV. Filip August Maxmilian Tomas Leopold I. *1640 +1705 reign 1657 - 1705 Josef *1678 +1711 reign 1705 - 1711 Karel VI. *1685 +1740 reign 1705 - 1740 Leopold Vilem Maxmilian Arnost Leopold Karel -------------- Number of offsprings of Habsburk Ferdinand is 17 -------------- Those of shortest reign are Zikmund *1368 +1437 reign 1436 - 1437 Vaclav III. *1289 +1306 reign 1305 - 1306 -------------- Premyslovci Premysl Otakar II. Vaclav II. *1271 +1305 reign 1278 - 1305 Vladislav Cesky *1227 +1247 Vaclav *1205 +1253 reign 1230 - 1253 Vaclav III. *1289 +1306 reign 1305 - 1306 Premysl *1209 +1239 Mikulas Vladislav *1207 +1227 Premysl Otakar *1233 +1278 reign 1253 - 1278 -------------- Lucemburci Jan *1296 +1346 reign 1310 - 1346 Karel IV. *1316 +1378 reign 1346 - 1378 Vaclav IV. Zikmund Jan Jindrich |