In Python nur bestimmte Wörter in den Input eingeben?

jerric8  26.11.2022, 10:59

Wieso b = -1 und nicht b = 0?

Nindro3736 
Beitragsersteller
 26.11.2022, 11:07

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.

jerric8  26.11.2022, 11:12

Soll zwingend eine While-Schleife verwendet oder kann auch eine For-Schleife genommen werden?

Nindro3736 
Beitragsersteller
 26.11.2022, 11:15

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
Woher ich das weiß:Berufserfahrung – Inhaber einer App-Agentur & 15+ Jahre Programmiererfahrung

Nindro3736 
Beitragsersteller
 26.11.2022, 11:58

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.

0
Putzeimer300  28.11.2022, 18:23
@Nindro3736
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.

0