@ -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 )