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
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.
Steg 2. Öppna en ny fil i en textredigerare eller ditt Python IDE
Ge det ett beskrivande namn som slutar med.py.
Steg 3. Importera det slumpmässiga biblioteket
Du behöver det för att slumpmässigt ordna de möjliga svaren.
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
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 "])]
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
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)
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:
Steg 9. Mata ut varje fråga
Efter slinguttrycket skriver du raden:
print (qaItem.question)
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
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 ()
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 ("")
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.")
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. ")
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.