Python string in einzelne Ziffern zerlegen?
Hallo,
ich hab vor ein Programm zu schreiben, in dem man eine beliebige Zahl und deren Basis eingeben kann.
Diese Zahl soll dann in eine andere beliebige Basis konvertiert werden. Beide Basen sind größer gleich 2 und kleiner gleich 62.
Die Ziffernfolge sieht so aus: 0-9, dann A-Z, dann a-z
Wenn jetzt beispielsweise die Zahl 1001 aus dem Dualsystem als input kommt, wie ist es dann möglich jeder Ziffer eine Variable zuzuordnen, abhängig von der Eingabe?
In dem Beispiel a= 1 , b=0,c=0,d=1 ?
Gibt es noch andere Möglichkeiten als über einen array?
2 Antworten
Das Einlesen geht z. B. so:
def fromString ( text, base ):
"Zeichenkette in eine Zahl wandeln."
result = 0
for c in text:
assert numerals.index(c)<base, "Ziffer "+c+" ist zu groß!"
result = result*base + numerals.index(c)
return result
base = int( input("Basis (dezimal):") )
text = input( "Ziffernfolge (0-9,A-Z,a-z): " )
number = fromString( text, base )
print( "Wert = ", number )
Achtung: In Python 2 musst Du die Ziffernfolge mit Anfürungszeichen eintippen (oder text=raw_input(...) schreiben).
Ausgeben kannst Du den Wert dann mit den Funktionen, die ich Dir hier präsentiert habe:
https://www.gutefrage.net/frage/python-integer-zerlegen#answer-228204926
Gibt es noch andere Möglichkeiten als über einen array?
Da die Anzahl der Ziffern praktisch unbegrenzt ist, sind explizite Variablen für jede Stelle kaum sinnvoll.
Man kann in Python sowas zwar hintricksen, aber ich glaube nicht, das Du das wirklich willst:
for i,c in enumerate(text):
exec( "var"+str(i)+" = "+c )
print( var0 )
print( var1 )
print( var2 )
Wenn nur zwei Ziffern eingegeben wurden, knallt's in der letzten Zeile, weil var2 gar nicht existiert.
so :
Zahl = input()#erstmal etwas eingeben
a = Zahl[0]
if len(Zahl) => 2 :
a = Zahl[1]
if len(Zahl) => 3 :
a = Zahl[2]
if len(Zahl) => 4 :
a = Zahl[3]
if len(Zahl) => 4 :
a = Zahl[4]
usw.