Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:blc:informatik:glf22:python:woertlitrainer [2022/12/12 09:28] Ivo Blöchliger [Besserer Programmierstil] |
lehrkraefte:blc:informatik:glf22:python:woertlitrainer [2022/12/16 07:02] (current) Ivo Blöchliger [Python Snippets] |
||
---|---|---|---|
Line 236: | Line 236: | ||
for i in range(10): | for i in range(10): | ||
# Vokabular sortieren, wobei ein Eintrag mit score+zufallszahl bewertet wird: | # Vokabular sortieren, wobei ein Eintrag mit score+zufallszahl bewertet wird: | ||
- | voci = sorted(voci, key = lambda eintrag: eintrag[' | + | voci.sort(key = lambda eintrag: eintrag[' |
print(f" | print(f" | ||
</ | </ | ||
Line 333: | Line 333: | ||
daten_speichern(voci, | daten_speichern(voci, | ||
</ | </ | ||
+ | |||
+ | Dazu gibt es einen [[https:// | ||
<hidden Lösungsvorschlag> | <hidden Lösungsvorschlag> | ||
- | <code python voci-v2.py> | + | <code python voci-refactored.py> |
import sys | import sys | ||
import os | import os | ||
Line 341: | Line 343: | ||
import random | import random | ||
- | + | ################## | |
- | + | # Daten einlesen # | |
- | def wort_bestimmen(voci): | + | ################## |
- | voci.sort(key = lambda eintrag: eintrag[' | + | |
- | | + | |
- | return voci[0] | + | |
- | + | ||
- | def wort_abfragen(paar, | + | |
- | print(f" | + | |
- | if anzahlfehler> | + | |
- | print(f" | + | |
- | | + | |
- | eingabe = sys.stdin.readline().strip() | + | |
- | return eingabe | + | |
- | + | ||
- | def wort_korrekt(eingabe, | + | |
- | if (eingabe!=paar[' | + | |
- | return False | + | |
- | if eingabe==paar[' | + | |
- | if anzahlfehler==0: | + | |
- | paar[' | + | |
- | if anzahlfehler==1: | + | |
- | paar[' | + | |
- | else: | + | |
- | paar[' | + | |
- | if (paar[' | + | |
- | paar[' | + | |
- | return True | + | |
- | + | ||
- | + | ||
- | def wort_lernen(paar): | + | |
- | """ | + | |
- | ok = False # Benutzer hat noch nicht richtig geantwortet | + | |
- | anzahlfehler = 0 | + | |
- | while not ok: | + | |
- | eingabe = wort_abfragen(paar, | + | |
- | + | ||
- | if eingabe==" | + | |
- | | + | |
- | + | ||
- | if wort_korrekt(eingabe, | + | |
- | return False | + | |
- | + | ||
- | anzahlfehler = anzahlfehler + 1 | + | |
- | + | ||
- | + | ||
- | def abfragen(voci): | + | |
- | """ | + | |
- | while True: | + | |
- | paar = wort_bestimmen(voci) | + | |
- | programmAbbruch = wort_lernen(paar) | + | |
- | if programmAbbruch: | + | |
- | break | + | |
def dateinamen_bestimmen(): | def dateinamen_bestimmen(): | ||
Line 414: | Line 365: | ||
def daten_einlesen(): | def daten_einlesen(): | ||
- | | + | |
- | | + | |
# Daten einlesen | # Daten einlesen | ||
- | with open(datei, " | + | with open(dateinamen, " |
voci = json.loads(f.read()) | voci = json.loads(f.read()) | ||
+ | # Scores hinzufügen, | ||
scores_hinzufuegen(voci) | scores_hinzufuegen(voci) | ||
- | return voci, datei | + | return voci, dateinamen |
- | def daten_speichern(voci, datei): | + | ########## |
- | """ | + | # Lernen # |
- | with open(datei, " | + | ########## |
+ | |||
+ | def hole_eingabe(paar, anzahlfehler): | ||
+ | | ||
+ | print(f"Übersetze: {paar[' | ||
+ | if anzahlfehler> | ||
+ | print(f" | ||
+ | # Eingabe vom Benutzer | ||
+ | return sys.stdin.readline().strip() | ||
+ | |||
+ | |||
+ | def wort_korrekt(eingabe, | ||
+ | if eingabe != paar[' | ||
+ | return False # Funktion sofort beenden | ||
+ | # Eingabe ist korrekt | ||
+ | if anzahlfehler> | ||
+ | paar[' | ||
+ | if (paar[' | ||
+ | paar[' | ||
+ | return True | ||
+ | paar[' | ||
+ | return True | ||
+ | |||
+ | |||
+ | def wort_abfragen(paar): | ||
+ | anzahlfehler = 0 | ||
+ | while True: # Endlos Schleife | ||
+ | eingabe = hole_eingabe(paar, | ||
+ | if eingabe=="x": | ||
+ | return True # Programmabbruch | ||
+ | if wort_korrekt(eingabe, | ||
+ | return False # Wort korrekt, aber Programm nicht beenden | ||
+ | anzahlfehler = anzahlfehler + 1 | ||
+ | |||
+ | |||
+ | def wort_bestimmen(voci): | ||
+ | voci.sort(key = lambda eintrag: eintrag[' | ||
+ | # Aktuelles paar ist das erste in der Liste | ||
+ | return voci[0] | ||
+ | |||
+ | |||
+ | def abfragen(voci): | ||
+ | while True: # Endlosschleife | ||
+ | paar = wort_bestimmen(voci) | ||
+ | programmAbbruch = wort_abfragen(paar) | ||
+ | if programmAbbruch: | ||
+ | return | ||
+ | |||
+ | |||
+ | def daten_speichern(voci, | ||
+ | with open(dateinamen, " | ||
f.write(json.dumps(voci, | f.write(json.dumps(voci, | ||
f.write(" | f.write(" | ||
- | print(" | ||
- | ##################### | ||
- | ### Hauptprogramm ### | ||
- | ##################### | ||
- | voci, datei = daten_einlesen() | + | voci, dateiname |
abfragen(voci) | abfragen(voci) | ||
- | daten_speichern(voci, | + | daten_speichern(voci, |
</ | </ | ||
</ | </ | ||