diff --git a/main.py b/main.py index 1aaa6a0..b3da3e2 100644 --- a/main.py +++ b/main.py @@ -71,25 +71,29 @@ def vergleiche(respuesta, expecta): respuesta = '¡' + respuesta[1:] if respuesta[0] == '?' and expecta[0] == '¿': respuesta = '¿' + respuesta[1:] + expecta = re.sub(' \((irr.|pl.)\)', '', expecta) respuesta = unicodedata.normalize('NFD', respuesta) expecta = unicodedata.normalize('NFD', expecta) 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') expecta = expecta.encode('ASCII', 'ignore').decode('ASCII') - if respuesta == expecta: return 1 + if respuesta == expecta: return 2 respuesta = respuesta.casefold() expecta = expecta.casefold() - if respuesta == expecta: return 2 - respuesta = re.sub('\W', '', respuesta) - expecta = re.sub('\W', '', expecta) if respuesta == expecta: return 3 return 4 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("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: BIEN = 1 @@ -128,7 +132,7 @@ def einzelne_abfrage(palabra, status): return Resultado.ADIOS return Resultado.BIEN if bien else Resultado.MAL -def abfrage(parser): +def abfrage(parser, quiero_unidad): random.seed() try: with open(VOKABELN_FILE, 'r') as f: @@ -142,28 +146,29 @@ def abfrage(parser): return unidad = False + unidad_no = -1 paso = False cur_palabras = False bien = 0 mal = 0 for palabra in palabras: 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] print(f"{bcolors.BOLD}{unidad}{bcolors.ENDC}: {paso} (",end="") print(*c, sep="/", end=")") print() for n in range(5): # 1..4, no 5 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: - status[palabra['id']] = s + 1 + status[a_palabra['id']] = s + 1 bien+=1 case Resultado.MAL: if s > 0: - status[palabra['id']] = s - 1 + status[a_palabra['id']] = s - 1 mal+=1 continue case Resultado.ADIOS: @@ -178,6 +183,8 @@ def abfrage(parser): os.replace(STATUS_FILE + '.new', STATUS_FILE) cur_palabras = {0: [], 1: [], 2: [], 3: [], 4: [], 5: []} + if unidad != palabra['unidad']: + unidad_no += 1 unidad = palabra['unidad'] 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") 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('--unidad', type=int) args = parser.parse_args() if args.import_data: @@ -196,4 +204,4 @@ if args.import_data: elif args.import_status: import_status(args.import_status) else: - abfrage(parser) + abfrage(parser, args.unidad)