riabayonaor
commited on
Commit
•
f05565e
1
Parent(s):
17cf05a
Update app.py
Browse files
app.py
CHANGED
@@ -109,6 +109,42 @@ def generar_sistema_ecuaciones_3x3_y_respuestas():
|
|
109 |
sistema = f"{a}x + {b}y + {c}z = {e}\n\n\n{d}x + {f}y + {g}z = {h}\n\n\n{i}x + {j}y + {k}z = {l}"
|
110 |
return sistema, respuestas, respuestas_correctas
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
# Aquí va la función get_ui_elements que falta
|
113 |
def get_ui_elements():
|
114 |
"""Genera los elementos de la interfaz de usuario según el nivel actual."""
|
|
|
109 |
sistema = f"{a}x + {b}y + {c}z = {e}\n\n\n{d}x + {f}y + {g}z = {h}\n\n\n{i}x + {j}y + {k}z = {l}"
|
110 |
return sistema, respuestas, respuestas_correctas
|
111 |
|
112 |
+
def manejar_respuesta(respuesta_elegida, respuesta_correcta, nivel):
|
113 |
+
"""Evalúa la respuesta del usuario, proporcionando retroalimentación y una explicación."""
|
114 |
+
tolerancia = 1e-9
|
115 |
+
correcto = False
|
116 |
+
# Convierte la respuesta elegida a float o tuple de floats si es necesario
|
117 |
+
if isinstance(respuesta_correcta, tuple):
|
118 |
+
respuesta_elegida = tuple(map(float, respuesta_elegida.split(', ')))
|
119 |
+
else:
|
120 |
+
respuesta_elegida = float(respuesta_elegida)
|
121 |
+
|
122 |
+
# Comprueba si la respuesta es correcta dentro de una tolerancia
|
123 |
+
if nivel == 2: # Sistema 3x3
|
124 |
+
correcto = all(abs(r_e - r_c) < tolerancia for r_e, r_c in zip(respuesta_elegida, respuesta_correcta))
|
125 |
+
elif nivel == 1: # Sistema 2x2
|
126 |
+
correcto = all(abs(r_e - r_c) < tolerancia for r_e, r_c in zip(respuesta_elegida, respuesta_correcta))
|
127 |
+
else: # Ecuación lineal
|
128 |
+
correcto = abs(respuesta_elegida - respuesta_correcta) < tolerancia
|
129 |
+
|
130 |
+
if correcto:
|
131 |
+
resultado = "¡Correcto! +1 punto."
|
132 |
+
st.session_state.aciertos += 1
|
133 |
+
# Aquí podrías poner la lógica para cambiar de nivel si es necesario
|
134 |
+
if st.session_state.aciertos >= 5 and nivel == 0:
|
135 |
+
st.session_state.nivel = 1
|
136 |
+
st.success("¡Felicitaciones, has pasado al nivel Intermedio: Sistemas de ecuaciones lineales 2x2!")
|
137 |
+
elif st.session_state.aciertos >= 10 and nivel == 1:
|
138 |
+
st.session_state.nivel = 2
|
139 |
+
st.success("¡Felicitaciones, has pasado al nivel Difícil: Sistemas de ecuaciones lineales 3x3!")
|
140 |
+
else:
|
141 |
+
resultado = "Incorrecto, sigue practicando."
|
142 |
+
st.session_state.errores += 1
|
143 |
+
|
144 |
+
explicacion = chat_with_model(f"Explica el problema y por qué la respuesta {respuesta_elegida} es {'correcta' si correcto else 'incorrecta'}.")
|
145 |
+
return resultado + f" Escogiste la respuesta: {respuesta_elegida}. La respuesta correcta es: {respuesta_correcta}.\n{explicacion}"
|
146 |
+
|
147 |
+
|
148 |
# Aquí va la función get_ui_elements que falta
|
149 |
def get_ui_elements():
|
150 |
"""Genera los elementos de la interfaz de usuario según el nivel actual."""
|