Seite 1 von 1

eine Zahl trennen

Verfasst: Dienstag 17. Januar 2006, 18:41
von G.S.
Hallo zusammen,
Ich würde gerne eine vierstellige Zahl trennen. Und zwar so ,dass die ersten zwei Zahlen die erste Zahl und die beiden letzten Zahlen die zweite Zahl ergeben.
Beispiel: Zahl 1588
Dann soll die erste Zahl 15 sein und die zweite 88.
Danke für eure Hilfe!

Verfasst: Dienstag 17. Januar 2006, 19:14
von Mawilo

Code: Alles auswählen

>>> x = 1588
>>> print str(x)[0:2]
15
>>> print str(x)[2:]
88
>>> 

Verfasst: Dienstag 17. Januar 2006, 19:18
von Andy
Hallo G.S.,

ich weiß zwar nicht wofür Du das brauchst (wo ist der Code :evil: ), dass einfachste ist jedoch die Zuordnung der Zahlen zu Variablen.

Etwa so:

Code: Alles auswählen

>>> a = 15
>>> b = 88
>>> print a, b
15 88
Gruss andy

Verfasst: Dienstag 17. Januar 2006, 19:35
von Leonidas
Ich hätte noch eine ein klein wenig universellere Lösung mit Generatoren die Zahlen in 2er Stückchen zersägt.

Code: Alles auswählen

#!/usr/bin/python
# -*- encoding: latin-1 -*- 
import re

def fragmentate(number):
    two = re.compile(r'\d\d?')
    for fragment in two.findall(str(number)):
        yield int(fragment)
        
print list(fragmentate(1588))
print list(fragmentate(15881))
Allerdings kommt bei Zahlen die eine ungerade anzahl Zeichen lang sind am Schluss noch ein 1er Stückchen raus (wenn du im regulären Ausdruck das Fragezeichen wegnimmst, gibts dann kein 1er-Stückchen mehr, es wird dann ignoriert). Na, ist nur so eine Spielerei, hängt ab, was du brauchst.

Verfasst: Dienstag 17. Januar 2006, 19:36
von Joghurt
Oder auch:

Code: Alles auswählen

zahl = 1588
a = zahl/100
b = zahl%100
Oder

Code: Alles auswählen

zahl =1588
a,b = divmod(zahl,100)

Verfasst: Dienstag 17. Januar 2006, 20:21
von modelnine
Oder als Generator mit ein bisschen Rumgehacke und allgemeiner in dem Sinn dass er nicht nur Strings akzeptiert, sondern auch jede beliebige Sequence:

Code: Alles auswählen

def split(seq,step):
    return list("".join(r) for r in itertools.izip(*list(itertools.islice(seq,n,len(seq),step) for n in range(step))))
--- Heiko.