|
|
@ -71,9 +71,15 @@ def vergleiche(respuesta, expecta): |
|
|
|
respuesta = '¡' + respuesta[1:] |
|
|
|
if respuesta[0] == '?' and expecta[0] == '¿': |
|
|
|
respuesta = '¿' + respuesta[1:] |
|
|
|
respuesta = re.sub('(~n|n~)', 'ñ', respuesta) |
|
|
|
|
|
|
|
expecta = re.sub(' \((irr.|pl.)\)', '', expecta) |
|
|
|
respuesta = unicodedata.normalize('NFD', respuesta) |
|
|
|
expecta = unicodedata.normalize('NFD', expecta) |
|
|
|
respuesta = re.sub(' ?([!?¿¡….]) ?', r'\1', respuesta) |
|
|
|
expecta = re.sub(' ?([!?¿¡….]) ?', r'\1', expecta) |
|
|
|
respuesta = re.sub(r'\.\.\.', '…', respuesta) |
|
|
|
expecta = re.sub(r'\.\.\.', '…', expecta) |
|
|
|
if respuesta == expecta: return 0 |
|
|
|
respuesta = re.sub('[!?¿¡…. ]', '', respuesta) |
|
|
|
expecta = re.sub('[!?¿¡…. ]', '', expecta) |
|
|
@ -94,6 +100,10 @@ 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 |
|
|
|
assert vergleiche("¿De dónde …?", "¿De dónde… ?") == 0 |
|
|
|
assert vergleiche("el nombre", "el apellido") == 4 |
|
|
|
assert vergleiche("Tengo … a~nos.", "Tengo... años.") == 0 |
|
|
|
assert vergleiche("¿Cuántos a~nos tienes?", "¿Cuántos años tienes?") == 0 |
|
|
|
|
|
|
|
class Resultado: |
|
|
|
CORRECTO = 0 |
|
|
@ -123,11 +133,10 @@ def einzelne_abfrage(palabra, status): |
|
|
|
else: |
|
|
|
match status: |
|
|
|
case 0: bien = Resultado.BIEN if resultado < 4 else Resultado.NO_BIEN |
|
|
|
case 1: bien = Resultado.BIEN if resultado < 2 else (RESULTADO.NO_BIEN if resultado < 4 else Resultado.MAL) |
|
|
|
case 2: bien = Resultado.BIEN if resultado < 2 else (RESULTADO.NO_BIEN if resultado < 3 else Resultado.MAL) |
|
|
|
case 3: bien = resultado < 2 |
|
|
|
case 4: bien = resultado < 1 |
|
|
|
bien = Resultado.BIEN if bien else Resultado.MAL |
|
|
|
case 1: bien = Resultado.BIEN if resultado < 3 else (Resultado.NO_BIEN if resultado < 4 else Resultado.MAL) |
|
|
|
case 2: bien = Resultado.BIEN if resultado < 2 else (Resultado.NO_BIEN if resultado < 3 else Resultado.MAL) |
|
|
|
case 3: bien = Resultado.BIEN if resultado < 2 else Resultado.MAL |
|
|
|
case 4: bien = Resultado.BIEN if resultado < 1 else Resultado.MAL |
|
|
|
print(f" {bcolors.LINK_START}file://{AUDIO_BASE}{palabra['audio']}.aac{bcolors.LINK_MIDDLE}",end="") |
|
|
|
if bien == Resultado.CORRECTO: |
|
|
|
print(f"{bcolors.OKGREEN}✓{bcolors.ENDC}",end="") |
|
|
@ -181,10 +190,10 @@ class Sesion: |
|
|
|
for palabra in palabras: |
|
|
|
match einzelne_abfrage(palabra, status): |
|
|
|
case Resultado.CORRECTO: |
|
|
|
self.status[palabra['id']] = status + (2 if status < 2 else 1) |
|
|
|
self.status[palabra['id']] = (status or 0) + (2 if (status or 0) < 2 else 1) |
|
|
|
self.bien += 1 |
|
|
|
case Resultado.BIEN: |
|
|
|
self.status[palabra['id']] = status + 1 |
|
|
|
self.status[palabra['id']] = (status or 0) + 1 |
|
|
|
self.bien += 1 |
|
|
|
case Resultado.NO_BIEN: |
|
|
|
continue |
|
|
|