Streamlit - kwestionariusz
Zaaktualizowałam Kwestionariusz, z użyciem Streamlit (zostawiając pierwotną budowę).
Kwestionariusz:
import streamlit as st
import json
import random
# Baza pytań - taka sama struktura jak poprzednio
if "baza_pytan" not in st.session_state:
st.session_state.baza_pytan = {
# baza pytań
}
st.header("Dodaj pytanie do kwestionariusza")
with st.form(key="formularz_dodawania_pytania"):
kategoria = st.text_input("Kategoria")
poziom = st.selectbox("Poziom trudności", ["łatwe", "średnie", "trudne"])
pytanie = st.text_input("Treść pytania")
odp1 = st.text_input("Odpowiedź 1")
odp2 = st.text_input("Odpowiedź 2")
odp3 = st.text_input("Odpowiedź 3")
poprawna = st.selectbox("Poprawna odpowiedź", ["1", "2", "3"])
przycisk_dodaj = st.form_submit_button(label="Dodaj pytanie")
if przycisk_dodaj:
if kategoria not in st.session_state.baza_pytan:
st.session_state.baza_pytan[kategoria] = {"łatwe": [], "średnie": [], "trudne": []}
st.session_state.baza_pytan[kategoria][poziom].append({
"pytanie": pytanie,
"odpowiedzi": [odp1, odp2, odp3],
"poprawna": int(poprawna)-1
})
st.success(f"Pytanie dodane do kategorii '{kategoria}'")
# Podgląd kwestionariusza
st.header("Aktualny kwestionariusz")
st.json(st.session_state.baza_pytan)
# Wczytywanie kwestionariusza z pliku JSON
st.header("Wczytaj kwestionariusz z pliku JSON")
plik_wczytany = st.file_uploader("Wybierz plik JSON", type="json")
if plik_wczytany is not None:
dane = json.load(plik_wczytany)
st.session_state.baza_pytan.update(dane)
st.success("Kwestionariusz wczytany!")
st.header("Pobierz kwestionariusz")
if st.session_state.baza_pytan:
json_dane = json.dumps(st.session_state.baza_pytan, ensure_ascii=False, indent=2)
st.download_button(label="Pobierz JSON", data=json_dane, file_name="kwestionariusz.json", mime="application/json")
# Start
st.header("Rozpocznij quiz")
if st.button("Start Quizu"):
if not st.session_state.baza_pytan:
st.warning("Brak pytań w kwestionariuszu!")
else:
wynik = 0
wszystkie_kategorie = list(st.session_state.baza_pytan.keys())
wybrane_kategorie = st.multiselect("Wybierz kategorie", wszystkie_kategorie, default=wszystkie_kategorie)
poziom = st.selectbox("Wybierz poziom", ["łatwe", "średnie", "trudne"])
pytania = []
for kat in wybrane_kategorie:
pytania.extend(st.session_state.baza_pytan[kat][poziom])
random.shuffle(pytania)
for i, p in enumerate(pytania[:10], 1):
st.markdown(f"**{i}. {p['pytanie']}**") # pogrubienie pytania
odp = st.radio(f"Wybierz odpowiedź {i}", p['odpowiedzi'], key=i)
poprawna_odp = p['odpowiedzi'][p['poprawna']]
if odp == poprawna_odp:
wynik += 1
st.success(f"Twój wynik: {wynik} / {len(pytania[:10])}")
Baza Pytań:
st.session_state.baza_pytan = {
"Zwierzęta": {
"łatwe": [
{
"pytanie": "Które zwierzę jest najszybszym lądowym ssakiem?",
"odpowiedzi": ["Antylopa", "Gepard", "Struś"],
"poprawna": 1
},
{
"pytanie": "Jakie zwierzę jest znane z tego, że potrafi wytwarzać jedwab?",
"odpowiedzi": ["Pająk", "Motyl", "Gąsienica jedwabnika"],
"poprawna": 2
},
{
"pytanie": "Które zwierzę ma największą ilość zębów?",
"odpowiedzi": ["Krokodyl", "Rekin", "Wieloryb"],
"poprawna": 0
},
{
"pytanie": "Które zwierzę ma skrzela?",
"odpowiedzi": ["Kos", "Słowik", "Foka"],
"poprawna": 0
},
{
"pytanie": "Który ptak nie potrafi latać, ale jest jednym z najszybszych biegaczy?",
"odpowiedzi": ["Struś afrykański", "Nandu południowoamerykański", "Emu australijski"],
"poprawna": 0
},
{
"pytanie": "Które zwierzę posiada najtwardszą skorupę wśród zwierząt lądowych?",
"odpowiedzi": ["Żółw pustynny", "Krab kokosowy", "Żółw morski"],
"poprawna": 0
},
{
"pytanie": "Jakie zwierzę jest znane z tego, że potrafi wykrywać trzęsienia ziemi?",
"odpowiedzi": ["Pies domowy", "Słoń afrykański", "Kret europejski"],
"poprawna": 1
},
{
"pytanie": "Które zwierzę potrafi odgryzać swoje ogony, by uciec drapieżnikowi?",
"odpowiedzi": ["Wąż zbożowy", "Jaszczurka zielona", "Salamandra plamista"],
"poprawna": 1
}
],
"średnie": [
{
"pytanie": "Które zwierzę ma największe oczy spośród ssaków?",
"odpowiedzi": ["Sowa śnieżna", "Szakal pręgowany", "Słoń afrykański"],
"poprawna": 1
},
{
"pytanie": "Które zwierzę potrafi przeżyć hibernację przez kilka miesięcy, zwalniając całkowicie swoje funkcje życiowe?",
"odpowiedzi": ["Wąż zbożowy", "Niedźwiedź", "Świstak"],
"poprawna": 2
},
{
"pytanie": "Które zwierzę jest znane z bardzo długiej żywotności, przekraczającej 100 lat?",
"odpowiedzi": ["Papuga kakadu", "Rekin wielorybi", "Żółw olbrzymi z Galapagos"],
"poprawna": 2
},
{
"pytanie": "Jaki gatunek zwierzęcia ma największe serce w stosunku do masy ciała?",
"odpowiedzi": ["Mysz polna", "Koliber", "Kot"],
"poprawna": 0
},
{
"pytanie": "Które zwierzę ma język dłuższy niż całe jego ciało?",
"odpowiedzi": ["Żaba drzewna", "Mrówkojad", "Kameleon"],
"poprawna": 1
},
{
"pytanie": "Które zwierzę wytwarza najbardziej trujący jad spośród ssaków?",
"odpowiedzi": ["Kret ziemny", "Kolczatka australijska", "Dziobak"],
"poprawna": 2
},
{
"pytanie": "Które zwierzę słynie z najdłuższej migracji wśród ptaków?",
"odpowiedzi": ["Jaskółka", "Bocian biały", "Albatros wędrowny"],
"poprawna": 0
},
{
"pytanie": "Które zwierzę jest znane z tego, że potrafi widzieć ultrafioletowe światło, niewidoczne dla ludzi?",
"odpowiedzi": ["Nietoperz", "Pies", "Motyl"],
"poprawna": 2
}
],
"trudne": [
{
"pytanie": "Które zwierzę ma największe oczy w stosunku do wielkości ciała?",
"odpowiedzi": ["Humbak", "Kałamarnica olbrzymia", "Kiwaczek leśny"],
"poprawna": 1
},
{
"pytanie": "Jakie zwierzę jest znane z najdłuższego okresu snu (hibernacji) bez przerwy, trwającego nawet do 7 lat?",
"odpowiedzi": ["Świstak górski", "Żaba Wooda", "Ślimak z gatunku Melanopsis"],
"poprawna": 1
},
{
"pytanie": "Jakie zwierzę posiada największą różnorodność chromosomów (liczba chromosomów u jednego gatunku)?",
"odpowiedzi": ["Mrówka Saharaensis", "Człowiek (Homo sapiens)", "Węgorz elektryczny"],
"poprawna": 0
},
{
"pytanie": "Które zwierzę ma najdłuższą żywotność znaną wśród kręgowców?",
"odpowiedzi": ["Rekin grenlandzki", "Żółw olbrzymi z Galapagos", "Wieloryb grenlandzki"],
"poprawna": 0
},
{
"pytanie": "Które zwierzę jest jedynym znanym gatunkiem zdolnym do regeneracji całkowicie utraconych kończyn?",
"odpowiedzi": ["Gekon", "Kameleon zwyczajny", "Salamandra plamista"],
"poprawna": 0
},
{
"pytanie": "Które zwierzę potrafi zmieniać kolor skóry najszybciej?",
"odpowiedzi": ["Kameleon jemeński", "Ośmiornica zwyczajna", "Płaszczka"],
"poprawna": 1
},
{
"pytanie": "Które zwierzę jest najbardziej jadowitym wężem na świecie?",
"odpowiedzi": ["Mamba czarna", "Kobra królewska", "Tajpan pustynny"],
"poprawna": 2
},
{
"pytanie": "Które zwierzę posiada najsilniejszy zmierzony uścisk szczęki na świecie?",
"odpowiedzi": ["Lew afrykański", "Orka (wieloryb zabójca)", "Krokodyl nilowy"],
"poprawna": 2
}
]
},
"Geografia": {
"łatwe": [
{
"pytanie": "Które z tych miast jest stolicą Australii?",
"odpowiedzi": ["Sydney", "Canberra", "Melbourne"],
"poprawna": 1
},
{
"pytanie": "Jakie morze leży pomiędzy Włochami a Chorwacją?",
"odpowiedzi": ["Morze Adriatyckie", "Morze Jońskie", "Morze Egejskie"],
"poprawna": 0
},
{
"pytanie": "Który kontynent jest najmniejszy pod względem powierzchni?",
"odpowiedzi": ["Australia", "Antarktyda", "Ameryka Południowa"],
"poprawna": 0
},
{
"pytanie": "W jakim kraju leży piramida Cheopsa?",
"odpowiedzi": ["Egipt", "Sudan", "Libia"],
"poprawna": 0
},
{
"pytanie": "Jakie państwo ma największą powierzchnię na świecie?",
"odpowiedzi": ["Stany Zjednoczone", "Rosja", "Chiny"],
"poprawna": 1
},
{
"pytanie": "Jak nazywa się najdłuższa rzeka w Polsce?",
"odpowiedzi": ["Wisła", "Warta", "Odra"],
"poprawna": 0
},
{
"pytanie": "Które państwo leży na Półwyspie Iberyjskim?",
"odpowiedzi": ["Hiszpania", "Włochy", "Grecja"],
"poprawna": 0
},
{
"pytanie": "Które miasto jest stolicą Kanady?",
"odpowiedzi": ["Toronto", "Vancouver", "Ottawa"],
"poprawna": 2
}
],
"średnie": [
{
"pytanie": "Jakie jest najwyżej położone stale zamieszkane miasto na świecie?",
"odpowiedzi": ["La Rinconada – Peru", "Lhasa - Tybet", "El Ato - Boliwia"],
"poprawna": 0
},
{
"pytanie": "W którym kraju znajduje się najwięcej jezior na świecie?",
"odpowiedzi": ["Kanada", "Rosja", "Stany Zjednoczone"],
"poprawna": 0
},
{
"pytanie": "Jak nazywa się największa wyspa świata, która nie jest kontynentem?",
"odpowiedzi": ["Nowa Gwinea", "Grenlandia", "Australia"],
"poprawna": 1
},
{
"pytanie": "Która rzeka jest najdłuższa w Europie?",
"odpowiedzi": ["Dniepr", "Dunaj", "Wołga"],
"poprawna": 2
},
{
"pytanie": "W jakim kraju znajduje się największy wulkan świata (Mauna Loa)?",
"odpowiedzi": ["Indonezja", "Stany Zjednoczone (Hawaje)", "Papua-Nowa Gwinea"],
"poprawna": 1
},
{
"pytanie": "Jakie jest najwyższe pasmo górskie w Afryce?",
"odpowiedzi": ["Góry Kilimandżaro", "Góry Smocze", "Góry Atlas"],
"poprawna": 0
},
{
"pytanie": "Które z państw leży jednocześnie na dwóch kontynentach, ale cała jego stolica znajduje się po stronie azjatyckiej?",
"odpowiedzi": ["Turcja", "Rosja", "Egipt"],
"poprawna": 0 # innym państwem który spełnia ten warunek jest Kazachstan (Astana/Nur-Sułtan)
},
{
"pytanie": "Na jakim kontynencie leży jezioro Bajkał?",
"odpowiedzi": ["Azja", "Europa", "Ameryka Południowa"],
"poprawna": 0
}
],
"trudne": [
{
"pytanie": "Które jezioro jest najstarsze na świecie?",
"odpowiedzi": ["Jezioro Bajkał", "Jezioro Tanganika", "Jezioro Wiktorii"],
"poprawna": 0
},
{
"pytanie": "Jaka jest największa depresja (najniżej położony punkt) na lądzie poza obszarem mórz i oceanów?",
"odpowiedzi": ["Dolina Jordanu", "Dolina Śmierci", "Basen Turfa"],
"poprawna": 2
},
{
"pytanie": "Która stolica jest położona na największej wysokości nad poziomem morzaw?",
"odpowiedzi": ["La Paz (Boliwia)", "Quito (Ekwador)", "Thimphu (Bhutan)"],
"poprawna": 0
},
{
"pytanie": "Jaki jest oficjalny najwyższy szczyt Antarktydy i jaka jest jego wysokość?",
"odpowiedzi": ["Mount Vinson – 4 892 m",
"Mount Erebus – 3 794 m",
"Mount Sidley – 4 285 m"],
"poprawna": 0
},
{
"pytanie": "Które państwo ma najwięcej wysp na świecie?",
"odpowiedzi": ["Szwecja", "Chiny", "Stany Zjednoczone"],
"poprawna": 0
},
{
"pytanie": "Jaki jest najdłuższy na świecie system jaskiń?",
"odpowiedzi": ["Mammoth Cave – USA", "Sistema Sac Actun – Meksyk", "Krubera - Gruzja"],
"poprawna": 0
},
{
"pytanie": "W którym kraju znajduje się najwyższy na świecie wodospad?",
"odpowiedzi": ["Wenezuela", "Zambia", "Norwegia"],
"poprawna": 0
},
{
"pytanie": "Które morze ma największą zasolenie?",
"odpowiedzi": ["Morze Martwe", "Morze Czerwone", "Morze Karaibskie"],
"poprawna": 0
}
]
},
"Programowanie": {
"łatwe": [
{
"pytanie": "Co oznacza skrót IDE w programowaniu?",
"odpowiedzi": ["Integrated Development Environment",
"Internal Data Execution",
"Internet Data Exchange"],
"poprawna": 0
},
{
"pytanie": "Jaką instrukcję używamy, by wypisać tekst na ekran w Pythonie?",
"odpowiedzi": ["print()",
"write()",
"output()"],
"poprawna": 0
},
{
"pytanie": "Jakiego znaku używa się do komentowania pojedynczej linii w Pythonie?",
"odpowiedzi": ["#", "//", "/*"],
"poprawna": 0
},
{
"pytanie": "Co oznacza pojęcie „syntax error”?",
"odpowiedzi": ["Błąd w składni kodu, który uniemożliwia jego wykonanie",
"Błąd logiczny w działaniu programu",
"Komentarz w kodzie"],
"poprawna": 0
},
{
"pytanie": "Co zwróci wyrażenie Python.lower()",
"odpowiedzi": ["python", "PYTHON", "Python"],
"poprawna": 0
},
{
"pytanie": "Jakiego typu danych zwraca funkcja enumerate()?",
"odpowiedzi": ["Iterator zwracający krotki (indeks, wartość)",
"Listę wartości",
"Słownik indeksów i wartości"],
"poprawna": 0
},
{
"pytanie": "Co oznacza __init__ w definicji klasy w Pythonie?",
"odpowiedzi": ["Metodę inicjalizującą nowo utworzony obiekt klasy",
"Metodę wywoływaną przy usuwaniu obiektu",
"Metodę definiującą zachowanie obiektu przy wywołaniu funkcji"],
"poprawna": 0
},
{
"pytanie": "Jaki operator służy do łączenia (konkatenacji) stringów?",
"odpowiedzi": ["+", "*", "/"],
"poprawna": 0
}
],
"średnie": [
{
"pytanie": "Co oznacza, że Python jest językiem interpretowanym?",
"odpowiedzi": ["Kod jest wykonywany linia po linii przez interpreter, bez konieczności kompilacji",
"Kod jest wykonywany bezpośrednio przez procesor bez pośrednictwa interpretera",
"Kod jest kompilowany do pliku wykonywalnego przed uruchomieniem"],
"poprawna": 0
},
{
"pytanie": "Jaka jest różnica między listą a słownikiem w Pythonie?",
"odpowiedzi": ["Lista przechowuje elementy w kolejności, słownik w parach klucz-wartość bez gwarancji kolejności",
"Lista może mieć tylko liczby, słownik tylko teksty",
"Słownik jest typem niemodyfikowalnym (immutable), lista jest modyfikowalna (mutable)"],
"poprawna": 0
},
{
"pytanie": "Co oznacza wyjątek (exception) w Pythonie?",
"odpowiedzi": ["Błąd, który występuje podczas wykonywania programu i może być obsłużony przez programistę",
"Sposób na przyspieszenie działania programu",
"Nowa zmienna deklarowana dynamicznie w programie"],
"poprawna": 0
},
{
"pytanie": "Jaki jest efekt wywołania metody append() na liście w Pythonie?",
"odpowiedzi": ["Dodaje pojedynczy element na koniec listy, modyfikując ją w miejscu",
"Tworzy nową listę z dodanym elementem, pozostawiając oryginał bez zmian",
"Usuwa pierwszy element listy i dodaje nowy na koniec"],
"poprawna": 0
},
{
"pytanie": "Co oznacza, że zmienna jest “lokalna” w funkcji?",
"odpowiedzi": ["Jest dostępna tylko w obrębie tej funkcji i przestaje istnieć po jej zakończeniu",
"Może być używana w całym programie, ale jest zdefiniowana w funkcji",
"Jest zmienną globalną z ograniczoną widocznością"],
"poprawna": 0
},
{
"pytanie": "Co zwróci wyrażenie bool([]) w Pythonie?",
"odpowiedzi": ["False (pusta lista jest traktowana jako fałsz)",
"True (każda zmienna ma wartość prawdy)",
"Zwróci błąd"],
"poprawna": 0
},
{
"pytanie": "Co to jest wyjątek w programowaniu?",
"odpowiedzi": ["Błąd lub zdarzenie, które przerywa normalny przebieg programu, ale można je obsłużyć",
"Nowy typ zmiennej przechowujący dane wejściowe użytkownika",
"Specjalna funkcja, która automatycznie poprawia błędy w kodzie"],
"poprawna": 0
},
{
"pytanie": "Co oznacza termin „mutable” w kontekście typów danych?",
"odpowiedzi": ["Obiekt, którego zawartość można zmieniać po jego utworzeniu",
"Obiekt, który nie może być skopiowany",
"Obiekt, który może zmieniać swój typ podczas działania programu"],
"poprawna": 0
}
],
"trudne": [
{
"pytanie": "Co w Pythonie oznacza pojęcie immutability (niemodyfikowalności) i które typy danych są tego przykładem?",
"odpowiedzi": ["Obiekty, których wartość nie może być zmieniona po utworzeniu, np. tuple i string",
"Obiekty, które można kopiować bez zmiany oryginału",
"Możliwość zmiany wartości po utworzeniu obiektu"],
"poprawna": 0
},
{
"pytanie": "Jakie jest podstawowe zastosowanie funkcji lambda w Pythonie?",
"odpowiedzi": ["Definiowanie krótkich funkcji anonimowych, zwykle jednowierszowych",
"Tworzenie modułów",
"Tworzenie klas dynamicznie"],
"poprawna": 0
},
{
"pytanie": "Czym jest i do czego służy virtual environment (środowisko wirtualne) w Pythonie?",
"odpowiedzi": ["Izolowanym środowiskiem, które pozwala na instalowanie pakietów bez wpływu na system globalny",
"Programem do zarządzania pamięcią",
"Specjalnym typem pliku wykonywalnego"],
"poprawna": 0
},
{
"pytanie": "Jaka jest różnica między listą a krotką (tuple) w Pythonie?",
"odpowiedzi": ["Lista jest zmienialna (mutable), a krotka niezmienialna (immutable)",
"Krotka jest typem globalnym, lista lokalnym",
"Krotka jest zmienialna (mutable), a lista niezmienialna (immutable)"],
"poprawna": 0
},
{
"pytanie": "Czym jest metaklasa w Pythonie i jakie jest jej główne zastosowanie?",
"odpowiedzi": ["Klasa tworząca inne klasy, kontrolująca ich sposób tworzenia",
"Klasa, która dziedziczy po klasie bazowej",
"Klasa służąca do serializacji danych"],
"poprawna": 0
},
{
"pytanie": "Jak działa garbage collector w Pythonie i jaka jest różnica między referencyjnym zliczaniem a cyklicznym zbieraniem śmieci?",
"odpowiedzi": ["Referencyjne zliczanie usuwa obiekty, gdy liczba ich referencji spadnie do zera, a cykliczne zbieranie wykrywa i usuwa obiekty tworzące cykle referencji",
"Garbage collector działa tylko na listach i słownikach",
"Garbage collector usuwa obiekty natychmiast po ich użyciu"],
"poprawna": 0
},
{
"pytanie": "Jaka jest różnica między programowaniem synchronicznym a asynchronicznym?",
"odpowiedzi": ["Synchroniczne czeka na zakończenie operacji, asynchroniczne pozwala wykonywać inne zadania równolegle",
"Synchroniczne to programowanie w Pythonie, asynchroniczne w Javie",
"Synchroniczne oznacza powolne działanie programu, asynchroniczne szybkie"],
"poprawna": 0
},
{
"pytanie": "Co oznacza termin „immutability” i jakie ma znaczenie w programowaniu funkcyjnym?",
"odpowiedzi": ["Obiekty niezmienne, co ułatwia uniknięcie błędów związanych z modyfikacją danych",
"Obiekty zawsze zmieniające się podczas działania programu",
"Obiekty, które nie mogą być użyte w programie"],
"poprawna": 0
}
]
}
}