Quersumme für eine Zahl n bilden:
Ein Ansatz mit Generator und Stringoperation
def quersumme_bilden(n):
''' Gibt die Quersumme für eine Zahl n zueruck
'''
return sum(int(a) for a in str(n))
for i in range(10,89):
print(i,quersumme_bilden(i))
In diesem Fall nutze ich einmal einen Generator anstelle von List Comprehension. Problem hier ist, dass keine Prüfung erfolgt, ob die übergebene Zahl n der Definition entspricht, d. h. ob es sich um eine natürliche Zahl handelt. Ein Fehler wird vom Programm selbst nicht ausgelöst oder behandelt.
Ein zweiter Ansatz mit Modulo und Ganzzahldivision
Auch diese Funktion gibt die Quersumme einer Ganzzahl aus:
def quersumme_bilden(n):
''' Ohne n in einen String
umzuwandeln, soll die Quersumme
berechnet werden
'''
quersumme = 0
while n > 0:
quersumme += n % 10
n = n // 10
return quersumme
print(format("Eingabe","10s"),format("Quersumme","10s"),sep=" ")
print("-" * 21)
for n in [9873216540,987654321,1004,25,36,29,49,18]:
print(format(n,"10d"),format(quersumme_bilden(n),"10d"))
Im Augenblick könnte ich nicht sagen, welcher Ansatz schneller ist. Eigentlich sollte der zweite Ansatz performanter sein, weil keine Liste erzeugt und keine Typumwandlung erforderlich ist.
Keine Kommentare:
Kommentar veröffentlichen