Python integer zerlegen?

... komplette Frage anzeigen

3 Antworten

Denk einmal daran, wie das Dezimalsystem funktioniert.

Z.b. 123 mod 10 = 3

abrunden(123 / 10) = 12

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RexImperSenatus
12.11.2016, 02:26

Zehnstein weniger Neunstein =

Ich halt mich hier lieber raus.........so ganz ohne Taschenrechner - LOL

0

Offenbar geht's dir um die Zifferndarstellung zu verschiedenen Basen. Ich kenne keine fertigen Funktionen, aber mit "divmod()" geht's ganz billig:

#!/usr/bin/env python

from __future__ import print_function

def digits ( number, base ):
"Zahl in Ziffern (0..base-1) zerlegen."
result = []
while number:
number, digit = divmod( number, base )
result.insert( 0, digit )
return result

def toString ( digit_list ):
"Ziffernliste in druckbare Zeichen wandeln."
numerals = '0123456789' \\
'ABCDEFGHIJKLMNOPQRSTUVWXYZ' \\
'abcdefghijklmnopqrstuvwxyz'
return ''.join(numerals[c] for c in digit_list) or numerals[0]

for n in (9, 10, 35, 36, 49, 64, 100, 0 ):
print( "\\n%4d"%(n,), end='' )
for b in ( 2, 16, 50 ):
print( " =%8s/%d" % (toString(digits(n,b)), b), end='' )

Der Code sollte mit Python 2 und 3 laufen. Du kannst ja mal damit rumspielen.

Antwort bewerten Vielen Dank für Deine Bewertung

Siehe Polygammas Antwort.

Was genau spricht denn gegen die Umwandlung zu string? 

[int(i) for i in str(123)]      // [1, 2, 3]
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von fragexaxaxa
12.11.2016, 00:01

Meine Fragestellung war leider blödsinn. Der Eingabewert ist eine Zahl in einer beliebigen Basis, die kleiner als 62 sein soll.

Die Zahlen in der Basis 62 bestehen aus 0-9, A-Z und a-z, wobei z der 61 entspricht. Also ist der Eingabewert ein string und kein int-Wert.

Die Zerlegung von einem string ist ja mit der list()-Funktion kein Problem.
Aber weißt du wie ich an die einzelnen Elemente in der Funktion
herankomme?


0

Was möchtest Du wissen?