Seite 1 von 1

string zerlegen und in neuen variablen abspeichern

Verfasst: Freitag 12. Oktober 2018, 17:26
von Beginner0102
Hallo an alle.
Ich habe vor kurzer Zeit angefangen Python zu lernen und komme leider nicht weiter.
Zu Beginn soll man eine Eingabe mit max 15 Zeichen eintippen (habe ich bis jetzt mit input() len() geschafft zu begrenzen).
Die Eingabe soll eine Variable sein mit dem Namen XY (ich weiß noch nicht wie ich es nenne).
Und ab hier komme ich nicht weiter:
ich will, dass die Variable XY in kleinere Variablen geteilt wird z.B XY = 12345678 soll zu part1= 12, part2= 34, part3= 56, part4= 78 geteilt werden und jeweils als Variable part1/2/3 etc. abgespeichert werden, sodass ich später als Bildschirmausgabe Beispielsweise part2 und part4 zusammensetze und das Ergebnis anzeigen kann (ohne 1 und 3 ).

Der Output soll circa so aussehen:

Bitte max. 15 Zeichen eingeben: 12345678 (Text, der eingegeben wird)
XY= 12345678
Part1= 12
part2= 34
part3=56
part4=78

XYneu= 3478

Re: string zerlegen und in neuen variablen abspeichern

Verfasst: Freitag 12. Oktober 2018, 19:48
von Sirius3
Statt Variablen durchzunummerieren, benutze eine Liste, die Nummer im Variablenname wird durch einen Index in dieser Liste ersetzt.

Re: string zerlegen und in neuen variablen abspeichern

Verfasst: Freitag 12. Oktober 2018, 20:06
von pixewakb
Wahrscheinlich ginge es noch knapper, aber nachfolgendes Beispiel funktioniert und nutzt noch vergleichsweise einfache Elemente:

Code: Alles auswählen

w = "1234567890X"

x = [w[i]+w[i + 1] for i in range(0, len(w) - 1, 2)]
if len(w) % 2 != 0:
    x.append(w[-1])

print(x)
Du müsstest mal schauen, was ich da nutze , nennt sich list comprehension.

Nachtrag: Ich habe den Quelltext angepasst und damit Redundanz reduziert.

Re: string zerlegen und in neuen variablen abspeichern

Verfasst: Samstag 13. Oktober 2018, 10:22
von Sirius3
@pixewakb: den Sonderfall bekommst Du mit Slices weg:

Code: Alles auswählen

x = [w[i:i+2] for i in range(0, len(w), 2)]
besser als Indices ist aber `zip_longest`:

Code: Alles auswählen

from itertools import zip_longest
x = [a+b for a,b in zip_longest(w[::2], w[1::2], fillvalue='')]
Etwas kryptischer, dafür für beliebige iterierbare Objekte `w`:

Code: Alles auswählen

x = list(map(''.join, zip_longest(*[iter(w)] * 2, fillvalue='')))