From 1573155ab5de837bf4e80ee7349ddf5dffe2f20a Mon Sep 17 00:00:00 2001
From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de>
Date: Mon, 17 Jun 2024 07:55:08 +0200
Subject: [PATCH] demo directory structure

---
 funktion-modular/luhn/creadit-validation.py              |   29 ++++
 study-effort/src/mystudy/main.py                         |   12 ++
 study-effort/tests/mystudy/lecture_test.py               |   22 +++
 funktion-modular/time-interval/time_interval.py          |   28 ++++
 turtle-dreieck/decoration.py                             |   24 ++++
 funktion-modular/temperatur/temperatur-messung.csv       |   12 ++
 funktion-modular/time_interval_mod/time_interval.py      |   32 +++++
 funktion-modular/time_interval_mod/time_interval_test.py |   19 +++
 study-effort/src/mystudy/lecture.py                      |   22 +++
 study-effort/tests/mystudy/__init__.py                   |    0 
 study-effort/src/mystudy/__init__.py                     |    0 
 study-effort/README.md                                   |   14 ++
 funktion-modular/time_interval_mod/main.py               |   20 +++
 funktion-modular/time-interval/time_interval_test.py     |   26 ++++
 funktion-modular/temperatur/temperatur-plot.py           |   19 +++
 study-effort/pyproject.toml                              |   17 ++
 turtle-dreieck/dreieck.py                                |   14 ++
 17 files changed, 310 insertions(+), 0 deletions(-)

diff --git a/funktion-modular/luhn/creadit-validation.py b/funktion-modular/luhn/creadit-validation.py
new file mode 100644
index 0000000..deaf548
--- /dev/null
+++ b/funktion-modular/luhn/creadit-validation.py
@@ -0,0 +1,29 @@
+def calculate_luhn(number: int) -> int:
+    """
+    calculate the Luhn-Checksum of a given number
+    :param number:
+    :return:
+    """
+    checksum = 0
+    while number != 0:
+        (quote, even) = divmod(number, 10)
+        (number, odd) = divmod(quote, 10)
+        print(f"odd = {odd} even = {even} ", end="")
+        checksum += even
+        odd = (odd*2)
+        if odd > 9:
+            odd = odd - 9
+        print(f"twice_odd = {odd}, ", end="")
+        checksum += odd
+        print(f"sum = {checksum}")
+    print(checksum)
+    return checksum % 10
+
+valide = [
+ 3_78_28_22_46_31_00_05, 3_71_44_96_35_39_84_31,
+60_11_11_11_11_11_11_17, 5105105105105100
+]
+
+cs = calculate_luhn(valide[1])
+print(cs)
+
diff --git a/funktion-modular/temperatur/temperatur-messung.csv b/funktion-modular/temperatur/temperatur-messung.csv
new file mode 100644
index 0000000..dee1939
--- /dev/null
+++ b/funktion-modular/temperatur/temperatur-messung.csv
@@ -0,0 +1,12 @@
+# Messfrequenz: Minuten
+# Temperatur in Celcius
+# Werten in einer Datei sind innerhalb von einem Tag
+# Trennzeichen für Spalten ;
+# Trennzeichen für Dezimal-Anteil .
+
+
+00:00 ; 15.6
+00:01 ; 15.8
+0:3   ; -9.0
+0:4   ; ?
+
diff --git a/funktion-modular/temperatur/temperatur-plot.py b/funktion-modular/temperatur/temperatur-plot.py
new file mode 100644
index 0000000..1f61c33
--- /dev/null
+++ b/funktion-modular/temperatur/temperatur-plot.py
@@ -0,0 +1,19 @@
+# Eine Zeile in ein Tupel
+# Uhrzeit wird in Anzahl der Minuten ab 0 Uhr konvertiert
+# Temperatur wird in float konvertiert
+
+from typing import Final
+
+COLUMN_SEP : Final[str] = ";"
+
+def parser_time(time:str) -> int:
+    return 8
+
+def parser_temperatur(temperatur: str) -> float:
+    return -2.6
+
+
+def parser_line(line: str) -> tuple[int, float]:
+    parts = line.split(COLUMN_SEP)
+    parts = [p.strip() for p in parts]
+    time, temp =
diff --git a/funktion-modular/time-interval/time_interval.py b/funktion-modular/time-interval/time_interval.py
new file mode 100644
index 0000000..a40f9d7
--- /dev/null
+++ b/funktion-modular/time-interval/time_interval.py
@@ -0,0 +1,28 @@
+"""
+
+python timeinterval 8:20 10:30
+
+
+"""
+
+def zeit_in_minute(zeit: str) -> int:
+    (h,m) = zeit.split(":")
+    h = int(h)
+    m = h*60 + (int(m))
+    return m
+
+
+def zeit_differenz(start, end):
+    return abs(start - end)
+
+
+
+if __name__ == "__main__":
+    # eingabe entgegen nehmen
+    start_zeit = input("startzeit")
+    ende_zeit = input("endzeit")
+    start_minuten = zeit_in_minute(start_zeit)
+    end_minute = zeit_in_minute(ende_zeit)
+    diff = zeit_differenz(start_minuten, end_minute)
+    print(diff)
+
diff --git a/funktion-modular/time-interval/time_interval_test.py b/funktion-modular/time-interval/time_interval_test.py
new file mode 100644
index 0000000..2192f90
--- /dev/null
+++ b/funktion-modular/time-interval/time_interval_test.py
@@ -0,0 +1,26 @@
+import unittest
+import time_interval as ti
+
+class TimeIntervalTestCase(unittest.TestCase):
+    def test_zeit_in_minute(self):
+        uhrzeit = "8:00"
+        time_from_zero = ti.zeit_in_minute(uhrzeit)
+        expected = 8*60
+        self.assertEqual(time_from_zero, expected)
+
+    def test_zeit_in_minute_2(self):
+        uhrzeit = "8:13"
+        time_from_zero = ti.zeit_in_minute(uhrzeit)
+        expected = 8 * 60 + 13
+        self.assertEqual(time_from_zero, expected)
+
+    def test_zeit_difference(self):
+        s = 6*60 + 30
+        e = 14*60 + 15
+        d = ti.zeit_differenz(s, e)
+        expected = 7*60 + 45
+        self.assertEqual(d, expected)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/funktion-modular/time_interval_mod/main.py b/funktion-modular/time_interval_mod/main.py
new file mode 100644
index 0000000..b46db52
--- /dev/null
+++ b/funktion-modular/time_interval_mod/main.py
@@ -0,0 +1,20 @@
+"""
+
+python main.py 8:00 10:10
+130
+"""
+
+import sys
+from time_interval import to_minute, print_diff
+
+start_time = sys.argv[1]
+end_time = sys.argv[2]
+
+start_minute = to_minute(start_time)
+end_minute = to_minute(end_time)
+diff = end_minute - start_minute
+
+message = print_diff(start_time, end_time, diff)
+print(message)
+
+
diff --git a/funktion-modular/time_interval_mod/time_interval.py b/funktion-modular/time_interval_mod/time_interval.py
new file mode 100644
index 0000000..0166fc3
--- /dev/null
+++ b/funktion-modular/time_interval_mod/time_interval.py
@@ -0,0 +1,32 @@
+#! /usr/bin/env python
+
+
+"""
+
+"""
+
+def to_minute(time: str) -> int:
+    t = time.split(":")
+    if len(t) == 1:
+        return int(t[0])*60
+    return int(t[0])*60 + int(t[1])
+
+
+def to_time(diff: int) -> tuple[int, int]:
+    return divmod(diff, 60)
+
+
+def print_diff(start_time, end_time, diff) -> str:
+    h,m = to_time(diff)
+    if h == 1:
+        stunde = "1 Stunde"
+    else:
+        stunde = f"{h} Stunden"
+    if m == 1:
+        minute = "1 Minute"
+    else:
+        minute = f"{m} Minuten"
+    return f"Zwischen {start_time} und {end_time} sind {stunde} und {minute} vergangen."
+
+
+# Zwischen 8:00 und 9:20 sind 1 Stunde und 20 Minuten vergangen.
\ No newline at end of file
diff --git a/funktion-modular/time_interval_mod/time_interval_test.py b/funktion-modular/time_interval_mod/time_interval_test.py
new file mode 100644
index 0000000..440c157
--- /dev/null
+++ b/funktion-modular/time_interval_mod/time_interval_test.py
@@ -0,0 +1,19 @@
+import unittest
+from time_interval import to_minute
+
+class TimeIntervalTestCase(unittest.TestCase):
+    def test_to_minute(self):
+        time = "9:20"
+        minutes = to_minute(time)
+        expected = 9*60 + 20
+        self.assertEqual(minutes, expected)
+
+    def test_to_minute2(self):
+        time = "9"
+        minutes = to_minute(time)
+        expected = 9*60
+        self.assertEqual(minutes, expected)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/study-effort/README.md b/study-effort/README.md
new file mode 100644
index 0000000..51a4b67
--- /dev/null
+++ b/study-effort/README.md
@@ -0,0 +1,14 @@
+# Demo Structure
+
+Wie viel Zeitaufwand muss ich für mein Studium investieren?
+
+
+## Beschreibung
+....
+
+## Referenz
+
+
+
+
+
diff --git a/study-effort/pyproject.toml b/study-effort/pyproject.toml
new file mode 100644
index 0000000..26b7f61
--- /dev/null
+++ b/study-effort/pyproject.toml
@@ -0,0 +1,17 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "study-effort"
+version = "0.0.1"
+
+[tool.setuptools.packages.find]
+# All the following settings are optional:
+where = ["src"]
+
+
+
+[project.scripts]
+mystudy = "mystudy.main:main"
+
diff --git a/study-effort/src/mystudy/__init__.py b/study-effort/src/mystudy/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/study-effort/src/mystudy/__init__.py
diff --git a/study-effort/src/mystudy/lecture.py b/study-effort/src/mystudy/lecture.py
new file mode 100644
index 0000000..778a4bb
--- /dev/null
+++ b/study-effort/src/mystudy/lecture.py
@@ -0,0 +1,22 @@
+from typing import Final
+
+lecture_time: Final[int] = 15
+ects_effort: Final[int] = 30
+
+
+def lecture_effort(lecture_pre_week, ects):
+    """
+    :param lecture_pre_week: wie viel Veranstaltungen hat eine Vorlesung in der Woche
+    :param ects: Anzahl der ECTS der Vorlesung
+    :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)
+
+
+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."
+
+
+
diff --git a/study-effort/src/mystudy/main.py b/study-effort/src/mystudy/main.py
new file mode 100644
index 0000000..ea39cff
--- /dev/null
+++ b/study-effort/src/mystudy/main.py
@@ -0,0 +1,12 @@
+import lecture
+
+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)
+
+effort = lecture.lecture_effort(lecture_per_week, ects)
+text = lecture.format_lecture_effort("Mathematik", lecture_per_week, ects, effort)
+
+print(text)
diff --git a/study-effort/tests/mystudy/__init__.py b/study-effort/tests/mystudy/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/study-effort/tests/mystudy/__init__.py
diff --git a/study-effort/tests/mystudy/lecture_test.py b/study-effort/tests/mystudy/lecture_test.py
new file mode 100644
index 0000000..329c872
--- /dev/null
+++ b/study-effort/tests/mystudy/lecture_test.py
@@ -0,0 +1,22 @@
+import unittest
+import lecture
+
+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_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"))
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/turtle-dreieck/decoration.py b/turtle-dreieck/decoration.py
new file mode 100644
index 0000000..b0e0246
--- /dev/null
+++ b/turtle-dreieck/decoration.py
@@ -0,0 +1,24 @@
+import turtle as t
+
+alpha = 12
+beta = 2*alpha
+gamma = 180 - beta
+
+steps = 100
+petals = 5
+
+init_angle = 5
+
+for i in range(0, petals):
+    start_angle = init_angle + (i * 360 / petals)
+    t.setheading(start_angle)
+    t.left(alpha)
+    t.fd(steps)
+    t.right(beta)
+    t.fd(steps)
+    t.right(gamma)
+    t.fd(steps)
+    t.right(beta)
+    t.fd(steps)
+
+t.done()
diff --git a/turtle-dreieck/dreieck.py b/turtle-dreieck/dreieck.py
new file mode 100644
index 0000000..ae0c22a
--- /dev/null
+++ b/turtle-dreieck/dreieck.py
@@ -0,0 +1,14 @@
+import turtle as t
+
+steps = 200
+corner = 7
+alpha = 360 / corner
+
+
+for i in range(0, corner):
+    t.fd(steps)
+    t.left(alpha)
+
+
+t.done()
+

--
Gitblit v1.10.0-SNAPSHOT