| | |
| | | from typing import Final |
| | | |
| | | SEMESTER_LENGTH: Final[int] = 15 # 15 Woche pro Semester |
| | | ECTS_EFFORT = 30 # 1 ECTS ~ 30 h |
| | | DS = 1.5 # DS = Doppelstunde = 2 Unterrichtstunden |
| | | |
| | | |
| | | def parse_line(line: str) -> tuple[str, float, float]: |
| | | line = line.strip() |
| | | line = [e.strip() for e in line.split(";")] |
| | | return line[0], float(line[1]), float(line[2]) |
| | | |
| | | |
| | | def collect_lectures_from_file(lecture_filename:str) -> list[tuple[str, float, float]]: |
| | | # Your code here |
| | | pass |
| | | lectures = [] |
| | | with open(lecture_filename) as file: |
| | | while line := file.readline(): |
| | | line = line.strip() |
| | | if line[0] != '#': |
| | | line = parse_line(line) |
| | | lectures.append( line ) |
| | | return lectures |
| | | |
| | | |
| | | def lecture_effort(lecture: tuple[str, float, float]) -> float: |
| | | sum_effort = lecture[1] * ECTS_EFFORT |
| | | lecture_effort = SEMESTER_LENGTH * (lecture[2] * DS) |
| | | return (sum_effort - lecture_effort) / SEMESTER_LENGTH |
| | | |
| | | |
| | | def compute_semester_effort(lectures: list[tuple[str, float, float]]) -> list[tuple[str, float, float, float]]: |
| | | # Your code here |
| | | pass |
| | | effort = [ |
| | | (e[0], e[1], e[2], lecture_effort(e)) for e in lectures |
| | | ] |
| | | return effort |
| | | |
| | | |
| | | def print_effort(effort: list[tuple[str, float, float, float]]) -> None: |
| | | # Your code here |
| | | pass |
| | | max_char = 0 |
| | | sep_width = 3 |
| | | sum_effort = 0 |
| | | for l in effort: |
| | | if l := len(l[0]) > max_char: |
| | | max_char = l |
| | | sum_effort += l[-1] |
| | | |
| | | lecture_col_width = sep_width + max_char |
| | | ects_width = len("ECTS") + 1 |
| | | veranstaltung_col_width = 5 |
| | | header = ("Vorlesung", "ECTS", "V;U;T/Woche", "Aufwand/Woche") |
| | | for l in effort: |
| | | lecture = l[0].rjust(lecture_col_width) |
| | | ects = f"{l[1]}".ljust(ects_width) |
| | | v = f"{l[2]}".rjust(veranstaltung_col_width) |
| | | e = f"{l[3]}".rjust(veranstaltung_col_width) |
| | | print(f"{lecture} {ects} {v} {e}") |
| | | print(f"Summe: {sum_effort}") |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | lecture_filename = sys.argv[1] |
| | | lectures = collect_lectures_from_file(lecture_filename) |
| | | print(lectures) |
| | | effort = compute_semester_effort(lectures) |
| | | #print(effort) |
| | | print_effort(effort) |
| | | |
| | | |