Hoe maak je een quizspel in Python (met afbeeldingen)

Inhoudsopgave:

Hoe maak je een quizspel in Python (met afbeeldingen)
Hoe maak je een quizspel in Python (met afbeeldingen)

Video: Hoe maak je een quizspel in Python (met afbeeldingen)

Video: Hoe maak je een quizspel in Python (met afbeeldingen)
Video: Vliegtuig Vouwen | Hoe maak je een papieren vliegtuigje | Origami Vliegtuig Makkelijk 2024, Mei
Anonim

Als je Python wilt leren, is het goed om te beginnen met enkele eenvoudige tekstgebaseerde spellen. Dit artikel laat je zien hoe je een quizspel maakt.

Stappen

947361 1
947361 1

Stap 1. Installeer Python als je dat nog niet hebt gedaan

Er zijn twee hoofdversies van Python: Python 2 en Python 3. Ze zijn niet uitwisselbaar en de ondersteuning voor Python 2 stopt in 2020, dus in dit artikel wordt ervan uitgegaan dat je Python 3 installeert.

947361 2
947361 2

Stap 2. Open een nieuw bestand in een teksteditor of uw Python IDE

Geef het een beschrijvende naam die eindigt op.py.

947361 3
947361 3

Stap 3. Importeer de willekeurige bibliotheek

Je hebt het nodig om de mogelijke antwoorden willekeurig te rangschikken.

947361 4
947361 4

Stap 4. Definieer een klasse "QA"

Een "QA" zal bestaan uit een vraag en een correct antwoord, en een lijst met mogelijke andere antwoorden. De functie _init_() wordt aangeroepen wanneer u een nieuw QA-object maakt met de functie QA(), waarbij de argumenten worden doorgegeven aan het bijbehorende attribuut. Type:

klasse QA: def _init_(zelf, vraag, correctAnswer, otherAnswers): self.question = vraag self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers

947361 5
947361 5

Stap 5. Maak een lijst met QA's

Bedenk een aantal vragen met één goede en enkele foute antwoorden. Maak van elk QA-objecten en plaats ze in een lijst. Aangezien de lijst vrij lang zal zijn, kunt u deze over meerdere regels verdelen voor een betere leesbaarheid. Dit alles wordt gedaan met de volgende code (uw tekst kan anders zijn):

qaList = [QA("Waar is Minsk?", "in Wit-Rusland", ["in Rusland", "een dergelijke stad bestaat niet"]), QA("Wat is de hoofdstad van Australië?", "Canberra", ["Sydney", "New York", "Australië bestaat niet"]), QA ("Welke van de volgende is niet op aarde?", "Zee van rust", ["Middellandse Zee", "Oostzee ", "Noordzee"]), QA("Welke van de volgende is geen continent?", "Arctica", ["Antarctica", "America"]), QA("Welke van de volgende is geen Afrikaans land ?", "Maleisië", ["Madagascar", "Djibouti", "Zuid-Afrika", "Zimbabwe"])]

947361 6
947361 6

Stap 6. Voeg een variabele toe die telt hoeveel antwoorden juist waren

Zet het in het begin op nul. Voeg de regel toe:

corrCount = 0

947361 7
947361 7

Stap 7. Schud de QA-lijst

Hierdoor verschijnen uw vragen in een willekeurige volgorde. Dit wordt gedaan met de volgende functie:

willekeurig.shuffle(qaList)

947361 8
947361 8

Stap 8. Maak een lus

Het programma moet elk item van de lijst doornemen en er iets mee doen. Maak zo'n lus met deze expressie:

voor qaItem in qaList:

947361 9
947361 9

Stap 9. Voer elke vraag uit

Schrijf na de lusexpressie de regel:

print(qaItem.vraag)

947361 10
947361 10

Stap 10. Voer alle mogelijke antwoorden uit

Ze moeten in willekeurige volgorde verschijnen, zodat het juiste antwoord niet altijd op dezelfde positie staat. Ze moeten ook worden voorafgegaan door een nummer, zodat de gebruiker niet het hele antwoord opnieuw hoeft in te voeren. De volgende code doet dit:

print("Mogelijke antwoorden zijn:") mogelijk = qaItem.otherAnsw + [qaItem.corrAnsw] # vierkante haken zetten het juiste antwoord om in lijst voor aaneenschakeling met andere lijst random.shuffle(mogelijk) count = 0 # lijstindexen beginnen bij 0 in python while count < len(mogelijk): print(str(count+1) + ": " + possible[count]) count += 1

947361 11
947361 11

Stap 11. Neem de invoer van de gebruiker

Vertel de gebruiker eerst dat ze het nummer van hun moeten invoeren. Controleer vervolgens of wat de gebruiker heeft ingevuld ook echt een getal is dat overeenkomt met een antwoord. Als dit niet het geval is, vertel het de gebruiker dan opnieuw. Gebruik deze code (buiten de while-lus die u voor de uitvoer hebt gemaakt):

print("Voer het nummer van uw antwoord in:") userAnsw = input() terwijl niet userAnsw.isdigit(): print("Dat was geen nummer. Voer het nummer van uw antwoord in:") userAnsw = input() userAnsw = int(userAnsw) while not (userAnsw > 0 and userAnsw <= len(possible)): print("Dat nummer komt met geen enkel antwoord overeen. Voer het nummer van uw antwoord in:") userAnsw = input()

947361 12
947361 12

Stap 12. Controleer of het antwoord van de gebruiker juist was

Om dit te doen, haalt u de tekst op van het antwoord waarvoor de gebruiker een getal heeft ingevoerd en vergelijkt u deze met de tekst van het juiste antwoord. Als ze hetzelfde zijn, was het antwoord van de gebruiker correct en moet de variabele corrCount met 1 worden verhoogd. Anders is het fout en moet de gebruiker het juiste antwoord krijgen. Druk ten slotte een lege regel af om wat ruimte toe te voegen aan de volgende vraag. Voer de volgende code in:

if possible[userAnsw-1] == qaItem.corrAnsw: print("Uw antwoord was juist.") corrCount += 1 else: print("Uw antwoord was fout.") print("Correct antwoord was: " + qaItem. corrAnsw) print("")

947361 13
947361 13

Stap 13. Voer een conclusie uit

Uiteindelijk wil de gebruiker waarschijnlijk weten hoeveel vragen ze goed hebben. Vertel het hen dus door de volgende uitdrukking buiten de for-lus toe te voegen:

print("Je hebt " + str(corrCount) + " of " + str(len(qaList)) + " vragen correct beantwoord.")

947361 14
947361 14

Stap 14. Controleer uw code

Besteed speciale aandacht aan de inspringing. Je volledige code zou er nu zo uit moeten zien:

import willekeurige klasse QA: def _init_(self, question, correctAnswer, otherAnswers): self.question = question self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers qaList = [QA("Waar is Minsk?", "in Wit-Rusland", ["in Rusland", "zo'n stad bestaat niet"]), QA("Wat is de hoofdstad van Australië?", "Canberra", ["Sydney", "New York", "Australië bestaat niet"]), QA("Welke van de volgende is niet op aarde?", "Zee van rust", ["Middellandse Zee", "Oostzee", "Noordzee"]), QA("Welke van de volgende is niet een continent?", "Arctica", ["Antarctica", "America"]), QA ("Welk van de volgende landen is geen Afrikaans land?", "Maleisië", ["Madagascar", "Djibouti", "Zuid Africa", "Zimbabwe"])] corrCount = 0 random.shuffle(qaList) voor qaItem in qaList: print(qaItem.question) print("Mogelijke antwoorden zijn:") mogelijk = qaItem.otherAnsw + [qaItem.corrAnsw] # vierkante haken zetten het juiste antwoord om in een lijst om deze samen te voegen met een andere lijst random.shuffle(mogelijk) count = 0 # lijstindexen beginnen bij 0 i n python while count < len(mogelijk): print(str(count+1) + ": " + possible[count]) count += 1 print("Voer het nummer van uw antwoord in:") userAnsw = input() while not userAnsw.isdigit(): print("Dat was geen nummer. Voer het nummer van uw antwoord in:") userAnsw = input() userAnsw = int(userAnsw) while not (userAnsw > 0 and userAnsw <= len(possible)): print("Dat nummer komt met geen enkel antwoord overeen. Voer het nummer van uw antwoord in:") userAnsw = input() indien mogelijk[userAnsw-1] == qaItem.corrAnsw: print("Uw antwoord was correct.") corrCount += 1 else: print("Uw antwoord was fout.") print("Het juiste antwoord was: " + qaItem.corrAnsw) print("") print("Je hebt " + str(corrCount) + " of " + str(len(qaList)) + " vragen correct beantwoord. ")

947361 15
947361 15

Stap 15. Voer de code uit

Als u een IDE gebruikt, klikt u op het symbool "Uitvoeren" of op het menu-item. Als je een teksteditor gebruikt, sla je programma dan op, sluit de editor en open je programma met Python.

Tips

  • Let op de juiste inspringing. Code binnen een functie- of klassedefinitie is ingesprongen, net als code in een lus. Een Python-programma met een verkeerde inspringing zal niet werken.
  • Druk op Ctrl+C als je het spel wilt onderbreken en niet wilt beëindigen.
  • Als je elke aanroep van input() vervangt door een aanroep van raw_input(), zal dit programma werken in Python 2, maar stoppen met werken in Python 3.

Aanbevolen: