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