Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/12/2012, 11:32
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: script cuestionario

Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2. class Answer(object):
  3.     def __init__(self, text):
  4.         self.text = text
  5.  
  6.     def __hash__(self):
  7.         return hash(self.text)
  8.  
  9.     def __eq__(self, other):
  10.         return self.text == other
  11.  
  12.     def __unicode__(self):
  13.         return u'%s' % (self.text,)
  14.  
  15. class Question(object):
  16.     def __init__(self, text, possible_answers):
  17.         self.text = text
  18.         self.possible_answers = possible_answers
  19.  
  20.     def get_next_question(self, answer):
  21.         if self.possible_answers:
  22.             return self.possible_answers.get(answer)
  23.  
  24.     def __unicode__(self):
  25.         s =  u'{0}\n'.format(self.text)
  26.         if self.possible_answers:
  27.             s += u'\n'.join(u'    ' + unicode(i) for i in self.possible_answers.keys())
  28.         return s
  29.  
  30. dialog = Question(u'¿Eres hombre o mujer?',
  31.             {
  32.                 Answer('hombre'): Question(u'¿Te llamas Ramón?',
  33.                  {
  34.                     Answer('si'): Question(u'Hola Ramón', None),
  35.                     Answer('no'): Question(u'Deberías de llarte Ramón', None),
  36.                     Answer('no se'): Question(u'¿Como no puedes saber?', None)
  37.                  }),
  38.                 Answer('mujer'): Question(u'¿Te llamas Maria?',
  39.                 {
  40.                     Answer('si'): Question(u'Hola Maria :D', None),
  41.                     Answer('no'): Question(u'Deberías llamarte Maria', None),
  42.                     Answer('no se'): Question('¿Como no puedes saber tu nombre?', None),
  43.                 })
  44.             }
  45.         )
  46.  
  47. question = dialog
  48. while question:
  49.     print unicode(question)
  50.     if question.possible_answers is None:
  51.         break
  52.     answer = Answer(raw_input('> '))
  53.     question = question.get_next_question(answer)

La verdad es sorprendentemente fácil de modelar con diccionarios.