Browse Source

Update

main
Adrian Heine 8 months ago
parent
commit
916525e86f
  1. 38
      main.py

38
main.py

@ -71,25 +71,29 @@ def vergleiche(respuesta, expecta):
respuesta = '¡' + respuesta[1:] respuesta = '¡' + respuesta[1:]
if respuesta[0] == '?' and expecta[0] == '¿': if respuesta[0] == '?' and expecta[0] == '¿':
respuesta = '¿' + respuesta[1:] respuesta = '¿' + respuesta[1:]
expecta = re.sub(' \((irr.|pl.)\)', '', expecta)
respuesta = unicodedata.normalize('NFD', respuesta) respuesta = unicodedata.normalize('NFD', respuesta)
expecta = unicodedata.normalize('NFD', expecta) expecta = unicodedata.normalize('NFD', expecta)
if respuesta == expecta: return 0 if respuesta == expecta: return 0
respuesta = re.sub('[!?¿¡…. ]', '', respuesta)
expecta = re.sub('[!?¿¡…. ]', '', expecta)
if respuesta == expecta: return 1
respuesta = respuesta.encode('ASCII', 'ignore').decode('ASCII') respuesta = respuesta.encode('ASCII', 'ignore').decode('ASCII')
expecta = expecta.encode('ASCII', 'ignore').decode('ASCII') expecta = expecta.encode('ASCII', 'ignore').decode('ASCII')
if respuesta == expecta: return 1
if respuesta == expecta: return 2
respuesta = respuesta.casefold() respuesta = respuesta.casefold()
expecta = expecta.casefold() expecta = expecta.casefold()
if respuesta == expecta: return 2
respuesta = re.sub('\W', '', respuesta)
expecta = re.sub('\W', '', expecta)
if respuesta == expecta: return 3 if respuesta == expecta: return 3
return 4 return 4
assert vergleiche("e", "e") == 0 assert vergleiche("e", "e") == 0
assert vergleiche("é", "e") == 1
assert vergleiche("Bien", "bien") == 2
assert vergleiche("é", "e") == 2
assert vergleiche("Bien", "bien") == 3
assert vergleiche("quétal", "Qué tal") == 3 assert vergleiche("quétal", "Qué tal") == 3
assert vergleiche("Buenas Noches", "¡Buenas noches!") == 3
assert vergleiche("Buenas noches", "¡Buenas noches!") == 1
assert vergleiche("ser", "ser (irr.)") == 0
assert vergleiche("hacer algo", "hacer (irr.) algo") == 0
assert vergleiche("padres", "padres (pl.)") == 0
class Resultado: class Resultado:
BIEN = 1 BIEN = 1
@ -128,7 +132,7 @@ def einzelne_abfrage(palabra, status):
return Resultado.ADIOS return Resultado.ADIOS
return Resultado.BIEN if bien else Resultado.MAL return Resultado.BIEN if bien else Resultado.MAL
def abfrage(parser):
def abfrage(parser, quiero_unidad):
random.seed() random.seed()
try: try:
with open(VOKABELN_FILE, 'r') as f: with open(VOKABELN_FILE, 'r') as f:
@ -142,28 +146,29 @@ def abfrage(parser):
return return
unidad = False unidad = False
unidad_no = -1
paso = False paso = False
cur_palabras = False cur_palabras = False
bien = 0 bien = 0
mal = 0 mal = 0
for palabra in palabras: for palabra in palabras:
if paso != palabra['paso']: if paso != palabra['paso']:
if cur_palabras != False:
if cur_palabras != False and (quiero_unidad == None or quiero_unidad == unidad_no):
c = [len(cur_palabras[x]) for x in cur_palabras] c = [len(cur_palabras[x]) for x in cur_palabras]
print(f"{bcolors.BOLD}{unidad}{bcolors.ENDC}: {paso} (",end="") print(f"{bcolors.BOLD}{unidad}{bcolors.ENDC}: {paso} (",end="")
print(*c, sep="/", end=")") print(*c, sep="/", end=")")
print() print()
for n in range(5): # 1..4, no 5 for n in range(5): # 1..4, no 5
random.shuffle(cur_palabras[n]) random.shuffle(cur_palabras[n])
for palabra in cur_palabras[n]:
s = status.get(palabra['id'], 0)
match einzelne_abfrage(palabra, s):
for a_palabra in cur_palabras[n]:
s = status.get(a_palabra['id'], 0)
match einzelne_abfrage(a_palabra, s):
case Resultado.BIEN: case Resultado.BIEN:
status[palabra['id']] = s + 1
status[a_palabra['id']] = s + 1
bien+=1 bien+=1
case Resultado.MAL: case Resultado.MAL:
if s > 0: if s > 0:
status[palabra['id']] = s - 1
status[a_palabra['id']] = s - 1
mal+=1 mal+=1
continue continue
case Resultado.ADIOS: case Resultado.ADIOS:
@ -178,6 +183,8 @@ def abfrage(parser):
os.replace(STATUS_FILE + '.new', STATUS_FILE) os.replace(STATUS_FILE + '.new', STATUS_FILE)
cur_palabras = {0: [], 1: [], 2: [], 3: [], 4: [], 5: []} cur_palabras = {0: [], 1: [], 2: [], 3: [], 4: [], 5: []}
if unidad != palabra['unidad']:
unidad_no += 1
unidad = palabra['unidad'] unidad = palabra['unidad']
paso = palabra['paso'] paso = palabra['paso']
@ -188,6 +195,7 @@ default_data_file = os.environ['PWD'] + '/assets/amf/vokabelTrainer147.amf'
parser.add_argument('--import-data', type=str, help="Path to assets", metavar="DIR") parser.add_argument('--import-data', type=str, help="Path to assets", metavar="DIR")
default_status_file = os.environ['HOME'] + '/klett/1266/vokabeltrainerData147' default_status_file = os.environ['HOME'] + '/klett/1266/vokabeltrainerData147'
parser.add_argument('--import-status', type=str, help="Path to AMF File, defaults to " + default_status_file, metavar="FILE", nargs='?', const=default_status_file) parser.add_argument('--import-status', type=str, help="Path to AMF File, defaults to " + default_status_file, metavar="FILE", nargs='?', const=default_status_file)
parser.add_argument('--unidad', type=int)
args = parser.parse_args() args = parser.parse_args()
if args.import_data: if args.import_data:
@ -196,4 +204,4 @@ if args.import_data:
elif args.import_status: elif args.import_status:
import_status(args.import_status) import_status(args.import_status)
else: else:
abfrage(parser)
abfrage(parser, args.unidad)
Loading…
Cancel
Save