python bestimmte ziffern auslesen?
Ich möchte von einer Zahl wie zum Beispiel: 825 die einzelnen Ziffern auslesen. Also Ziffer1 = 8, Ziffer2 = 2, Ziffer3 = 5.
Gibt es dafür eine Möglichkeit?
Danke schon mal im Vorraus.
5 Antworten
Nacheinander durch Rechnung modulo 10 die letzte Ziffer auslesen und dann durch Ganzzahldivision mit 10 die letzte Ziffer "entfernen". Zum Beispiel:
zahl = 825
letzte_ziffer = zahl % 10 # 5
zahl //= 10 # jetzt: zahl = 82
Pack das eine Schleife und so oft drüberiterieren wie die Zahl Stellen hat, dann kannst du alle Ziffern auslesen.
Es gibt vermutlich schönere Varianten, aber folgendes klappt: Die Zahl in einen String umwandeln, dann die einzelnen Ziffern (wieder als Zahlen/Integer) in einer Liste speichern.
x = 825
listx = [int(xi) for xi in str(x)]
print(listx[0])
-> 8
Nun, du kannst eine Methode schreiben, die dir aus einer Zahl eine Liste macht und auch angibt, ob sie positiv oder negativ war. Danach kannst du einfach über den Index nachschauen, welche Zahl an welcher Stelle ist
def getNumberAsList(n):
if n < 0:
n *= -1
sign = -1
else:
sign = 1
L = []
while n:
L.append(n % 10)
n //= 10
L.reverse()
return (L, sign)
def digits(n):
if type(n)!=int:
raise TypeError('Integer Required')
while n>0:
n,d=divmod(n,10)
yield d
Ziffern werden in umgekehrter Reihenfolge erzeugt:
list(digits(9237))
[7, 3, 2, 9]
Lässt sich aber schnell reparieren dank reverse().
Vielleicht so:
zahl = 825
zahl = str(zahl)
print(zahl[0])