From c97d23edee3e224f1bcba0add74b61934ad69ff7 Mon Sep 17 00:00:00 2001
From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de>
Date: Mon, 02 Jun 2025 11:34:19 +0200
Subject: [PATCH] Vorlesung 02.06.2025

---
 /dev/null                     |   23 -----------
 polymonial/polynomial.py      |   22 +++++++++++
 polymonial/README.md          |   23 +++++++++++
 polymonial/polynomial_test.py |   28 ++++++++++++++
 4 files changed, 73 insertions(+), 23 deletions(-)

diff --git a/04-schleife/canvas-bezier/blumen.py b/04-schleife/canvas-bezier/blumen.py
deleted file mode 100644
index 1641f3c..0000000
--- a/04-schleife/canvas-bezier/blumen.py
+++ /dev/null
@@ -1,23 +0,0 @@
-import turtle
-
-fenster_breite = 800
-fenster_hoehe = 800
-
-screen = turtle.Screen()
-
-screen.setup(fenster_breite, fenster_hoehe)
-
-anna = turtle.Turtle()
-
-b = 100
-h = 100
-
-pental = 5
-winkel = 360/pental
-
-for i in range(0,pental):
-    anna.circle(b)
-    anna.left(winkel)
-
-turtle.done()
-
diff --git a/polymonial/README.md b/polymonial/README.md
new file mode 100644
index 0000000..8597a22
--- /dev/null
+++ b/polymonial/README.md
@@ -0,0 +1,23 @@
+Eine Implementierung von Polynome als Python-Klasse nebst Unittest
+
+**Virtuelle Umgebung**
+(Wenn PyCharm nicht automatisch eine Umgebung erstellt)
+
+```shell
+python -m venv .venv
+```
+
+(Danach das Projekt mit der virtuellen Umgebung .venv verknüpfen!)
+
+**Dependencies**
+
+```shell
+pip install pytest pytest-cov
+```
+
+**Run Unit-Test**
+
+```shell
+pytest *_test.py
+```
+
diff --git a/polymonial/polynomial.py b/polymonial/polynomial.py
new file mode 100644
index 0000000..0f8052e
--- /dev/null
+++ b/polymonial/polynomial.py
@@ -0,0 +1,22 @@
+class Polynomial:
+    def __init__(self, *argv: float):
+        self.__coefficients = []
+        for c in argv:
+            self.__coefficients.append(c)
+
+    def __repr__(self) -> str:
+        coe = []
+        for c in self.__coefficients:
+            coe.append(f'{c}')
+        return ' '.join(coe)
+
+    def __str__(self):
+        return self.__repr__()
+
+    def  evaluate(self, x: float) -> tuple[float, list[float]]:
+        p = self.__coefficients[-1]
+        c = [p]
+        for ak in self.__coefficients[-2::-1]:
+            p = ak + (p * x)
+            c.insert(0, p)
+        return c[0], c[1:]
\ No newline at end of file
diff --git a/polymonial/polynomial_test.py b/polymonial/polynomial_test.py
new file mode 100644
index 0000000..fc49e68
--- /dev/null
+++ b/polymonial/polynomial_test.py
@@ -0,0 +1,28 @@
+from polynomial import Polynomial
+EPSILON = 0.001
+
+def test_polynomial_representation():
+    c = Polynomial(5, 6, 0, -7)
+    s = f'{c}'
+    assert s == '5 6 0 -7'
+
+def test_evaluate():
+    l = Polynomial(-12.5, 3.6)
+    x = 0.0
+    (y, rest) = l.evaluate(x)
+    assert abs(y + 12.5) < EPSILON
+
+def test_evaluate_2():
+    l = Polynomial(11, 7, -5, -4, 2)
+    x = 2
+    rest_expected = [-3, -5, 0, 2]
+    y_expected = 5
+    (y, rest) = l.evaluate(x)
+
+    assert abs(y - y_expected) < EPSILON
+    for (i, r) in enumerate( rest_expected ):
+        assert abs(r - rest[i]) < EPSILON
+
+
+if __name__ == "__main__":
+    test_evaluate_2()
\ No newline at end of file

--
Gitblit v1.10.0-SNAPSHOT