GAS17 commited on
Commit
565ab11
·
verified ·
1 Parent(s): 2f38ba7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -16
app.py CHANGED
@@ -19,7 +19,7 @@ contexto = """
19
 
20
  def generar_preguntas(num_preguntas=38):
21
  prompt = f"""Basándote en el siguiente contexto sobre drones y aeronaves no tripuladas, genera {num_preguntas} preguntas de opción múltiple.
22
- Cada pregunta debe tener tres opciones de respuesta y solo una debe ser correcta. Deben ser dificiles.
23
  Devuelve las preguntas en el siguiente formato:
24
 
25
  1. [Pregunta 1]
@@ -49,15 +49,16 @@ def generar_preguntas(num_preguntas=38):
49
  current_question = {}
50
  for line in content.split('\n'):
51
  if re.match(r'^\d+\.', line):
52
- if current_question:
53
  preguntas.append(current_question)
54
  current_question = {'pregunta': line.split('.', 1)[1].strip(), 'opciones': []}
55
  elif line.startswith(('a)', 'b)', 'c)')):
56
  current_question['opciones'].append(line[2:].strip())
57
  elif line.startswith('Respuesta correcta:'):
58
- current_question['respuesta_correcta'] = ord(line.split(':')[1].strip()) - ord('a')
 
59
 
60
- if current_question:
61
  preguntas.append(current_question)
62
 
63
  return preguntas
@@ -66,7 +67,7 @@ def generar_preguntas(num_preguntas=38):
66
  return []
67
 
68
  # Aplicación Streamlit
69
- st.title("Vamooo Yenny, Brian, Nahuel, Gastón! ")
70
 
71
  # Inicializar o cargar preguntas
72
  if 'preguntas' not in st.session_state or not st.session_state.preguntas:
@@ -82,21 +83,26 @@ with st.form("quiz_form"):
82
  respuestas_usuario = []
83
  for i, pregunta in enumerate(st.session_state.preguntas):
84
  st.write(f"**Pregunta {i+1}:** {pregunta['pregunta']}")
85
- respuesta = st.radio(f"Selecciona una opción para la pregunta {i+1}:",
86
- pregunta['opciones'],
87
- key=f"pregunta_{i}")
88
- respuesta_indice = pregunta['opciones'].index(respuesta)
89
- respuestas_usuario.append(respuesta_indice)
90
-
91
- # Mostrar si la respuesta es correcta o incorrecta inmediatamente
92
- if respuesta_indice == pregunta['respuesta_correcta']:
93
- st.success("¡Correcto!")
 
 
 
 
94
  else:
95
- st.error(f"Incorrecto. La respuesta correcta es: {pregunta['opciones'][pregunta['respuesta_correcta']]}")
96
 
97
  submitted = st.form_submit_button("Enviar respuestas")
98
 
99
  # Calcular y mostrar el resultado final
100
  if submitted:
101
- correctas = sum(1 for user, pregunta in zip(respuestas_usuario, st.session_state.preguntas) if user == pregunta['respuesta_correcta'])
 
102
  st.write(f"Has acertado {correctas} de {len(st.session_state.preguntas)} preguntas.")
 
19
 
20
  def generar_preguntas(num_preguntas=38):
21
  prompt = f"""Basándote en el siguiente contexto sobre drones y aeronaves no tripuladas, genera {num_preguntas} preguntas de opción múltiple.
22
+ Cada pregunta debe tener tres opciones de respuesta y solo una debe ser correcta.
23
  Devuelve las preguntas en el siguiente formato:
24
 
25
  1. [Pregunta 1]
 
49
  current_question = {}
50
  for line in content.split('\n'):
51
  if re.match(r'^\d+\.', line):
52
+ if current_question and len(current_question.get('opciones', [])) == 3:
53
  preguntas.append(current_question)
54
  current_question = {'pregunta': line.split('.', 1)[1].strip(), 'opciones': []}
55
  elif line.startswith(('a)', 'b)', 'c)')):
56
  current_question['opciones'].append(line[2:].strip())
57
  elif line.startswith('Respuesta correcta:'):
58
+ respuesta = line.split(':')[1].strip().lower()
59
+ current_question['respuesta_correcta'] = {'a': 0, 'b': 1, 'c': 2}.get(respuesta, 0)
60
 
61
+ if current_question and len(current_question.get('opciones', [])) == 3:
62
  preguntas.append(current_question)
63
 
64
  return preguntas
 
67
  return []
68
 
69
  # Aplicación Streamlit
70
+ st.title("*Las preguntas tardan 2 minutos en generarse")
71
 
72
  # Inicializar o cargar preguntas
73
  if 'preguntas' not in st.session_state or not st.session_state.preguntas:
 
83
  respuestas_usuario = []
84
  for i, pregunta in enumerate(st.session_state.preguntas):
85
  st.write(f"**Pregunta {i+1}:** {pregunta['pregunta']}")
86
+ opciones = pregunta.get('opciones', [])
87
+ if opciones:
88
+ respuesta = st.radio(f"Selecciona una opción para la pregunta {i+1}:",
89
+ opciones,
90
+ key=f"pregunta_{i}")
91
+ respuesta_indice = opciones.index(respuesta)
92
+ respuestas_usuario.append(respuesta_indice)
93
+
94
+ # Mostrar si la respuesta es correcta o incorrecta inmediatamente
95
+ if respuesta_indice == pregunta.get('respuesta_correcta', 0):
96
+ st.success("¡Correcto!")
97
+ else:
98
+ st.error(f"Incorrecto. La respuesta correcta es: {opciones[pregunta.get('respuesta_correcta', 0)]}")
99
  else:
100
+ st.warning(f"No hay opciones disponibles para la pregunta {i+1}")
101
 
102
  submitted = st.form_submit_button("Enviar respuestas")
103
 
104
  # Calcular y mostrar el resultado final
105
  if submitted:
106
+ correctas = sum(1 for user, pregunta in zip(respuestas_usuario, st.session_state.preguntas)
107
+ if user == pregunta.get('respuesta_correcta', 0))
108
  st.write(f"Has acertado {correctas} de {len(st.session_state.preguntas)} preguntas.")