study-effort/pyproject.toml | ●●●●● patch | view | raw | blame | history | |
study-effort/src/mystudy/lecture.py | ●●●●● patch | view | raw | blame | history | |
study-effort/src/mystudy/main.py | ●●●●● patch | view | raw | blame | history | |
study-effort/tests/mystudy/lecture_test.py | ●●●●● patch | view | raw | blame | history | |
study-effort/vorlesung.csv | ●●●●● patch | view | raw | blame | history |
study-effort/pyproject.toml
@@ -10,8 +10,6 @@ # All the following settings are optional: where = ["src"] [project.scripts] mystudy = "mystudy.main:main" study-effort/src/mystudy/lecture.py
@@ -4,19 +4,48 @@ ects_effort: Final[int] = 30 def lecture_effort(lecture_pre_week, ects): class Lecture(): def __init__(self, name, ects, frequency): """ :param lecture_pre_week: wie viel Veranstaltungen hat eine Vorlesung in der Woche :param ects: Anzahl der ECTS der Vorlesung :param name: :param ects: :param frequency: """ self._name = name self._ects = ects self._frequency = frequency def cal_effort(self, time_per_ects = ects_effort, duration = lecture_time) -> float: """ Berechnet den Zeitaufwand pro woche für diese Vorlesung :param time_per_ects: :param duration: :return: """ effort_in_time = ects * ects_effort effort_per_week = effort_in_time / lecture_time # how many hours for a week return effort_per_week - (lecture_pre_week * 1.5) effort_in_time = self._ects * time_per_ects effort_per_week = effort_in_time / duration return effort_per_week - (self._frequency * 1.5) def __repr__(self): return f"Vorlesungsname {self._name} ECTS: {self._ects}" # def __str__(self): # return self.__repr__() def format_lecture_effort(name, lecture_count, ects, effort): return f"Für die Vorlesung {name} mit {ects} ECTS und {lecture_count} Veranstaltung pro Woche brauchen Sie {effort} Stunden zu lernen." def parse_lecture_line(line: str) -> Lecture: words = line.split(";") words = [w.strip() for w in words] name = words[0] count = float(words[1]) ects = int(words[2]) return Lecture(name, ects, count) pass study-effort/src/mystudy/main.py
@@ -1,12 +1,21 @@ from mystudy import lecture from mystudy.lecture import Lecture, parse_lecture_line from sys import argv lecture_count = input("Geben Sie die Anzahl der Veranstaltungen ein!") lecture_per_week = int(lecture_count) ects_input = input("Geben Sie die ECTS-Zahl der Vorlesung ein!") ects = int(ects_input) def read_file_to_lecture(filename: str) -> list[Lecture]: lectures = [] with open(filename, 'r') as file: while line := file.readline(): if len(line.strip()) > 0: l = parse_lecture_line(line) lectures.append(l) return lectures effort = lecture.lecture_effort(lecture_per_week, ects) text = lecture.format_lecture_effort("Mathematik", lecture_per_week, ects, effort) print(text) def main(): filename = argv[1] print(filename) lectures = read_file_to_lecture(filename) for l in lectures: print(l) study-effort/tests/mystudy/lecture_test.py
@@ -1,22 +1,42 @@ import unittest from mystudy import lecture from mystudy.lecture import Lecture, parse_lecture_line EPSILON = 0.01 class LectureTestCase(unittest.TestCase): def test_constructor(self): n = "Mathematik" ects = 5 f = 2.5 mathe2 = Lecture(n, ects, f) english = Lecture("English", 2, 1) print(mathe2) print(english) text = f"{mathe2} am Montag" text2 = f"{mathe2} im Studiengang MAM" print(text) class MyTestCase(unittest.TestCase): def test_something(self): ects_python = 2 lecture_per_week = 2 effort_per_week = lecture.lecture_effort(lecture_per_week, ects_python) self.assertEqual(effort_per_week, 1.0) # add assertion here def test_cal_effort(self): n = "Mathematik", ects = 5 f = 2.5 mathe2 = Lecture(n, ects, f) e1 = mathe2.cal_effort() # self.assertEqual(e1, 6) diff = abs(e1 - 6.25) self.assertTrue(diff < EPSILON) def test_format(self): ects = 3 lecture_per_week = 2 name = "Informatik" text = lecture.format_lecture_effort(name, lecture_per_week, ects, 8) self.assertTrue(text.index(f"{ects}") >= 0) self.assertTrue(text.index(name) >= 0) self.assertTrue(text.index("8")) e2 = mathe2.cal_effort(time_per_ects=20) diff = abs(e2 - 2.92) # self.assertEqual(e2, 7) self.assertTrue(diff < EPSILON) def test_parse_lecture_line(self): data = "English; 3; 2" english = parse_lecture_line(data) text = "Vorlesungsname English ECTS: 2" self.assertEqual(text, f"{english}") if __name__ == '__main__': study-effort/vorlesung.csv
New file @@ -0,0 +1,3 @@ Mathematik; 2.5; 5 Prog-2 ; 2 ; 5