string zerlegen und in neuen variablen abspeichern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Beginner0102
User
Beiträge: 1
Registriert: Freitag 12. Oktober 2018, 17:00

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
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Statt Variablen durchzunummerieren, benutze eine Liste, die Nummer im Variablenname wird durch einen Index in dieser Liste ersetzt.
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

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.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@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='')))
Antworten