Gut, das Problem ist einfach zu Lösen. Ich habe jedoch zwei Lösungen und kann mich nicht wirklich für eine entscheiden. Deshalb und vor allem aus Neugierde möchte ich von euch wissen welches ist der schönste weg
Meine zwei Versionen:
o(n) - ~ 4.5 usec/durchlauf
Code: Alles auswählen
def byteformat(n, units=('', 'kilo', 'mega', 'giga', 'terra')):
i = 0
while n >= 1024.0 and i < len(units):
n /= 1024.0
i += 1
return "%.2f %sbytes" % (n, units[i])
Code: Alles auswählen
def byteformatlog(n, units=('', 'kilo', 'mega', 'giga', 'terra')):
i = int(math.log(n, 1024))
if i >= len(units): i = len(units) - 1
n /= 1024.0**i
return "%.2f %sbytes" % (n, units[i])
Was meint ihr dazu? Hat jemand eine hübschere Lösung?