Skip to content

Commit 9c5e8aa

Browse files
committed
readme data quiz
1 parent a1be78e commit 9c5e8aa

File tree

1 file changed

+335
-0
lines changed

1 file changed

+335
-0
lines changed

game13/README.md

Lines changed: 335 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,335 @@
1+
# 🎮 Cyber Quiz - Sistema di Quiz Interattivo con Analisi Dati
2+
3+
Un sistema completo per la creazione, esecuzione e analisi di quiz educativi.
4+
5+
![Python](https://img.shields.io/badge/Python-3.8%2B-blue)
6+
![PyGame Zero](https://img.shields.io/badge/PyGame_Zero-1.2%2B-green)
7+
![Polars](https://img.shields.io/badge/Polars-0.19%2B-orange)
8+
![Streamlit](https://img.shields.io/badge/Streamlit-1.28%2B-red)
9+
10+
---
11+
12+
## 📚 Indice
13+
14+
- [Panoramica](#-panoramica)
15+
- [Struttura del Progetto](#-struttura-del-progetto)
16+
- [Prerequisiti](#-prerequisiti)
17+
- [Installazione](#-installazione)
18+
- [Guida Didattica](#-guida-didattica)
19+
- [FAQ](#-faq)
20+
21+
---
22+
23+
## 🎯 Panoramica
24+
25+
**Cyber Quiz** è un sistema educativo completo che permette di:
26+
27+
1. **Creare quiz interattivi** con domande a scelta multipla
28+
2. **Raccogliere risposte** degli studenti con precisione al millisecondo
29+
3. **Aggregare dati** da più sessioni di quiz
30+
4. **Visualizzare insights** tramite dashboard interattiva
31+
32+
### Obiettivi Didattici
33+
34+
- Apprendere la gestione di file CSV con Python
35+
- Comprendere il ciclo di vita dei dati (input → elaborazione → output)
36+
- Utilizzare librerie moderne (Polars, Streamlit)
37+
- Sviluppare capacità di analisi dati
38+
39+
---
40+
41+
## 📁 Struttura del Progetto
42+
43+
```
44+
cyber-quiz/
45+
46+
├── quiz.py # Gioco quiz interattivo (PyGame Zero)
47+
├── aggregatore_csv.py # Script per aggregare risposte studenti
48+
├── dashboard_quiz.py # Dashboard Streamlit per analisi
49+
50+
├── Domande-Biella/ # Set domande su Biella
51+
│ ├── domande.csv
52+
│ └── risposte.csv
53+
54+
├── Domande-Python/ # Set domande su Python
55+
│ ├── domande.csv
56+
│ └── risposte.csv
57+
58+
├── risposte_studenti/ # Directory per risposte degli studenti
59+
│ ├── alice_risposte.csv
60+
│ ├── bob_risposte.csv
61+
│ └── ...
62+
63+
├── risposte_tutti.csv # File aggregato (generato)
64+
65+
└── README.md # Questo file
66+
```
67+
68+
---
69+
70+
## 🔧 Prerequisiti
71+
72+
### Software Necessario
73+
74+
- **Python 3.8+** ([Download](https://www.python.org/downloads/))
75+
- **Editor di testo** (VS Code, PyCharm, Thonny o anche Notepad++)
76+
77+
### Librerie Python
78+
79+
```bash
80+
pip install pgzero polars streamlit
81+
```
82+
83+
---
84+
85+
## 📦 Installazione
86+
87+
```bash
88+
# Installa le dipendenze
89+
pip install pgzero polars streamlit
90+
```
91+
92+
---
93+
94+
## 🎓 Guida Didattica
95+
96+
Il progetto è diviso in **3 fasi** didattiche:
97+
98+
---
99+
100+
## 📖 FASE 1: Quiz Interattivo (Lezione 1)
101+
102+
### Obiettivo
103+
Gli studenti giocano al quiz e imparano come vengono salvati i dati.
104+
105+
### Passi
106+
107+
#### 1. Preparazione
108+
```bash
109+
# Copia un set di domande nella directory principale
110+
cp Domande-Biella/domande.csv .
111+
cp Domande-Biella/risposte.csv .
112+
```
113+
114+
#### 2. Esecuzione del Quiz
115+
```bash
116+
python quiz.py
117+
```
118+
119+
#### 3. Come Giocare
120+
1. **Inserisci il tuo nome** (es. "alice")
121+
2. **Premi ENTER** per iniziare
122+
3. **Clicca sulla risposta** che ritieni corretta
123+
4. Il quiz continua fino all'ultima domanda
124+
5. Alla fine, premi **SPAZIO** per far giocare un altro studente
125+
126+
#### 4. Risultato
127+
Viene creato un file: `alice_risposte.csv` con:
128+
- Nome studente
129+
- ID domanda
130+
- Risposta fornita (1-4)
131+
- Tempo di risposta (in millisecondi)
132+
133+
### Esempio Output CSV
134+
```csv
135+
nome_utente,id_domanda,numero_risposta_fornita,tempo_risposta
136+
alice,1,2,3250
137+
alice,2,3,1890
138+
alice,3,1,5420
139+
```
140+
141+
### 💡 Concetti Didattici
142+
- **Lettura CSV**: Come caricare domande da file
143+
- **Scrittura CSV**: Come salvare risposte
144+
- **Gestione del tempo**: Misurazione in millisecondi
145+
- **Randomizzazione**: Le domande appaiono in ordine casuale
146+
147+
---
148+
149+
## 📖 FASE 2: Aggregazione Dati (Lezione 2)
150+
151+
### Obiettivo
152+
Raccogliere tutte le risposte degli studenti in un unico file.
153+
154+
### Passi
155+
156+
#### 1. Raccolta Risposte
157+
Dopo che tutti gli studenti hanno giocato, sposta i loro file CSV:
158+
159+
```bash
160+
# Crea la directory
161+
mkdir risposte_studenti
162+
163+
# Sposta tutti i file risposte
164+
mv alice_risposte.csv risposte_studenti/
165+
mv bob_risposte.csv risposte_studenti/
166+
mv charlie_risposte.csv risposte_studenti/
167+
```
168+
169+
#### 2. Aggregazione
170+
```bash
171+
python aggregatore_csv.py
172+
```
173+
174+
#### 3. Risultato
175+
Viene creato `risposte_tutti.csv` che contiene TUTTE le risposte.
176+
177+
### 💡 Concetti Didattici
178+
- **Loop sui file**: Iterare su più file
179+
- **Concatenazione DataFrame**: Unire dati da fonti multiple
180+
- **Gestione directory**: Lavorare con percorsi e cartelle
181+
182+
---
183+
184+
## 📖 FASE 3: Dashboard e Analisi (Lezione 3)
185+
186+
### Obiettivo
187+
Visualizzare statistiche e insights tramite dashboard interattiva.
188+
189+
### Passi
190+
191+
#### 1. Verifica File
192+
Assicurati che questi file siano nella stessa cartella:
193+
```bash
194+
ls -la *.csv
195+
# Dovresti vedere:
196+
# - domande.csv
197+
# - risposte.csv
198+
# - risposte_tutti.csv
199+
```
200+
201+
#### 2. Esecuzione Dashboard
202+
```bash
203+
streamlit run dashboard_quiz.py
204+
```
205+
206+
#### 3. Visualizzazione
207+
Il browser si aprirà automaticamente su `http://localhost:8501`
208+
209+
### 📊 Sezioni della Dashboard
210+
211+
1. **Statistiche Generali**: Numero studenti, domande, risposte
212+
2. **Analisi Correttezza**: Percentuale risposte corrette globale
213+
3. **Classifica Studenti**: Tabella ordinata per punteggio
214+
4. **Difficoltà Domande**: Quali domande erano più difficili?
215+
5. **Grafico Prestazioni**: Visualizzazione grafica dei risultati
216+
6. **Tempo Medio**: Analisi dei tempi di risposta
217+
218+
### 💡 Concetti Didattici
219+
- **Join di DataFrame**: Unire dati da tabelle diverse
220+
- **Aggregazioni**: Calcolare medie, somme, conteggi
221+
- **Visualizzazioni**: Grafici e tabelle interattive
222+
223+
---
224+
225+
## 📄 Struttura File CSV
226+
227+
### domande.csv
228+
```csv
229+
id_domanda,domanda,risposta_1,risposta_2,risposta_3,risposta_4
230+
1,Qual è la maschera tipica...,Arlecchino,La Bela Majin,Babi,Gianduia
231+
2,In che anno Biella fu fondata?,1245,1379,1160,1472
232+
```
233+
234+
### risposte.csv
235+
```csv
236+
id_domanda,numero_risposta_corretta
237+
1,2
238+
2,2
239+
3,1
240+
```
241+
242+
### alice_risposte.csv (output quiz)
243+
```csv
244+
nome_utente,id_domanda,numero_risposta_fornita,tempo_risposta
245+
alice,1,2,3250
246+
alice,2,3,1890
247+
```
248+
249+
---
250+
251+
## 🎨 Personalizzazione
252+
253+
### Creare Nuove Domande
254+
255+
1. Crea `domande.csv` con le colonne: `id_domanda,domanda,risposta_1,risposta_2,risposta_3,risposta_4`
256+
2. Crea `risposte.csv` con: `id_domanda,numero_risposta_corretta`
257+
3. Usa nel quiz!
258+
259+
### Modificare il Tempo
260+
261+
In `quiz.py`, cambia:
262+
```python
263+
TEMPO_DOMANDA = 15 # secondi per domanda
264+
```
265+
266+
---
267+
268+
## ❓ FAQ
269+
270+
### Il quiz non parte
271+
272+
**Soluzione**:
273+
```bash
274+
pip install pgzero
275+
```
276+
277+
### Le risposte non si vedono
278+
279+
Verifica che `domande.csv` abbia le colonne con underscore: `risposta_1`, `risposta_2`, etc.
280+
281+
### La dashboard dà errore
282+
283+
Assicurati che:
284+
1. `domande.csv` abbia la colonna `id_domanda`
285+
2. `risposte.csv` abbia la colonna `id_domanda`
286+
3. `risposte_tutti.csv` esista
287+
288+
---
289+
290+
## 🔄 Workflow Tipico in Classe
291+
292+
```
293+
1. PREPARAZIONE (5 min)
294+
└── Distribuzione file domande
295+
296+
2. QUIZ (15 min)
297+
└── Ogni studente gioca
298+
299+
3. RACCOLTA (5 min)
300+
└── Raccogli file CSV in risposte_studenti/
301+
302+
4. AGGREGAZIONE (2 min)
303+
└── python aggregatore_csv.py
304+
305+
5. ANALISI (20 min)
306+
└── streamlit run dashboard_quiz.py
307+
└── Discussione risultati
308+
309+
6. RIFLESSIONE (10 min)
310+
└── Cosa abbiamo imparato?
311+
```
312+
313+
---
314+
315+
## 📚 Risorse
316+
317+
- **Polars**: https://pola-rs.github.io/polars/
318+
- **Streamlit**: https://docs.streamlit.io/
319+
- **PyGame Zero**: https://pygame-zero.readthedocs.io/
320+
321+
---
322+
323+
## 📝 Licenza
324+
325+
MIT License - Materiale didattico per Liceo Scientifico
326+
327+
---
328+
329+
<div align="center">
330+
331+
**Fatto con ❤️ da [Python Biella Group](https://github.com/PythonBiellaGroup)**
332+
333+
*"Il miglior modo per imparare è creare qualcosa di divertente!"*
334+
335+
</div>

0 commit comments

Comments
 (0)