Hong-Phuc Bui
2024-05-15 7f5f315ce79b213b153684910c20654039a91369
Template 4 Students OK
1 files modified
31 ■■■■■ changed files
funktion-modular/study-effort/effort_semester.py 31 ●●●●● patch | view | raw | blame | history
funktion-modular/study-effort/effort_semester.py
@@ -24,7 +24,7 @@
                                                       <>
"""
import sys
from typing import Final
from typing import Final, Any
SEMESTER_LENGTH: Final[int] = 15  # 15 Woche pro Semester
ECTS_EFFORT = 30  # 1 ECTS ~ 30 h
@@ -63,24 +63,31 @@
def print_effort(effort: list[tuple[str, float, float, float]]) -> None:
    max_char = 0
    header = ("Vorlesung", "ECTS", "V;U;T/Woche", "Aufwand/Woche")
    max_char = len(header)
    sep_width = 3
    sum_effort = 0
    for l in effort:
        if l := len(l[0]) > max_char:
            max_char = l
        if (c := len(l[0])) > max_char:
            max_char = c
        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")
    ects_width = len(header[1])
    veranstaltung_col_width = len(header[2])
    effort_col_width = len(header[3])
    def format_line(line: list[tuple[Any, Any, Any, Any]] ):
        lecture = f"{line[0]}".rjust(lecture_col_width)
        ects = f"{line[1]}".center(ects_width)
        v = f"{line[2]}".center(veranstaltung_col_width)
        e = f"{line[3]}".center(effort_col_width)
        return f"{lecture}  {ects}  {v}  {e}"
    print(format_line(header))
    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(format_line(l))
    print(f"Summe: {sum_effort}")