2016-10-15 2 views
-1

Ich bin froh hier zu sein! Ich habe eine Frage zu meinem Python Prp Programmierkurs, den ich habe zu kämpfen, um zu begreifen! Diese Zuweisung hat eine Frage und grundsätzlich muss ich die Funktion Power (x, n) definieren, die den Wert x auf die Potenz von n anheben muss! Ich bin nicht berechtigt, den Operator "**" zu verwenden, und wir können auch nur das verwenden, was in der Klasse gelernt wurde, also im Wesentlichen mit if-else-Anweisungen, boolescher Algebra, Range und for-Schleifen! Es muss nur ein Wert für die eingegebenen Werte zurückgegeben werden! Hilfe wird sehr geschätzt, da ich mit diesem Konzept kämpfe! Die Bereichsfunktion muss verwendet werden ... Danke! :)Verwenden der Python-Bereichsfunktion für die Multiplikation

+0

andere Wie Sie Ihre Hausaufgaben vollständig besiegt den Zweck zu tun. –

Antwort

0

Try this:

def power(x, n): 
    result = 1 
    for i in range(n): 
     result *= x 
    return result 

, die Ihnen die richtigen Antworten gibt. Beispiele:

>>> power(2, 3) 
8 
>>> 2**3 
8 
>>> 
>>> power(4, 6) 
4096 
>>> 4**6 
4096 

Oder wenn Sie erlaubt die Mathematik-Modul zu verwenden, können Sie Negative und Fraktionen sind durch verallgemeinern zu:

def power(x, n): 
    return math.exp(math.log(x) * n) 

Rückkehr:

>>> power(2, 0.5) 
1.414213562373095 
>>> power(2, -1) 
0.5 
>>> 
+0

Ja, das hat perfekt funktioniert, es ist so einfach in deinem Code! Mit was ich gekämpft habe, ist die eigentliche Logik hinter der Mathematik! Ich habe noch zwei Fragen, die ich jetzt versuchen werde, nachdem ich gesehen habe, wie du das gemacht hast! Danke :) –

+0

Könnte außerhalb des Geltungsbereichs sein, aber was ist mit Negativen oder nicht ganzen Zahlen? – Simon

+0

Verallgemeinern Sie es zu: 'math.exp (math.log (x) * n)'. – rassar

-1

Durch Rekursion statt es ist hübscher.

def power(n, k): 
    return 1 if k == 0 else n*power(n, k-1) 

oder

def power(n, k): 
    if k < 0: 
     return 1/power(n, abs(k)) 
    return 1 if k == 0 else n*power(n, k-1) 

Aber wenn Sie ein Range-Objekt verwenden müssen, können Sie es stattdessen aus der Addition aufbauen.

def multiply(n, k): 
    return sum(n for _ in range(k)) 

def power(n, k): 
    return sum(multiply(n, n) for _ in range(k-1)) if k != 0 else 1 

sonst könnte man es machen wie

def power1(n, k): 
    return sum(n*n for _ in range(k-1)) if k != 0 else 1