Neulich habe ich mich für "Python" entschieden, also bin ich zum Anfang zurückgekehrt und habe so etwas wie eine Grundübung gemacht Ich habe versucht, so etwas wie "den Durchschnitt der Summe von 1 bis 10" zu machen. Einführung der Lösung zu diesem Zeitpunkt
# -*- coding: utf-8 -*-
def normal_average(start, end):
#0 soll bei der Berechnung des Durchschnitts float sein.Initialisierung auf 0
sum = 0.0
size = end - start + 1
for i in range(start, end + 1):
sum += i
else:
print "normal_average = %f"%(sum/size)
start = 1
end = 10
normal_average(start, end)
Ergebnis normal_average = 5.500000
Es besteht das Gefühl, dass der Teil "+ 1" nicht gut ist, aber in Ordnung
python
Ich bin ein Anfänger, also sind die schlechten Dinge süß
def another_average(start, end):
print "another_average = %f"%((start + end)/2.0)
start = 1
end = 10
another_average(start, end)
Ergebnis another_average = 5.500000
Ich dachte, dass der Durchschnitt der Summe aufeinanderfolgender Ganzzahlen keine Schleife sein sollte, ohne sie zu drehen, also schrieb ich sie. Ich frage mich, ob diese Art des Lösens auch eine Ameise ist Dies sollte sich mit zunehmender Anzahl auf die Verarbeitungsgeschwindigkeit auswirken.
Je größer die Zahl, desto größer der Unterschied. Dieses Mal werde ich versuchen, den Durchschnitt der Summen von "1 bis 100 Millionen" zu ermitteln.
# -*- coding: utf-8 -*-
import time
def normal_average(start, end):
sum = 0.0
size = end - start + 1
for i in range(start, end + 1):
sum += i
else:
print "normal_average = %f"%(sum/size)
def another_average(start, end):
print "another_average = %f"%((start + end)/2.0)
#Hauptgeschäftsführer
start = 1
end = 100000000
#Messung der Ausführungszeit
normal_start_time = time.time()
normal_average(start, end)
normal_end_time = time.time()
print "execute time is %f"%(normal_end_time - normal_start_time)
print
another_start_time = time.time()
another_average(start, end)
another_end_time = time.time()
print "execute time is %f"%(another_end_time - another_start_time)
Ergebnis normal_average = 50000000.500000 execute time is 12.961456 another_average = 50000000.500000 execute time is 0.000006
(Ist es nicht überwältigend? Unsere Armee ...!) Offensichtlich ist die Verarbeitungsgeschwindigkeit unterschiedlich.
Es wird gesagt, dass Sie überwältigend schnelle Ergebnisse erzielen können, wenn Sie die Logik zuerst ändern. Natürlich ist diese Lösung nicht ohne Probleme, aber zumindest ist sie schneller als eine Schleife erforderlich, um den "Durchschnitt der Summe aufeinanderfolgender Ganzzahlen" zu erhalten. Es war eine Lektion, dass es wichtig war, den Standpunkt zu ändern und das Problem zu lösen.
Recommended Posts