Python Progamming Loop

Ich mache eine Aufgabe, wo ich ein Quiz für verschiedene Themen führen muss. Das ist mein Code so weit.

print("Hello and welcome to Shahaad's quiz!") #Introduction name = input("What is your name? ") print("Alright", name,", these will be today's topics:") print("a) Video Games") print("b) Soccer") print("c) Geography") choice = input("Which topic would you like to begin with?") if choice == 'video games' or choice == 'Video Games' or choice == 'Video games' or choice == 'a)': print("You picked Video Games.") print("Question number one:") print("What is the most popular FPS (First Person Shooter) game?") print("a) Call of Duty") print("b) Battlefield") print("c) Grand Theft Auto 5") print("d) Counter Strike") answer = input("Your answer:") guessesTaken = 0 if answer == 'Call Of Duty' or answer == 'Call of duty' or answer == 'Call of duty' or answer == 'a)' or answer == 'call of duty': print("You are correct!") else: guessesTaken = guessesTaken + 1 print("Incorrect!") print("You have", guessesTaken, "guess left!") 

Ich versuche es so zu machen, dass, wenn sie die Antwort falsch bekommen, sie eine weitere Chance bekommen, die Frage zu beantworten. Gerade jetzt, wenn sie es falsch machen, können sie nicht wieder eingeben. Vielen Dank!

2 Solutions collect form web for “Python Progamming Loop”

Sie sollten als @BartoszKP sagen, verwenden Sie eine while-Schleife zu überprüfen, ob der Benutzer eine gültige Eingabe eingegeben hat.

Das heißt, ich habe ein paar Empfehlungen, die die Lesbarkeit Ihres Codes verbessern könnten. An Stelle von

 if choice == 'video games' or choice == 'Video Games' or choice == 'Video games' or choice == 'a)': print("You picked Video Games.") 

Sie können die str (). Lower () Methode nutzen:

 if choice.lower() == 'video games' or choice == 'a': print('You picked Video Games.") 

Die lower () -Methode wandelt alle Buchstaben in Kleinbuchstaben um.

In Bezug auf die while-Schleife, ich nicht gerne eine Flag-Variablen verwenden – es fügt eine zusätzliche Variable, um den Code, der nicht wirklich benötigt wird. Stattdessen könntest du break

 while True: choice = input('Which topic would you like to begin with?') if choice.lower() == 'video games' or 'a': print('You picked Video Games.') break #This breaks out of the while loop, and continues executing the code that follows the loop 

Eine andere Lösung besteht darin, die choice vor der while Schleife zu definieren und sie auszuführen, bis die Eingabe wie folgt ist:

 choice = input('Which topic would you like to begin with?') while choice.lower() != 'video games' and choice != 'a': print('Please pick a valid option') choice = input('Which topic would you like to begin with?') print('You picked "{}".'.format(choice)) 

Wenn du zwischen verschiedenen Optionen wählen möchtest, könnte der Code weiter verbessert werden, indem man überprüft, ob der eingegebene String einer der Elemente in einer Liste ist:

 valid_options = ['video games', 'a', 'software', 'b', 'cartoons', 'c'] choice = input('Which topic would you like to begin with?') while choice.lower() not in valid_options: print('Please pick a valid option') choice = input('Which topic would you like to begin with?') print('You picked "{}".'.format(choice)) 

Ausgabe:

 Which topic would you like to begin with?Movies Please pick a valid option Which topic would you like to begin with?vIdeO gaMes You picked "vIdeO gaMes". Which topic would you like to begin with?software You picked "software". 

Wenn Sie Python 2.x verwenden, sollten Sie auch die Verwendung von raw_input() anstelle von input() . Bitte sehen Sie diese verwandte SO Frage zu verstehen, warum.

Dies ist ein einfaches und ziemlich häufig angetroffenes Problem. Die Lösung passt in der Regel in dieses Szenario:

 flag = False while not flag: x = input("Get input from the user:") if validate(x): flag = True else: print "Input invalid. Try again" 

Wo Variablennamen natürlich geändert werden sollen, um für die aktuelle Aufgabe geeignet zu sein (zB flag -> answerCorrect oder ähnliches, x -> answer etc.).

  • Wie schreibe ich eine rekursive Funktion um eine Schleife zu verwenden?
  • Running wxPython nach dem Schließen von Tkinter
  • Machen Sie eine Schleife, um eine Liste zu bilden?
  • Zählen (und Schreiben) von Wortfrequenzen für jede Zeile innerhalb der Textdatei
  • Wie läuft man eine unendliche Schleife in pygtk?
  • Brauchen Sie Hilfe, um eine Schleife hinzuzufügen, um Programm in Python neu zu starten
  • Wenn Schleife: x nicht in VS nicht x in [duplizieren]
  • Für Loop iterate über Potenzen von 2
  • Ist es möglich, einen Python für Bereichsschleife ohne Iteratorvariable zu implementieren?
  • Wenn in "Python" "while" oder "for" verwendet wird
  • Pythonäquivalent von C ++ begin () und end () für benutzerdefinierte Klassen
  • Python ist die beste Programmiersprache der Welt.