String darf nur bestimmte Zeichen enthalten

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
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Wie realisiere ich über Python das eine einfache Eingabe einer Zeichenkette auf bestimmte Zeichen überprüft wird. Also zum Beispiel dürfen in der Eingabe nur die Zeichen a,b,c,d enthalten sein, falls doch mehr als die gültigen Zeichen. eingegeben werden soll z.B eine Fehlermeldung rausgegeben werden.

LG
Sirius3
User
Beiträge: 18267
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist doch wohl Deine Hausaufgabe‽ Was hast Du schon gelernt über Strings, über if-Abfragen, etc.?
Benutzeravatar
__blackjack__
User
Beiträge: 14033
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@d_rose: Die Aufgabe kommt mir so bekannt vor: Listenelemente in String finden.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

zeichenkette = input("Geben sie eine Zeichenfolge bestehend aus den Zeichen a,b,c und d ein:")

erlaubteElemente = "abcd"

if zeichenkette in erlaubteElemente :
print ("Eingabe war erfolgreich")
elif zeichenkette != erlaubteElemente:
print("Falsch")


hier ist mein bisheriger code

mein Problem ist das nur genau "abcd" als richtig ausgegeben wird.
ich muss es irgendwie schaffen erlaubteElemente so zu definieren das die Anzahl und Reihenfolge der Strings egal sodass zum Beispiel aabbccdd auch richtig ausgegeben wird.
Sirius3
User
Beiträge: 18267
Registriert: Sonntag 21. Oktober 2012, 17:20

Ein String ist ein String, da kann man nichts anders definieren. Bei einer Menge an Zeichen könnte man aber auch eine Menge (Set) nehmen. Auf der anderen Seite muß man selbst die Funktionalität programmieren, die man haben möchte und darf nicht hoffen, dass ein Operator (in oder !=) auf magische Weise entgegen der Dokumentation das macht, was man haben möchte. `in` prüft, ob der Teilstring zeichenkette irgendwo in erlaubteElemente am Stück vorhanden ist, das ist bei "bcd" oder "c" der Fall, nicht bei "cb" oder "aa". `!=` vergleicht hingegen, ob die gesamte zeichenkette ungleich erlaubteElemente ist. Da != bei Dir eine Übermenge aller "not in" ist, macht das bei Dir so keine Probleme, richtig wäre es aber trotzdem einen else-Block zu schreiben.
Antworten