Wie kann ich in einer While Schleife mit If-Bedingungen einen Namen überprüfen?
Ich muss für die Schule, in der Programmiersprache "Python" ein sogenanntes "Textadventure" schreiben. Dabei soll man am Anfang einen Vornamen eingeben. (mit input)
Der Vorname soll ohne Zahlen, Leerzeichen und Sonderzeichen durch kommen. Sprich nur in Buchstaben. Mit isalpha() kann man das tuen. Der Name soll mindestens 3 Buchstaben groß sein. Dies funktioniert mit len().
Mein Problem ist, das ich nicht weiß, wie ich das umsetzten soll.
CODE:
while True:
vorname = input("Vorname: ")
if len(vorname) > 2 and vorname.isalpha():
break
elif len(vorname) <= 3:
print("Bitte einen Namen eingeben, der mindestens 3 Buchstaben enthält!")
print("")
else:
print("Keine Leerzeile, Zahlen, Sonderzeichen! Bitte nur ein Namen eingeben!")
print("")
OUTPUT:
---------------------
Vorname: A
Bitte einen Namen eingeben, der mindestens 3 Buchstaben enthält!
⠀
Vorname: #
Bitte einen Namen eingeben, der mindestens 3 Buchstaben enthält!
⠀
Vorname: Mia
...
(klappt)
Beim OUTPUT fragte mich das Terminal nach den Vornamen. Wo ich "A" eingegeben habe, kam was ich wollte entsprechend raus.
Und hier ist jetzt mein Problem. Wenn ich Sonderzeichen (in dem Falle eine Rautetaste "#") eingebe, soll mir nicht:
"Bitte einen Namen eingeben, der mindestens 3 Buchstaben enthält!"
angegeben werden, sondern:
"Keine Leerzeile, Zahlen, Sonderzeichen! Bitte nur ein Namen eingeben!".
Ich hoffe, ihr könnt mir dabei helfen!! MfG!
3 Antworten
kenne mich mit python nicht aus aber wenn es ok wäre es hardzucoden, würde ich ein array machen in der alle buchstaben des alphabets enthalten sind. dann würde ich mit jedem buchstaben des vornamens , das array mit dem alphabet abgleichen. wenn der buchstabe des vornamens dass du überprüfst ein string ist, welches nicht im alphabet array enthalten war, dann kannst du das printen
edit: ich habe deine frage falsch, so dürfte es gehen:
ich kenne mich mit python nicht aus aber du brauchst bei der ersten elif eine weitere bedingung mit and die fragt, ob vorname.isalpha() falsch ist
len(vorname) <= 3 and (weiß die syntax nicht hier überprüfen ob vorname.isalpha() falsch ist)
dann amchst du noch ein elif nur mit
len(vorname) <= 3
das liegt an deinem elseif fall. du prüft nur, ob die zeichen des vornames entsprechend lang sind, aber nicht was für ein zeichen rein kommt. # vom vorname ist <= 3 true, also geht er in den else if fall. du musst zusätzlich noch and vorname.isalpha prüfen, damit er bei sonderzeichen in den letzten else zweig geht
' elif len(vorname) < 3 and vorname.isalpha(): ' in die 5te Zeile. Musst halt prüfen ob es überhaupt keine Sonderzeichen enthält, sonst reagiert er erst auf die <3. Und ich würde nicht <=3 machen, wenn du 3 Buchstaben schon als Minimum Vorraussetzt.
könntest du über die ord("#") lösen. also if ord(vorname)>zahl
Es geht nicht um die Rautetaste, sondern generell um Zahlen, Sonderzeichen und Leerzeichen. Die angaben sollen bei Else klingeln nur len() interpretiert das auch mit Sonderzeichen, Zahlen und Leerzeichen. Deswegen geht das in den elif auch mit rein. Wenn ich jetzt über 3 Buchstaben mit Sonderzeichen was schreibe, gelangt es erst dann in den Else. Ich habe auch alles mögliche mit elif versucht, dennoch funktioniert nichts.