Escribiendo un test en Python
Hola. Estoy haciendo un test en Python (consta solo de dos preguntas :P) donde, a partir de unas preguntas de culturilla general, uno ha de respondor correctamente el máximo número de preguntas posible; finalmente el intérprete devuelve el número de respuestas correctas. Aquí pego el código:
[quote]
def quest():
n = raw_input('¿Cuál es el número atómico del mercurio? ')
aciertos = []
if n == '81':
print 'Respuesta correcta'
aciertos.append('ea')
elif n != '81':
print 'Respuesta incorrecta'
k = raw_input('¿Cuál es la capital de Italia? ')
if k == 'Roma':
print 'Respuesta correcta'
else:
print 'Respuesta incorrecta'
print 'Has acertado', len(aciertos),'/2', 'preguntas' [/quote]
Bien, hagamos una prueba:
[quote]quert():
¿Cuál es el número atómico del mercurio? 81
¿Cuál es la capital de Italia? Udine (nótese no he respondido correctamete)
Has acertado 2/2 preguntas [/quote]
...Y me dice que he respondido correctamente a las dos preguntas cuando solo he respondido la primera. En cambio si respondo mal la primera y bien la segunda SÍ me dice que he acertado 1/2.
¿Qué pasa?
[quote]
def quest():
n = raw_input('¿Cuál es el número atómico del mercurio? ')
aciertos = []
if n == '81':
print 'Respuesta correcta'
aciertos.append('ea')
elif n != '81':
print 'Respuesta incorrecta'
k = raw_input('¿Cuál es la capital de Italia? ')
if k == 'Roma':
print 'Respuesta correcta'
else:
print 'Respuesta incorrecta'
print 'Has acertado', len(aciertos),'/2', 'preguntas' [/quote]
Bien, hagamos una prueba:
[quote]quert():
¿Cuál es el número atómico del mercurio? 81
¿Cuál es la capital de Italia? Udine (nótese no he respondido correctamete)
Has acertado 2/2 preguntas [/quote]
...Y me dice que he respondido correctamente a las dos preguntas cuando solo he respondido la primera. En cambio si respondo mal la primera y bien la segunda SÍ me dice que he acertado 1/2.
¿Qué pasa?
Bueno... realmente no se decirte si haz identado mal (recordar que en Python es importante el indentado para separar bloques...) Es una lastima que este foro no tenga una buena presentacion de codigo (al menos que cambien el tipo de letra a un monospace como Courier o algo asi!!!) asi que intentare transcribir tu codigo como deberia quedar (NOTA los '-' son para simular espacios...):
#--------------------------------------------------------------------
def quest():
-----------n = raw_input('¿Cuál es el número atómico del mercurio? ')
-----------aciertos = []
----------------------if n == '81':
---------------------------------print 'Respuesta correcta'
---------------------------------aciertos.append('ea')
----------------------elif n != '81':
---------------------------------print 'Respuesta incorrecta'
----------------------k = raw_input('¿Cuál es la capital de Italia? ')
----------------------if k == 'Roma':
---------------------------------print 'Respuesta correcta'
----------------------else:
---------------------------------print 'Respuesta incorrecta'
----------------------print 'Has acertado', len(aciertos),'/2', 'preguntas'
#--------------------------------------------------------------------
Bueno... a mi me funciona... (tambien agrege aciertos.append('ea') en el segundo if y anda bien -02, 1/2-ambos casos- y 2/2)
Supongo que seria un problema con el identado (usa TABS en vez de espacios... es mas seguro, aparte, escribir el codigo en un archivo de texto separado y despues ejecutarlo es mejor que escribirlo sobre el mismo interprete...)
Sitio oficial de Python: http://www.python.org/
#--------------------------------------------------------------------
def quest():
-----------n = raw_input('¿Cuál es el número atómico del mercurio? ')
-----------aciertos = []
----------------------if n == '81':
---------------------------------print 'Respuesta correcta'
---------------------------------aciertos.append('ea')
----------------------elif n != '81':
---------------------------------print 'Respuesta incorrecta'
----------------------k = raw_input('¿Cuál es la capital de Italia? ')
----------------------if k == 'Roma':
---------------------------------print 'Respuesta correcta'
----------------------else:
---------------------------------print 'Respuesta incorrecta'
----------------------print 'Has acertado', len(aciertos),'/2', 'preguntas'
#--------------------------------------------------------------------
Bueno... a mi me funciona... (tambien agrege aciertos.append('ea') en el segundo if y anda bien -02, 1/2-ambos casos- y 2/2)
Supongo que seria un problema con el identado (usa TABS en vez de espacios... es mas seguro, aparte, escribir el codigo en un archivo de texto separado y despues ejecutarlo es mejor que escribirlo sobre el mismo interprete...)
Sitio oficial de Python: http://www.python.org/
Perdon... se me fueron un poco los espacios (deberia funcionar igual... pero por las dudas...)
def quest():
----------------------n = raw_input('¿Cuál es el número atómico del mercurio? ')
----------------------aciertos = []
----------------------if n == '81':
---------------------------------print 'Respuesta correcta'
---------------------------------aciertos.append('ea')
----------------------elif n != '81':
---------------------------------print 'Respuesta incorrecta'
----------------------k = raw_input('¿Cuál es la capital de Italia? ')
----------------------if k == 'Roma':
---------------------------------print 'Respuesta correcta'
----------------------else:
---------------------------------print 'Respuesta incorrecta'
----------------------print 'Has acertado', len(aciertos),'/2', 'preguntas'
#--------------------------------------------------------------------
def quest():
----------------------n = raw_input('¿Cuál es el número atómico del mercurio? ')
----------------------aciertos = []
----------------------if n == '81':
---------------------------------print 'Respuesta correcta'
---------------------------------aciertos.append('ea')
----------------------elif n != '81':
---------------------------------print 'Respuesta incorrecta'
----------------------k = raw_input('¿Cuál es la capital de Italia? ')
----------------------if k == 'Roma':
---------------------------------print 'Respuesta correcta'
----------------------else:
---------------------------------print 'Respuesta incorrecta'
----------------------print 'Has acertado', len(aciertos),'/2', 'preguntas'
#--------------------------------------------------------------------