In Python nur bestimmte Wörter in den Input eingeben?
Hallo zusammen
Ich habe folgendes Problem. Ich möchte 4 Wörter eingeben und diese sollen dann überprüft werden, ob sie in einer Liste vorhanden sind.
color = ["gelb", "grün", "braun", "lila", "blau", "rot"]
colors_p = input("4 Farben eingeben: ").lower().split()
Das ist, was ich bis jetzt habe. Mein Plan war es mit if zu machen, aber das hat nicht wirklich funktioniert.
b = -1
while b < 3:
b += 1
if not colors_p[b] in color:
print("Eingabe ist falsch")
Danke schonmal im voraus.
Wieso b = -1 und nicht b = 0?
Weil ich bei Listen auch mit 0 anfange und mit 3 ende. D. h. wenn ich 0 nehme, komme ich entweder nur auf drei Durchläufe oder aber kann nur drei Strings meiner Liste abfragen.
Soll zwingend eine While-Schleife verwendet oder kann auch eine For-Schleife genommen werden?
Mir ist alles recht while war nur meine erste Idee.
1 Antwort
Dein Programm funktioniert nur deshalb nicht, weil du in deiner if-Bedingung "color" geschrieben hast, die Variable oben aber als "colors" definiert wurde. Das sagt aber auch die Fehlermeldung, die ausgegeben wird, recht deutlich.
Um es etwas zu vereinfachen, kann man eine for-Schleife anstelle einer while-Schleife verwenden, und zwar mit der range()-Funktion. Dann wäre es wohl noch sinnvoll, die Schleife nach der ersten, falschen Farbe abzubrechen, damit nicht mehrmals "Eingabe ist falsch" ausgegeben wird:
colors = ["gelb", "grün", "braun", "lila", "blau", "rot"]
colors_p = input("4 Farben eingeben: ").lower().split();
for i in range(4):
if not colors_p[i] in colors:
print("Eingabe ist falsch")
break
Looping = True
while Looping:
colors = ["gelb", "grün", "braun", "lila", "blau", "rot"]
colors_p = input("4 Farben eingeben:").lower().split();
Looping = False
for i in range(4):
if i >= len(colors_p):
Looping = True
print(f"Du hast nur {i} Farbe/-n eingegeben")
break
elif not colors_p[i] in colors:
print("Eingabe ist falsch")
Looping = True
break
So kannst du das lösen. Ebenso habe ich eine if Statement eingebaut, das überprüft ob der listindex überhaupt existiert, sodass das Programm auch weiterläuft, wenn du weniger als vier Wörter eingibst.
Mein Problem ist jetzt nur immer noch, dass ich es gerne so haben, würde, dass nach der falschen Eingabe der Input wieder kommt, das habe ich aber nicht hinbekommen.