Ich arbeite durch diese Kata und obwohl ich die Lösungen durchgesehen habe, sind keine so ähnlich wie meine, um meine Frage zu beantworten.Nehme eine Zahl und summiere ihre Ziffern
Problemtext: Die Zahl 89 ist die erste Ganzzahl mit mehr als einer Ziffer, die die teilweise im Titel dieser Kata eingeführte Eigenschaft erfüllt. Was nützt es, "Eureka" zu sagen? Weil diese Summe die gleiche Nummer gibt.
In Wirkung: 89 = 8^1 + 9^2
Die nächste Zahl in dieser Eigenschaft aufweist, ist 135.
diese Eigenschaft wieder Siehe: 135 = 1^1 + 3 + 5^2^3
Wir brauchen eine Funktion, um diese Zahlen zu sammeln, die zwei ganze Zahlen a, b erhalten können, die den Bereich [a, b] (inklusive) definieren und eine Liste der sortierten Zahlen in dem Bereich ausgeben, der die Eigenschaft erfüllt oben beschrieben.
def sum_dig_pow(a, b): # range(a, b + 1) will be studied by the function
# your code here
lst = []
n = 1
tot = 0
for i in range(a,b):
if i > 9:
spl = str(i).split()
for item in spl:
tot += int(item) ** n
n += 1
if tot == i:
lst.append(i)
else:
lst.append(i)
return lst
Tests zurückkehren „[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] sollte gleich [1, 2, 3, 4, 5, 6, 7, 8 , 9, 89] ". Ich kann nicht herausfinden, warum es 10 überschreitet und nicht 89 anfügt. Ich bin mir sicher, dass es einen effizienteren Weg gibt, dies zu tun, aber ich lerne immer noch so will in Grundlagen von Schleifen, Konditionalen, etc arbeiten.
Vielen Dank für Ihr Feedback! Ich weiß, enumerate ist wirklich nützlich bc ive verwendet es in der Vergangenheit, aber ich konnte nicht ganz vorstellen, wie es hier hilfreich war>. <. Hier ist die Lösung, die für mich funktionierte, PLZ Kommentar mit Aufräumarbeiten, etc !!
def sum_dig_pow(a, b): # range(a, b + 1) will be studied by the function
lst = []
for i in range(a,b+1):
if i > 9:
s = sum_dig(i)
if s == i:
lst.append(i)
else:
lst.append(i)
return lst
def sum_dig(num):
n = 1
tot = 0
for dig in str(num):
tot += int(dig)**n
n+=1
return tot
Ihr Leben wird einfacher, wenn Sie eine Funktion 'sum_of_digits' schreiben, um die Ziffern einer Zahl zu summieren. Auf diese Weise können Sie sich darauf konzentrieren, dass das Programm eigenständig funktioniert, und Sie können dann einen einzelnen Funktionsaufruf verwenden, dem Sie vertrauen. –
summieren Sie die * Potenzen * der Ziffern. –
@ juanpa.arrivillaga Danke für die Korrektur. –