Hur man gör ett frågespel i Python (med bilder)

Innehållsförteckning:

Hur man gör ett frågespel i Python (med bilder)
Hur man gör ett frågespel i Python (med bilder)

Video: Hur man gör ett frågespel i Python (med bilder)

Video: Hur man gör ett frågespel i Python (med bilder)
Video: Countdown timer program in Python ⌛ 2024, April
Anonim

Om du vill lära dig Python är det bra att börja med några enkla textbaserade spel. Denna artikel kommer att visa dig hur du gör ett frågespel.

Steg

947361 1
947361 1

Steg 1. Installera Python om du inte redan har gjort det

Det finns två huvudversioner av Python: Python 2 och Python 3. De är inte utbytbara och stöd för Python 2 upphör 2020, så den här artikeln förutsätter att du installerar Python 3.

947361 2
947361 2

Steg 2. Öppna en ny fil i en textredigerare eller ditt Python IDE

Ge det ett beskrivande namn som slutar med.py.

947361 3
947361 3

Steg 3. Importera det slumpmässiga biblioteket

Du behöver det för att slumpmässigt ordna de möjliga svaren.

947361 4
947361 4

Steg 4. Definiera en klass "QA"

En "QA" kommer att bestå av en fråga och ett korrekt svar, och en lista över möjliga andra svar. Funktionen _init _ () anropas när du skapar ett nytt QA -objekt med funktionen QA (), med dess argument förmedlade till motsvarande attribut. Typ:

klass QA: def _init _ (self, question, correctAnswer, otherAnswers): self.question = question self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers

947361 5
947361 5

Steg 5. Skapa en lista med QA

Tänk på några frågor med ett rätt och några fel svar. Skapa QA -objekt från varje och lägg dem i en lista. Eftersom listan blir ganska lång kan du bryta den över flera rader för bättre läsbarhet. Allt detta görs med följande kod (din text kan vara annorlunda):

qaList = [QA ("Var är Minsk?", "i Vitryssland", ["i Ryssland", "en sådan stad existerar inte"]), QA ("Vad är huvudstaden i Australien?", "Canberra", ["Sydney", "New York", "Australien finns inte"]), QA ("Vilket av följande finns inte på jorden?", "Sea of Tranquility", ["Mediterranean Sea", "Baltic Sea "," Nordsjön "]), QA (" Vilket av följande är inte en kontinent? "," Arctica ", [" Antarktis "," Amerika "]), QA (" Vilket av följande är inte ett afrikanskt land ? "," Malaysia ", [" Madagaskar "," Djibouti "," Sydafrika "," Zimbabwe "])]

947361 6
947361 6

Steg 6. Lägg till en variabel som räknar hur många svar som var korrekta

Sätt den till noll i början. Lägg till raden:

corrCount = 0

947361 7
947361 7

Steg 7. Blanda QA -listan

Detta får dina frågor att visas i slumpmässig ordning. Detta görs med följande funktion:

random.shuffle (qaList)

947361 8
947361 8

Steg 8. Gör en slinga

Programmet bör gå över varje objekt i listan och göra något med det. Skapa en sådan loop med detta uttryck:

för qaItem i qaList:

947361 9
947361 9

Steg 9. Mata ut varje fråga

Efter slinguttrycket skriver du raden:

print (qaItem.question)

947361 10
947361 10

Steg 10. Mata ut alla möjliga svar

De ska visas i slumpmässig ordning så att det rätta svaret inte alltid är på samma position. De bör också föregås av ett nummer så att användaren inte behöver ange hela svaret igen. Följande kod gör detta:

print ("Möjliga svar är:") possible = qaItem.otherAnsw + [qaItem.corrAnsw] # hakparentes förvandlar rätt svar till lista för sammanfogning med annan lista random.shuffle (possible) count = 0 # listindex börjar vid 0 i python medan count <len (possible): print (str (count + 1) + ":" + possible [count]) count + = 1

947361 11
947361 11

Steg 11. Ta användarens input

Berätta först för användaren att de måste ange deras nummer. Kontrollera sedan om det som användaren angett verkligen är ett tal som motsvarar ett svar. Om det inte är det, berätta för användaren igen. Använd den här koden (utanför den medan loop du skapade för utdata):

print ("Vänligen ange numret på ditt svar:") userAnsw = input () medan det inte är userAnsw.isdigit (): print ("Det var inte ett nummer. Ange numret på ditt svar:") userAnsw = input () userAnsw = int (userAnsw) medan inte (userAnsw> 0 och userAnsw <= len (möjligt)): print ("Det numret motsvarar inget svar. Ange numret på ditt svar:") userAnsw = input ()

947361 12
947361 12

Steg 12. Kontrollera om användarens svar var korrekt

För att göra detta, hämta texten i svaret som användaren angav ett nummer för och jämför det med texten i det korrekta svaret. Om de är desamma var användarens svar korrekt och variabeln corrCount bör ökas med 1. Annars är det fel och användaren ska få rätt svar. Slutligen, skriv ut en tom rad för att lägga till lite utrymme i nästa fråga. Ange följande kod:

om möjligt [userAnsw-1] == qaItem.corrAnsw: print ("Ditt svar var korrekt.") corrCount + = 1 annat: print ("Ditt svar var fel.") print ("Rätt svar var:" + qaItem. corrAnsw) print ("")

947361 13
947361 13

Steg 13. Lägg ut en slutsats

I slutändan vill användaren förmodligen veta hur många frågor de fick rätt. Så berätta för dem genom att lägga till följande uttryck utanför for-loop:

print ("Du svarade" + str (corrCount) + "av" + str (len (qaList)) + "frågor korrekt.")

947361 14
947361 14

Steg 14. Kontrollera din kod

Var särskilt uppmärksam på indragningen. Din kompletta kod ska se ut så här nu:

importera slumpmässig klass QA: def _init _ (self, question, correctAnswer, otherAnswers): self.question = question self.corrAnsw = correctAnswer self.otherAnsw = otherAnswers qaList = [QA ("Var är Minsk?", "i Vitryssland", ["i Ryssland", "en sådan stad existerar inte"]), QA ("Vad är Australiens huvudstad?", "Canberra", ["Sydney", "New York", "Australien finns inte"]), QA ("Vilket av följande finns inte på jorden?", "Sea of Tranquility", ["Mediterranean Sea", "Baltic Sea", "North Sea"]), QA ("Vilket av följande är inte en kontinent? "," Arctica ", [" Antarctica "," America "]), QA (" Vilket av följande är inte ett afrikanskt land? "," Malaysia ", [" Madagaskar "," Djibouti "," South Afrika "," Zimbabwe "])] corrCount = 0 random.shuffle (qaList) för qaItem i qaList: print (qaItem.question) print (" Möjliga svar är: ") possible = qaItem.otherAnsw + [qaItem.corrAnsw] # hakparenteser vänder rätt svar till lista för att sammanfoga med andra listor slumpmässigt. blanda (möjligt) antal = 0 # listindex börjar vid 0 i n python medan count <len (möjligt): print (str (count + 1) + ":" + possible [count]) count + = 1 print ("Ange numret på ditt svar:") userAnsw = input () medan inte userAnsw.isdigit (): print ("Det var inte ett nummer. Ange numret på ditt svar: ") userAnsw = input () userAnsw = int (userAnsw) medan inte (userAnsw> 0 och userAnsw <= len (möjligt)): print (" Det numret motsvarar inget svar. Ange numret på ditt svar: ") userAnsw = input () om möjligt [userAnsw-1] == qaItem.corrAnsw: print (" Ditt svar var korrekt. ") CorrCount += 1 else: print (" Ditt svar var fel. ") print (" Rätt svar var: " + qaItem.corrAnsw) print (" ") print (" Du svarade " + str (corrCount) +" av " + str (len (qaList)) +" frågor korrekt. ")

947361 15
947361 15

Steg 15. Kör koden

Om du använder en IDE klickar du på symbolen "Kör" eller menyalternativet. Om du använder en textredigerare, spara ditt program, stäng redigeraren och öppna programmet med Python.

Tips

  • Se upp för korrekt indrag. Kod inuti en funktion eller klassdefinition är indragna, liksom kod i en slinga. Ett Python -program med fel indragning fungerar inte.
  • Tryck på Ctrl+C om du vill avbryta spelet och inte avsluta det.
  • Om du ersätter varje samtal med ingång () med ett anrop av raw_input (), fungerar detta program i Python 2, men slutar fungera i Python 3.

Rekommenderad: