python bestimmte ziffern auslesen?

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])
Woher ich das weiß:Hobby
vibu04  08.04.2020, 19:42

zahl[0] gibt dir die 8

zahl[1] gibt dir die 2

zahl[2] gibt dir die 5

0