Spaces:
Runtime error
Runtime error
File size: 2,825 Bytes
2ef45b1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
import gradio as gr
import json
import random
import matplotlib.pyplot as plt
# ---- Karteikasten-Logik (Leitner-System) ----
DATEI = "karteikarten.json"
def lade_karteikarten():
with open(DATEI, "r", encoding="utf-8") as f:
return json.load(f)
def speichere_karteikarten(karten):
with open(DATEI, "w", encoding="utf-8") as f:
json.dump(karten, f, indent=2, ensure_ascii=False)
def naechste_karte(karten):
gewichtet = []
for karte in karten:
gewicht = 6 - karte["stufe"]
gewichtet += [karte] * gewicht
return random.choice(gewichtet) if gewichtet else None
def verarbeite_antwort(karte, antwort_index, alle_karten):
korrekt = (antwort_index == karte["richtig"])
if korrekt:
karte["stufe"] = min(karte["stufe"] + 1, 5)
else:
karte["stufe"] = 1
speichere_karteikarten(alle_karten)
return korrekt, karte["stufe"]
def erstelle_fortschrittsgrafik(karten):
stufen = [1, 2, 3, 4, 5]
anzahl_karten = [sum(1 for k in karten if k["stufe"] == s) for s in stufen]
plt.figure(figsize=(8, 5))
plt.bar(stufen, anzahl_karten)
plt.xlabel("Lernstufe")
plt.ylabel("Anzahl Karteikarten")
plt.title("Karteikarten-Fortschritt")
plt.xticks(stufen)
plt.grid(axis="y")
pfad = "karteikasten_fortschritt.png"
plt.savefig(pfad)
plt.close()
return pfad
# ---- Gradio-App ----
karten = lade_karteikarten()
aktuelle_karte = naechste_karte(karten)
def quiz(antwort_index):
global aktuelle_karte, karten
if aktuelle_karte is None:
return "Alle Karten gelernt!", "", []
korrekt, neue_stufe = verarbeite_antwort(aktuelle_karte, antwort_index, karten)
text = "✅ Richtig!" if korrekt else "❌ Leider falsch."
feedback = f"{text} Diese Karte ist jetzt in Stufe {neue_stufe}."
aktuelle_karte = naechste_karte(karten)
if aktuelle_karte:
return feedback, aktuelle_karte["frage"], aktuelle_karte["antworten"]
else:
return "Du hast alle Karten durch!", "", []
def zeige_fortschritt():
pfad = erstelle_fortschrittsgrafik(karten)
return pfad
with gr.Blocks() as demo:
gr.Markdown("# 📚 Karteikarten-Lernen – §34a Leitner-System")
frage = gr.Textbox(label="Frage", value=aktuelle_karte["frage"] if aktuelle_karte else "", interactive=False)
feedback = gr.Textbox(label="Feedback", interactive=False)
btns = gr.Radio(aktuelle_karte["antworten"] if aktuelle_karte else [], label="Antwort wählen")
weiter = gr.Button("Antwort prüfen")
weiter.click(fn=quiz, inputs=btns, outputs=[feedback, frage, btns])
gr.Markdown("## 📊 Fortschritt")
zeige_btn = gr.Button("Fortschritt anzeigen")
fortschritt_img = gr.Image()
zeige_btn.click(fn=zeige_fortschritt, inputs=None, outputs=fortschritt_img)
demo.launch()
|