Druhý vnitrosemestrální test Čas: 100 minut Bodování: každý příklad za 20 bodů Zadání Příklad 1 Napište funkci sum_diagonal(matrix), která pro zadanou matici vypočítá součet prvků na diagonále. >>> print(sum_diagonal([[1,2,4],[7,3,0],[7,8,9]])) 13 Příklad 2 Napište funkci swapcipher(text), která zadaný řetězec zašifruje tak, že vždy prohodí dvě sousední písmena. Funkce musí být zapsána rekurzivně (bez použití for/while cyklů). >>> print(swapcipher('pardubice')) apdrbucie Příklad 3 Napište funkci dice_hist(n), která náhodně "hází" šestibokou kostkou tak dlouho, dokud součet doposud padlých čísel není alespoň n. Poté vypíše textový "histogram" (počty padlých čísel) a průměrnou hodnotu hodů. Použijte dekompozici na funkci pro výpis histogramu a funkci pro výpočet a výpis průměrné hodnoty. >>> dice_hist(200) 1 : 15 2 : 11 3 : 7 4 : 12 5 : 11 6 : 7 Prumer: 3 Příklad 4 V souboru debt.txt jsou uložené záznamy o dluzích zákazníků. Soubor je ve tvaru jméno:dluh;jméno:dluh; Napište funkci sorted_customers(file), která vypíše zákazníky a jejich dluh seřazené dle dluhu. Jméno zákazníka se může opakovat, pak mu dluh sečtěte. >>> sorted_customers('debt.txt') Zdenek 2374 Kamil 1747 Tamara 1640 Ulrych 1342 Nora 1203 ... Příklad 5 Následující kód doplňte tak, aby fungoval, a přidejte následující funkce: Funkci, která pro každého studenta zjistí, za kolik kreditů má zapsány předměty. Funkci, která najde studenta, který má zapsány předměty za nejvíc kreditů. class Student: def __init__(self, name, surname): self.name = name self.surname = surname self.courses = [] def add_course(self, course): pass def count_credits(self): # vrati pocet zapsanych kreditu (ze vsech predmetu) pass def __str__(self): # vypise jmeno, prijmeni a pocet kreditu pass class Course: def __init__(self, code, credits): self.code = code self.credits = credits class School: def __init__(self): self.students = [] def add_student(self, s): pass def get_highest_credits(self): # vrati studenta s nejvetsim poctem zapsanych kreditu pass def students_info(self): # vypise vsechny studenty pass su = School() java = Course("012", 4) c = Course("013", 2) english = Course("111", 3) math = Course("024", 4) su.add_student(Student("Karel", "Novak")) su.add_student(Student("Jana", "Balikova")) su.add_student(Student("Richard", "Setrny")) su.add_student(Student("Petr", "Vich")) su.students[0].add_course(java) su.students[2].add_course(java) su.students[3].add_course(java) su.students[0].add_course(c) su.students[1].add_course(c) su.students[1].add_course(english) su.students[2].add_course(english) su.students[3].add_course(english) su.students[1].add_course(math) su.students[2].add_course(math) print("Seznam studentu:") su.students_info() print("Predmety za nejvice kreditu ma zapsane student(ka):", su.get_highest_credits()) Kód by měl vracet následující výsledek: Seznam studentu: Karel Novak: 6 Jana Balikova: 9 Richard Setrny: 11 Petr Vich: 7 Predmety za nejvice kreditu ma zapsane student(ka): Richard Setrny: 11