2016-03-30 8 views
0

Die folgende Funktion benötigt 3 Parameter (f, a und b). Hier ist f eine Funktion und a und b sind untere und obere Grenzen bzw. f ist die zu summierende Funktion. #Um die Summe von f von a berechnenWie ändere ich diesen Code, damit er mit Funktionen umgehen kann

def sum(f, a, b): 
total = 0 
for i in range(a, b+1): 
total += f(i) 
return total 

Frage 1. Geben Sie den obigen Code B und die Summe der ganzen Zahlen von 1 bis 10 und 1 bis 100 und 1 bis 1000

+0

initialisieren 'total' zu' 1 'und tun' total * = f (i) 'anstelle des' + = 'Operators? –

Antwort

0

berechnen Genauso wie das Hinzufügen von 0 nichts tut, multipliziert man mit 1 nichts. Verwenden Sie daher nur, dass als Start:

def product(f, a, b): 
    total = 1 
    for i in range(a, b+1): 
     total *= f(i) 
    return total 
+0

dann würden Sie Produkt drucken und dann die drei Werte übergeben oder? – TurtleDave

+0

@TurtleDave: Es hätte die gleiche Verwendung wie 'sum()'. – zondo

+0

Ich versuchte Drucksumme (f, 1,5) und nichts hat funktioniert? – TurtleDave

1

ähnliche Idee, aber verwenden *= statt +=

def product(f, a, b): 
    total = 1 
    for i in range(a, b+1): 
     total *= f(i) 
    return total 

Zum Beispiel

def foo(x): 
    return x 

>>> product(foo, 1, 5) 
120 
+0

so habe ich Produkt (f, 1,5) versucht, aber es sagt Syntaxfehler – TurtleDave

+0

@CoryKramer, Sie, ich habe einige von Ihnen Code für meine Antwort verwendet –

0

oder einen funktionellen Stil und Sie werden kommen zum Erfolg:

def product(f, a, b): 
    return reduce(lambda x, y: x*y, [f(n) for n in range(a, b+1)]) 

Run mit Funktion zB gehen spam:

def spam(x): 
    return x 

print(product(spam, 1, 3)) 

>>>6 

Edited:

W/o f param wird es aussieht:

def product(a, b): 
    return reduce(lambda x, y: x*y, [n for n in range(a, b+1)]) 
print(product(1, 5)) 
+0

Wie würde ich die Antwort drucken? – TurtleDave

+0

@TurtleDave, bearbeitet –

+0

Okay, verstehe ich nicht das Konzept des def Spam-Teils? Sobald Sie das Produkt definiert haben, können Sie den Spam nachträglich entfernen? – TurtleDave

Verwandte Themen