From aea7c693d66c1d2feb45af951e2a8108b01211fb Mon Sep 17 00:00:00 2001 From: JonnyBravo Date: Thu, 24 Nov 2022 17:59:17 +0100 Subject: [PATCH] Donnerstagabend --- .../__pycache__/decorators.cpython-39.pyc | Bin 0 -> 724 bytes Donnerstag/__pycache__/vectors.cpython-39.pyc | Bin 1404 -> 3493 bytes Donnerstag/check_zip.py | 7 +++ Donnerstag/decorators.py | 21 ++++++++ Donnerstag/fakultät.py | 14 +++++ Donnerstag/v_calc.py | 18 ++++--- Donnerstag/vectors.py | 51 ++++++++++++++++-- 7 files changed, 100 insertions(+), 11 deletions(-) create mode 100644 Donnerstag/__pycache__/decorators.cpython-39.pyc create mode 100644 Donnerstag/check_zip.py create mode 100644 Donnerstag/decorators.py create mode 100644 Donnerstag/fakultät.py diff --git a/Donnerstag/__pycache__/decorators.cpython-39.pyc b/Donnerstag/__pycache__/decorators.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..62d5ba37a4ef40e6aa1a02685cb61725736f03cd GIT binary patch literal 724 zcmZ`%Jx}965S>{Y$9yEB1nDH2YtqC>AkiR%#MN$6AZU=~HHJH5qg`8wC=yL1LUScG z1x@~vTPpqn)xBB5hr}_~%+BuY%zHcIq}yF0$o0cbde1~pviU3un|-ML0i#LtgpNro z?O|o@>jkVz2Se(2Qslpj_}*OY8k}3Yr_9)N#1F+Rh*^YbJM&a&k(J6Q=ml(6;C<<%#1EjZ9iwoJ zb{wK}?7kyRWk{RO_BnQ-W*N6%Asw!RT+XxlWDYAcw-O>&95R5r@V^KCiRfrmfEkk* zV-AN@_Wnaa#YSp>&!THG`@v%scdh#Y!6V=$Vba4{-1l5794&Y9=`|lu3U@Cm-4xlL LYop91?1aHTf~tKL literal 0 HcmV?d00001 diff --git a/Donnerstag/__pycache__/vectors.cpython-39.pyc b/Donnerstag/__pycache__/vectors.cpython-39.pyc index f9f099244f51ecfb79a92bd6ec211b30dd92d971..e734b340e26feca7b8558697eeed761d8fee006f 100644 GIT binary patch literal 3493 zcmb7H&2Q936rUM;z0T%?0D%-rD;KJkRoeu@N2LlOpaeuqw^CDaSQS~0XR>kF^)6#O zlZPY1NN@R&IZ$0(*#`_f#Rl=)zo_TNl-kbM18_dpD7@nX1_$6#j zG4?ktCLbG%8yLwQ0Lkj?E|Xk}=S&L4`&M0GZAlwzTM4W!tV`0t+UbkBja6B?Sh>mu zwIrw3ShdnUTlpqPH&rW0qa@r^-UIb0ZEF<=&BXh<86=6SgpjxI;aJ_kNM-;Ot8-{0 zBnLl{Pd`v07_4gD*0nt=cYQw&TFUqHito4DGHcR&#`hm*L9?LjG3|hn0snrsyxDH4 z%%h-I1=G0<|nF zavE<}&d6E3r{tVGf_FvE%cFQt%VY95-ZOGRp1^xno`l60bEh~#NTwJ*bOsuCF%k-^ z9`7+9@j^c8UcMJcX%sZ0BvKl-^)7mMviMONwPP<1!cA{gcU9IOvcZ&6d!N^49_6S0Je~vUDRhZ}wY`rw3?Ngc5r+r^y7?o4j zV_UormG^iJ@~ozc^)#q^TvOn^DYESQ*x~y}iGh*GyK{wYAkmPjJa@E8GaVlgO@1?? z7ce2weZIw00Trx1Uu0`c9|56i=XQ!v(X>6cl2jXwG|4XLYaMR`@uhH2uQ6uhMR+#_rp0YwwO$Q6pGa#(QfW6(O&6()CuO zc;HO$Nu;H>LHkrgt;5mhf7+?ms#ad==qOHeXQQoA68`saQZ;>ladbE_VQfP>a5(a? zIUHp>jx{u@rT{(Egq4O$2Lbo)ND%KH9e8z2-6xBDPs0R%;ZA7`2)7o7gygEI)t#H! zhR!ysT+=c3gbAzM4s;`V)0uV(qrXo&kc*gbd3R9hmWUFXcq0lPijCn&JS<+Y4Q@)c zOQ*h#(Ap6x9NXtT@sf10Y6lKLVvb`ZbbtoT^>Ai~_xNvYf&DHX+la?e%|vd9r3*RV zMus{Y0hQl^Xfm;K4SAl1?N;adhhX&&2J4<3P z#(jW!y^K%Ns1p@3JfO4@g#0ti&H+E@^q{5eJZyWDn1MHq2&ODUJW|2kS{XoSHRdw?Uif4>&6o*QqTNm9y z&tsNb-Ke8a)65Av9TiJ$Y*;G7tJFrj)%8k}wOT5EqI8<`Am{62e~!!u1F({n%QH!q(VUI?(GXO5xJ_k$Z7E ziFi#Xsk+9Ag>_B0v8F4YC|!j z{4@$v-!v7)6|Uu4bCzr4T>_kTEwdxUj(rcgmY(DS!0!Srp-tZ$mS*CH3rW^0Sbk2NjN2(PRxyT_7+k_uV2Pq^ zOd5jbBSTQI4E?e@Q8+FEZ=wz@!d%3tE$GVxOxzi<6qWZd4iRe_LA88nsGB&ZZ}ZuK zTSL`EhblN5_C}DALFMTt$soMTXAsSraJ8zFqZ`R~h`$DN98)1BcW@)ZOx1M(%hB*0K|y3Jpcdz delta 586 zcmZutO-my|5bdv-bTWzPMFcN<$Yo$z7GYrz5^`AdCWyR4LeC@+FFEKB zSef78A>iGABGTx|zp)3aI&M~Qdze>UuU@^b?wkETt)sltX)#>iel7=6G4@Q!+a)pS z<6rI~0L$1h0}kSffw&YI2YJR)bv^%bD*g(;;>I#8u}lEZBnXgKEK{H$!Wcme4U92p zXku(Y3lfYP+Gy4B@eezwCT_**zF5ZO>O?L1LE^PBqw%ORM%NGGV;!mAU7VP$xQl{n z0}b5yhB06ZW0Lw#_0p7|IJ$~UHmYD9q^+T?%sekeM8En?6s<(C^(uG6(yiy9 z-q4{cTUI-mmNWqqnqMUAxj#{*zSU3Py)5k5t7II2AbR7Ty diff --git a/Donnerstag/check_zip.py b/Donnerstag/check_zip.py new file mode 100644 index 0000000..233a440 --- /dev/null +++ b/Donnerstag/check_zip.py @@ -0,0 +1,7 @@ +it1 = range(5) +it2 = range(100,105) + +for a, b in zip(it1, it2): + print(a) + print('-' * 20) + print(b) \ No newline at end of file diff --git a/Donnerstag/decorators.py b/Donnerstag/decorators.py new file mode 100644 index 0000000..743c248 --- /dev/null +++ b/Donnerstag/decorators.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +def counter(func): + def counting(*args, **kwargs): + counting.callcount += 1 + return func(*args, **kwargs) + counting.callcount = 0 + return counting + +def get_counter(func): + try: + return func.callcount + except: + return None + +def reset_counter(func): + try: + func.callcount + func.callcount = 0 + except: + return None diff --git a/Donnerstag/fakultät.py b/Donnerstag/fakultät.py new file mode 100644 index 0000000..66149c0 --- /dev/null +++ b/Donnerstag/fakultät.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +from decorators import counter, get_counter + + +@counter +def fak(n): + if type(n) is not int or n < 0: + raise TypeError("Illegal type") + if n == 0: + return 1 + return n * fak(n-1) + +print("6! =", fak(6)) +print("Anzahl Aufrufe:", get_counter(fak)) \ No newline at end of file diff --git a/Donnerstag/v_calc.py b/Donnerstag/v_calc.py index 355b932..6fda476 100644 --- a/Donnerstag/v_calc.py +++ b/Donnerstag/v_calc.py @@ -1,10 +1,14 @@ #!/usr/bin/env python3 -from vectors import Vector +from vectors import Vector, Vector2 -v1 = Vector(1, 2, 3, ) +v1 = Vector(1, 2, 3) v2 = Vector(4,0,1) -print(v1.get_values()) -del v2 -print("Jetzt wird v2 freigebe ") - -#print(v2) \ No newline at end of file +v3 = v1 * 3 +#v4 = v1 + v2 #.addition(v2) +#print(v3.get_values()) +print(str(v1)) +print(v3) +#print(v4.get_values()) +v5 = Vector2(1, 3) +print(v5 + 3) +print() \ No newline at end of file diff --git a/Donnerstag/vectors.py b/Donnerstag/vectors.py index a6712d4..0005b92 100644 --- a/Donnerstag/vectors.py +++ b/Donnerstag/vectors.py @@ -1,16 +1,31 @@ #!/usr/bin/env python3 """ Mathematische Vektorenals Klasse + +__magic_methods__ """ +class VectorError(Exception): + pass +class VectorTypeError(VectorError): + pass + + # Oberklassen werden automatisch vererbt class Vector(): - values = () + def __init__(self, *values): "Initialisierung 1 Funktion nach Erzeugen des Objekts" self.my_values = values - def __del__(self): + def __len__(self): #entspricht len länge in der class + return len(self.my_values) + + def __str__(self) -> str: #entspricht str string in der class + return type(self).__name__ + str(self.my_values) + + def __del__(self): "Destruktor: Letzte Funktion vor Freigabe des Speichers" print("Ein Objekt wird freigegeben ({})".format(self.my_values)) + def get_values(self): return self.my_values @@ -19,6 +34,24 @@ class Vector(): print("Aufruf") print(args) + def __mul__(self, factor): #entspricht multiplikation * in der class + multipi = [v * factor for v in self.my_values] + return type(self)(*multipi) ##Nicht vergessen * und classename + + def __add__(self, other): #entspricht addition + in der class + if not isinstance(self, Vector) or not isinstance(other, Vector): + raise VectorTypeError("Addition nur von Vektoren") + if len(self) !=len(other): + raise VectorTypeError("Vektoren ungleicher Laenge") + summenwert = [] + #zip iteriert ueber alle angegebenen Iterables parallel + for a, b in zip(self.get_values(), other.get_values()): + summenwert.append(a + b) + return type(self)(*summenwert) + + def info(self): + return type(self).__name__ + def poly(self, *args): if len(args) == 1: if type(args[0]) is str: @@ -29,5 +62,15 @@ class Vector(): self.poly_2param(*args) elif len(args) == 0: Vector.poly_0param(self, *args) - - \ No newline at end of file + + +class Vector2(Vector): + def __init__(self, val1, val2): + super().__init__(val1, val2) + + def __add__(self, other): + sum = [d + other for d in self.my_values] + # return super(self).__add__(Vector2.sum) + + def __mul__(self, factor): + return super().__mul__(factor) \ No newline at end of file