Esto se puede modelar muy bien con clases.
De hecho solo por diversión implemente las clases Opcion, Pregunta, Opciones y Preguntas.
Si hay que escribir mucho código, pero creo que mucho te lo puede autogenerar el editor.
Código Python:
Ver originalfrom random import shuffle
class Opcion:
def __init__(self, opcion, respuesta, es_valido=False):
self.opcion = opcion
self.respuesta = respuesta
self.es_valido = es_valido
def __eq__(self, other):
if self is other:
return True
if other is None:
return False
if not isinstance(other, Opcion):
return False
return other.opcion == self.opcion
def __cmp__(self, other):
if self.__eq__(other):
return 0
if not isinstance(other, Opcion):
return 1
return cmp(other.opcion, self.opcion)
def __hash__(self):
return hash(self.opcion)
def __str__(self):
return "%s) %s" % (self.opcion, self.respuesta)
class Opciones:
def __init__(self):
self.opciones = set()
def agregar(self, opcion):
self.opciones.add(opcion)
def borrar(self, opcion):
self.opciones.pop(opcion)
def limpiar(self):
self.opciones = set()
def __iter__(self):
for opcion in self.opciones:
yield opcion
def __str__(self):
return '\n'.join(str(opcion) for opcion in sorted(self.opciones, reverse=True))
class Pregunta:
def __init__(self, pregunta, opciones):
self.pregunta = pregunta
self.opciones = opciones
def es_correcto(self, opcion):
for opcion_ in self.opciones:
if opcion == opcion_.opcion and opcion_.es_valido:
return True
return False
def __str__(self):
return "%s\n%s" % (self.pregunta, self.opciones)
class Preguntas:
def __init__(self):
self.preguntas = set()
def agregar(self, pregunta):
self.preguntas.add(pregunta)
def borrar(self, pregunta):
self.preguntas.pop(pregunta)
def limpiar(self):
self.preguntas = set()
def __iter__(self):
aleatorio = sorted(self.preguntas)
shuffle(aleatorio)
for pregunta in aleatorio:
yield pregunta
def __str__(self):
return '\n'.join(pregunta for pregunta in sorted(self.preguntas))
preguntas = Preguntas()
opciones = Opciones()
opciones.agregar(Opcion("a", "Azul", es_valido=True))
opciones.agregar(Opcion("b", "Verde"))
opciones.agregar(Opcion("c", "Rojo"))
pregunta = Pregunta("De que color es el cielo?", opciones)
preguntas.agregar(pregunta)
opciones = Opciones()
opciones.agregar(Opcion("a", "6"))
opciones.agregar(Opcion("b", "5", es_valido=True))
opciones.agregar(Opcion("c", "4"))
pregunta = Pregunta("Cuantos dedos regularmente tiene una mano?", opciones)
preguntas.agregar(pregunta)
opciones = Opciones()
opciones.agregar(Opcion("a", "No"))
opciones.agregar(Opcion("b", "Si", es_valido=True))
opciones.agregar(Opcion("c", "Solo en el dia"))
pregunta = Pregunta("Es el sol una estrella?", opciones)
preguntas.agregar(pregunta)
for pregunta in preguntas:
print pregunta
respuesta = raw_input()
if pregunta.es_correcto(respuesta):
print "Correcto"
else:
print "Incorrecto"