Programovanie v Pythone pre začiatočníkov: Postavme si jednoduchú kvízovú aplikáciu


Programovanie v Pythone pre začiatočníkov by malo byť zábavné. Pre niekoho, kto má rád náhodné drobnosti a hry, je vytvorenie kvízovej aplikácie na triviálnu noc zábavným a vzrušujúcim spôsobom, ako sa naučiť niektoré skvelé koncepty v Pythone. Pozrime sa, čo je potrebné na vytvorenie tejto aplikácie.

Začíname s programovaním v Pythone pre začiatočníkov

Python patrí medzi najpoužívanejšie jazyky na svete a je to jednoduchý východiskový bod pre začiatočníkov. Je to taký jednoduchý nástroj, že sme už vytvorili jednoduchý zoznam úloh v Pythone, doplnený o pridávanie a odstraňovanie prvkov. Tento projekt bude o niečo komplikovanejší, ale máme rovnaké počiatočné kroky.

Ak ste si nestiahli a nenastavili svoje IDE, je to pomerne jednoduché. Väčšina používateľov používa Python v systéme Windows alebo Linux, ale existuje aj verzia pre Mac. Ak si nie ste istí, či máte vo svojom systéme Python, môžete skontrolovať verziu na príkazovom riadku. Číslo verzie vám povie, či máte Python a akú verziu jazyka máte nainštalovanú.

Používam Python pre Windows a už som uviedol podrobnosti o tom, ako nastaviť Python s mojím výberom IDE (Visual Studio). Pre osvieženie sú tieto kroky:

  • Nainštalujte Python pre váš operačný systém.
  • Nainštalujte si svoje IDE (v mojom prípade Visual Studio).
  • Skontrolujte verziu, aby ste sa uistili, že váš Python je nainštalovaný správne.
  • Začnite nový projekt.

Teraz, keď sme dokončili základné nastavenie, môžeme prejsť k samotnému zostavovaniu aplikácie!

Nastavenie našej vlastnej štruktúry otázok

Keďže ide o kvízovú aplikáciu, budeme potrebovať niečo na uloženie našich otázok a odpovedí. Na tento účel vytvoríme vlastnú štruktúru otázok v tomto formáte:

"question": <insert question here>,
"options": [<comma-separated list of strings>],
"correct_answer": <string from the list that corresponds to the right answer>

Na tento účel zostavíme skúšobnú základňu piatich otázok, z ktorých náhodne vyberieme poradie, v ktorom sa objavia:

# Quiz questions
questions = [
    {
        "question": "What is the capital of France?",
        "options": ["London", "Berlin", "Paris", "Madrid"],
        "correct_answer": "Paris"
    },
    {
        "question": "Which planet is known as the Red Planet?",
        "options": ["Mars", "Venus", "Jupiter", "Saturn"],
        "correct_answer": "Mars"
    },
    {
        "question": "What is the chemical symbol for Potassium?",
        "options": ["P", "Po", "K", "Li"],
        "correct_answer": "K"
    },
    {
        "question": "What year was Abraham Lincoln born?",
        "options": ["1909", "1811", "1809", "1776"],
        "correct_answer": "1809"
    },
    {
        "question": "What is the geographical name for a rainforest?",
        "options": ["Taiga", "Badlands", "Selvas", "Hardpan"],
        "correct_answer": "Selvas"
    }
]

Tento druh štruktúry sa nazýva slovník. Slovníky v akomkoľvek programovacom jazyku sú kolekciou párov kľúč – hodnota. Hodnotu pripojenú ku konkrétnemu kľúču nájdete vyhľadaním tohto kľúča v slovníku.

Budeme tiež musieť importovať náhodnú knižnicu, čo nám umožní premiešať pole otázok. Za týmto účelom zahrnieme tento riadok do hornej časti nášho kódu:

import random

Kľúčové slovo import nám umožňuje „priniesť“ akúkoľvek knižnicu, ktorú potrebujeme. V tomto prípade importujeme náhodnú knižnicu, ktorá obsahuje užitočné funkcie na náhodné usporiadanie zoznamov a polí. Opätovné použitie kódu, ako je tento, je jednou z najúčinnejších častí Pythonu. Ak niečo potrebujete, pravdepodobne niekde existuje knižnica s funkciou, ktorú hľadáte.

Zobrazenie otázky a získanie odpovede

Teraz, keď sme sa rozhodli pre otázky, ktoré budeme klásť, musíme prísť na to, ako tieto otázky používateľovi ukázať a získať na ne odpoveď. Za týmto účelom definujeme dve funkcie:

#Function for displaying the questions to the screen
def display_question(question):
    print(question["question"])
    for i, option in enumerate(question["options"], 1):
        print(f"{i}. {option}")
#Function for getting user input
def get_user_answer():
    while True:
        try:
            choice = int(input("Enter your answer (1-4): "))
            if 1 <= choice <= 4:
                return choice - 1
            else:
                print("Please enter a number between 1 and 4.")
        except ValueError:
            print("Invalid input. Please enter a number.")

Poďme preskúmať tieto funkcie jednotlivo a určiť ich účel. Funkcia display_question() vezme otázku, vypíše ju na obrazovku a vytlačí možnosti a číselnú hodnotu pre každú z nich. Funkcia get_user_answer() zhromaždí odpoveď používateľa a porovná ju so správnou odpoveďou definovanou v otázkach, ktoré sme nastavili predtým.

Funkcia get_user_answer tiež vykoná základnú kontrolu chýb. Ak používateľ zadá čokoľvek iné ako číslo alebo je číslo mimo hraníc možností, znova ho vyzveme na odpoveď.

Navrhovanie kvízu

Teraz, keď máme otázky a spôsob, ako získať odpovede, musíme otázky náhodne usporiadať a umožniť hráčovi, aby na každú odpovedal. Na tento účel navrhneme funkciu s názvom run_quiz():

#Running the Quiz from start to end
def run_quiz():
    score = 0
    total_questions = len(questions)
    
    random.shuffle(questions)
    
    for question in questions:
        display_question(question)
        user_choice = get_user_answer()
        
        if question["options"][user_choice] == question["correct_answer"]:
            print("Correct!")
            score += 1
        else:
            print(f"Sorry, that's incorrect. The correct answer is: {question['correct_answer']}")
        
        print() # Add a blank line for readability
    
    print(f"Quiz complete! You scored {score} out of {total_questions}.")
    percentage = (score / total_questions) * 100
    print(f"Your score: {percentage:.2f}%")

V tejto funkcii sme definovali premennú skóre, ktorú použijeme na určenie úspešnosti hráča v našom kvíze. Ďalej si všimnete riadok random.shuffle(questions), ktorý zmení poradie, v ktorom program kladie používateľovi otázky. Keď budeme mať len päť otázok, ako je táto, dôjde k veľkému prekrývaniu. Keď však začnete zahŕňať desiatky otázok, je pravdepodobné, že nebude možné predpovedať, v akom poradí budú otázky položené.

Cyklus for prechádza každou otázkou v našom poli, pýta sa a čaká na odpoveď. Ak hráč položí otázku správne, jeho skóre sa zvýši. Ak sa pomýlia, zobrazí sa im správna odpoveď, takže sa poučia nabudúce. Keď skončíme kvíz, program vytlačí konečné skóre, ktoré používateľ získal správne, ako percento z celkového počtu otázok.

Budovanie hernej slučky

Všetky hry vyžadujú hernú slučku. V tomto prípade bude našou hlavnou hernou slučkou naša funkcia main():

#The Main Game Loop
def main():
    while True:
        print("Welcome to the Python Quiz Game!")
        run_quiz()
        
        play_again = input("Would you like to play again? (yes/no): ").lower()
        if play_again != 'yes':
            print("Thanks for playing! Goodbye!")
            break
if __name__ == "__main__":
    main()

Táto funkcia zhrnie celý náš kvíz a opýta sa hráča, či chce hrať znova. Ak to neurobia, opustí hru. Ak tak urobia, premiestni otázky a položí ich znova.

Dať to všetko dokopy

Keď napíšeme a uložíme celý náš kód, môžeme spustiť kvíz. Visual Studio má praktické tlačidlo „Spustiť“, ktoré používam na spustenie mojej kvízovej hry. Výsledky sú pôsobivé:

Máme dokonca aj opravy, ak je odpoveď nesprávna a konečný výpočet skóre:

Zdá sa, že všetko funguje podľa očakávania, takže nemáme žiadne chyby na opravu. Gratulujeme k dokončeniu vášho vlastného projektu Python Quiz Game!

Aktualizácie, vylepšenia a výzvy

Toto je jednoduchá kvízová hra; päť otázok nie je až tak vzrušujúcich. Ak by ste chceli projekt rozšíriť, tu je niekoľko výziev, ktoré môžete vyskúšať a ktoré nie sú príliš komplikované, ale pre hráča to bude príjemnejšia skúsenosť:

  • Zvýšte počet otázok: Čím viac otázok máte, tým náročnejšia bude hra pre hráča.
  • Vyberte náhodnú podskupinu otázok: Namiesto neustáleho kladenia všetkých otázok vyberte podskupinu otázok a opýtajte sa ich. To zvyšuje znovuhrateľnosť, pretože hráč nevie, aké otázky dostane nabudúce.
  • Navrhnite užívateľsky prívetivejšie rozhranie: Terminál je prístupný pre začiatočníkov na implementáciu do programovania v Pythone, ale zostavenie skutočného používateľského rozhrania je oveľa jednoduchšie, než by ste si mysleli.

Kam ísť odtiaľto

Ak hľadáte plnohodnotnejšieho sprievodcu Pythonom, mali by ste sa pozrieť na aplikácie a webové stránky, ktoré pomáhajú novým vývojárom. Jednou z najlepších vecí na programovaní je, že nemusíte nasledovať príklad nikoho iného. Môžete sa len učiť za pochodu. Každá jedna vec, ktorú sa naučíte, môžete využiť v určitom bode svojej kariéry.

Nahral som úplný kód tejto kvízovej hry na GitHub, aby ste si ho mohli porovnať so svojím vlastným.