Aufgabe in Python?

2 Antworten

Hinweis 1:

Man kann eine Potenz aⁿ mit n ∈ ℕ beispielsweise folgendermaßen berechnen...

  • Verwende z = 1 als erstes „Zwischenergebnis“.
  • Führe n-mal aus (beispielsweise mittels for-Schleife): Multipliziere das bisherige Zwischenergebnis mit a (und speichere den neuen Wert als neues Zwischenergebnis z).
  • Gebe dann das letzte Zwischenergebnis als Ergebnis zurück.

Bei 7³ wird dann beispielsweise folgendermaßen gerechnet...

  • z := 1
  • z := z * 7 = 1 * 7 = 7 (= 7¹)
  • z := z * 7 = 7 * 7 = 49 (= 7²)
  • z := z * 7 = 49 * 7 = 343 (= 7² * 7 = 7³)

=====

Hinweis 2:

In der Aufgabe kann n auch negativ sein. Führe eine Fallunterscheidung (mit if-Anweisung) durch, ob n negativ ist. Wenn n negativ ist bilde den entsprechenden positiven Wert -n und berechne zunächst a (mit dem Algorithmus für positiven Exponenten entsprechend Hinweis 1). Nutze dann...



============

Wenn du noch nicht zurecht kommst... Wobei hängst du denn? Kannst du dein(e) Problem(e) genauer eingrenzen? Oder hast du evtl. gar keine Probleme bei der eigentlichen Funktion, sondern mit dem Drumherum mit Nutzereingabe und so?

Mangels Lösungsansätzen von dir, anhand derer man feststellen könnte, wo es hakt, könnte ich noch einen möglichen Lösungsvorschlag anbieten. [Kannst bzw. solltest du aber vielleicht nicht zu schnell reingucken. Aber anhand von Lösungen kann man auch einiges lernen.] Nur für die Funktion (noch ohne geforderten Docstring und ohne folgende Überprüfung mit Nutzereingabe)...

def a_power_n(a, n):
    if n < 0:
        if a == 0:
            raise(ZeroDivisionError("Potenz mit Basis 0 und negativem Exponenten nicht definiert"))
        else:
            return(1/a_power_n(a, -n))
    else:
        z = 1
        for _ in range(n):
            z *= a
        return(z)

"a hoch n" bedeutet "Multipliziere a n-mal mit sich selbst".

Heißt du brauchst eine Schleife die von 1 bis n (bzw. von 0 bis n-1) läuft. Dafür kannst du in Python einfach die range-Funktion verwenden. Und darin multiplizierst du eine Variable n-mal mit a und somit das a n-mal mit sich selbst.

Das kann man z.B. so machen:

x = 1
for range von 1 bis n:
  x = x * a

Setz mal einen Wert für a und n ein, und probiere es aus.

Beispiel:

n = 2
a = 5

Der Code sähe dann so aus:

x = 1
for range von 1 bis 2:
  x = x * 5

Vor der Schleife:

x = 1

Erster Schleifendurchgang:

x = 5

Zweiter Schleifendurchgang:

x = 25

Wie du siehst steht in x letztendlich die Zahl 25.
Und 5^2 ergibt tatsächlich 25.

Woher ich das weiß:Studium / Ausbildung – Bachelor in Informatik 👨🏻‍🎓