Auf hunderter, tausender, ... runden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Gibts einen einfachen Weg so etwas zu machen:

Code: Alles auswählen

>>> round_it(756)
800
>>> round_it(345)
300
Ich hab mir gerade eine Funktion geschrieben, die das kann, aber die is über 10 Zeilen lang (und ich schäme mich dafür :oops:). Muss doch kürzer gehen. Oder gibts da schon etwas eingebautes?

Gruß, mawe
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Kann man das nicht irgendwie mit %d machen??? Also auf zwei Nachkommastellen runden geht mit %.2d
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi jens!

Das mit den Nachkommastellen kenn ich, man kann auch mit "%03i" Nullen vor die Zahl stellen, aber dahinter..., und gerundet... ?

Gruß, mawe
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wie kommst du auf 10 Zeilen?

Code: Alles auswählen

def round_it(num):
    l = len(str(num)) - 1
    rounded = round(num / 10.0 ** l)
    rounded = int(rounded * 10 ** l)
    return rounded
Könnte man sicher noch kürzer fassen (eine Zeile!), wäre aber nicht mehr lesbar ;)

Edit: Okay, ich konnte es nicht lassen noch eine absolut unlesbere Einzeilerlösung zu machen:

Code: Alles auswählen

round_it = lambda num: int(round(num / 10.0 ** (len(str(num)) - 1)) * 10 ** (len(str(num)) - 1))
Kinder, nicht nachmachen oder versuchen es zu verstehen! Habe ich aus dem Vierzeiler per Copy and Paste erstellt.
Zuletzt geändert von Leonidas am Donnerstag 3. März 2005, 20:14, insgesamt 2-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi Leonidas!

Wie ich auf 10 Zeilen komme? Nachdem ich Deine Lösung gesehen habe, möchte ich darüber lieber den Mantel des Schweigens legen :oops:

Vielen Dank!

Gruß, mawe
Antworten