'''EPR Übungsblatt 02''' __author__ = "7987847, Werner" # Aufgabe 2 # a) def sum_range(start:int, end:int) -> int: '''Summe aller Zahlen von m bis n m: Startwert n: Endwert ''' if start > end: start, end = end, start return sum(range(start, end+1)) print("Es wird die Summe aller Zahlen von m bis n berechnet.") print("Geben Sie m und n ein.") print(sum_range(int(input("m: ")), int(input("n: ")))) # Testfälle # sum_range(0, 0) # Ausgabe: 0 # sum_range(0, 1) # Ausgabe: 1 # sum_range(-2, 234534634737) # b) def halbiere_bis_null(zahl:int) -> int: '''Anzahl der Schritte, bis n <= 1 n: Zahl, die halbiert werden soll ''' schritte = 0 while zahl != 0: zahl /= 2 schritte += 1 return schritte print("Es wird die Anzahl der Schritte berechnet, bis n <= 1 ist.") print("Geben Sie n ein.") print(halbiere_bis_null(int(input("n: ")))) # Testfälle # halbiere_bis_null(0) # Ausgabe: 0 # halbiere_bis_null(1) # Ausgabe: 1 # halbiere_bis_null(2) # Ausgabe: 2 # c) def erzeuge_schachfeld(zeilen:int, spalten:int): '''Erzeugt ein Schachfeld mit n Zeilen und m Spalten n: Anzahl der Zeilen m: Anzahl der Spalten ''' for i in range(zeilen): for j in range(spalten): # Wenn sowohl die Zeile als auch die Spalte gerade oder ungerade # ist, ist es Schwarz (1), # ansonsten ist es Weiß (0). if (i + j) % 2 == 0: print("0", end=" ") else: print("1", end=" ") print() print("Es wird ein Schachfeld erzeugt.") print("Geben Sie die Anzahl der Zeilen (n) und Spalten (m) ein.") erzeuge_schachfeld(int(input("n: ")), int(input("m: "))) # Testfälle # erzeuge_schachfeld(0, 0) # Ausgabe: # erzeuge_schachfeld(1, 1) # Ausgabe: 0 # erzeuge_schachfeld(7, 7) # Ausgabe: # 0 1 0 1 0 1 0 # 1 0 1 0 1 0 1 # 0 1 0 1 0 1 0 # 1 0 1 0 1 0 1 # 0 1 0 1 0 1 0 # 1 0 1 0 1 0 1 # 0 1 0 1 0 1 0 # d def catalansche_konstante_approximation(anzahl_terme:int) -> float: '''Approximation der catalanschen Konstante anzahl_terme: Anzahl der Terme, die zur Approximation verwendet werden sollen ''' catalan_summe = 0.0 for zahl in range(anzahl_terme): term = 1 / ((2 * zahl + 1) ** 2) catalan_summe += term return catalan_summe print("Es wird die catalansche Konstante approximiert.") print("Geben Sie die Anzahl der Terme ein, um die Konstante zu approximieren.") print(catalansche_konstante_approximation(int(input("Anzahl Terme: ")))) # Testfälle # catalansche_konstante_approximation(0) # Ausgabe: 0.0 # catalansche_konstante_approximation(1) # Ausgabe: 1.0 # catalansche_konstante_approximation(1000) # Ausgabe: 1.2334505501570059 # e def differenz_zwischen_approximationen(start:int, ende:int, schrittweite:int) -> float: '''Gibt die Differenz zwischen zwei Approximationen der catalanschen Konstante aus start: Startwert ende: Endwert schrittweite: Schrittweite ''' for zahl in range(start, ende, schrittweite): erster_wert = catalansche_konstante_approximation(zahl) zweiter_wert = catalansche_konstante_approximation(zahl + schrittweite) differenz = zweiter_wert - erster_wert print(f"n = {zahl} : {erster_wert} ; n = {zahl + schrittweite} : {zweiter_wert}") print(f"Differenz: {differenz}\n") print("Es wird die Differenz zwischen zwei Approximationen der catalanschen Konstante ausgegeben.") print("Geben Sie den Startwert, Endwert und die Schrittweite ein.") differenz_zwischen_approximationen(int(input("Startwert: ")), int(input("Endwert: ")), int(input("Schrittweite: "))) # Testfälle # differenz_zwischen_approximationen(0, 1000, 100) # Ausgabe: # n = 0 : 0.0 ; n = 100 : 1.231200570968774 # Differenz: 1.231200570968774 # n = 100 : 1.231200570968774 ; n = 200 : 1.2324505527403138 # Differenz: 0.0012499817715396766 # n = 200 : 1.2324505527403138 ; n = 300 : 1.2328672175744397 # Differenz: 0.000416664834125946 # n = 300 : 1.2328672175744397 ; n = 400 : 1.2330755504616913 # Differenz: 0.00020833288725152777 # n = 400 : 1.2330755504616913 ; n = 500 : 1.2332005503028372 # Differenz: 0.0001249998411458897 # n = 500 : 1.2332005503028372 ; n = 600 : 1.2332838835659545 # Differenz: 8.333326311737999e-05 # n = 600 : 1.2332838835659545 ; n = 700 : 1.233343407339766 # Differenz: 5.952377381146512e-05 # n = 700 : 1.233343407339766 ; n = 800 : 1.2333880501768604 # Differenz: 4.464283709437744e-05 # n = 800 : 1.2333880501768604 ; n = 900 : 1.2334227723869715 # Differenz: 3.472221011113774e-05 # n = 900 : 1.2334227723869715 ; n = 1000 : 1.2334505501570059 # Differenz: 2.7777770034376204e-05 # differenz_zwischen_approximationen(-3, 5, 1) # Ausgabe: # n = -3 : 0.0 ; n = -2 : 0.0 # Differenz: 0.0 # n = -2 : 0.0 ; n = -1 : 0.0 # Differenz: 0.0 # n = -1 : 0.0 ; n = 0 : 0.0 # Differenz: 0.0 # n = 0 : 0.0 ; n = 1 : 1.0 # Differenz: 1.0 # n = 1 : 1.0 ; n = 2 : 1.1111111111111112 # Differenz: 0.11111111111111116 # n = 2 : 1.1111111111111112 ; n = 3 : 1.1511111111111112 # Differenz: 0.040000000000000036 # n = 3 : 1.1511111111111112 ; n = 4 : 1.1715192743764173 # Differenz: 0.020408163265306145 # n = 4 : 1.1715192743764173 ; n = 5 : 1.183864953388763 # Differenz: 0.012345679012345734 # differenz_zwischen_approximationen(0, 0, 1) # Ausgabe: