1+ """
2+ /*
3+ * EJERCICIO:
4+ * Cada 1 de septiembre, el Hogwarts Express parte hacia la escuela
5+ * de programación de Hogwarts para magos y brujas del código.
6+ * En ella, su famoso sombrero seleccionador ayuda a los programadores
7+ * a encontrar su camino...
8+ * Desarrolla un programa que simule el comportamiento del sombrero.
9+ * Requisitos:
10+ * 1. El sombrero realizará 10 preguntas para determinar la casa del alumno.
11+ * 2. Deben existir 4 casas. Por ejemplo: Frontend, Backend, Mobile y Data.
12+ * (Puedes elegir las que quieras)
13+ * Acciones:
14+ * 1. Crea un programa que solicite el nombre del alumno y realice 10
15+ * preguntas, con cuatro posibles respuestas cada una.
16+ * 2. Cada respuesta asigna puntos a cada una de las casas (a tu elección).
17+ * 3. Una vez finalizado, el sombrero indica el nombre del alumno
18+ * y a qué casa pertenecerá (resuelve el posible empate de manera aleatoria,
19+ * pero indicándole al alumno que la decisión ha sido complicada).
20+ */
21+ """
22+ # importo choice para elegir al azar si hay empate
23+ from random import choice
24+ # Casas remplazables:
25+ casas = {
26+ 0 :"Sofistas: Se enfocan en la retórica y la persuasión. Creen que la verdad es relativa y cambiante" ,
27+ 1 :"Aristotélicos: Valoran la lógica, la observación empírica y el razonamiento estructurado. Buscan conocimiento a través de la experiencia" ,
28+ 2 :"Platónicos: Creen en un mundo de ideas eterno e inmutable. Buscan verdades absolutas más allá de lo material" ,
29+ 3 :"Epicúreos: Enfatizan la búsqueda del placer moderado y la eliminación del dolor como el objetivo principal de la vida"
30+ }
31+
32+ # Preguntas remplazables:
33+ preguntas = {
34+ 1 : "¿Qué valoras más en un debate filosófico?\n "
35+ "A) La persuasión y la retórica\n "
36+ "B) La lógica y la evidencia empírica\n "
37+ "C) La búsqueda de verdades absolutas e inmutables\n "
38+ "D) La búsqueda del placer y la eliminación del dolor" ,
39+
40+ 2 : "¿Cuál es tu enfoque preferido para resolver problemas?\n "
41+ "A) Adaptarse y usar cualquier argumento disponible\n "
42+ "B) Analizar sistemáticamente los datos y llegar a una conclusión lógica\n "
43+ "C) Buscar en el mundo de las ideas para encontrar respuestas eternas\n "
44+ "D) Encontrar la solución que brinde mayor paz y felicidad" ,
45+
46+ 3 : "¿Qué opinas sobre la naturaleza de la realidad?\n "
47+ "A) La realidad es relativa y depende de la percepción individual\n "
48+ "B) La realidad está compuesta de sustancias y formas que podemos observar\n "
49+ "C) La verdadera realidad es el mundo de las ideas, más allá de lo material\n "
50+ "D) La realidad es material y nuestros sentidos son la clave para disfrutarla" ,
51+
52+ 4 : "¿Cómo crees que se debe enseñar la sabiduría?\n "
53+ "A) Mediante discursos convincentes y carismáticos\n "
54+ "B) A través de la lógica y el razonamiento estructurado\n "
55+ "C) Con diálogos que lleven al interlocutor a descubrir verdades universales\n "
56+ "D) Enseñando a las personas cómo vivir vidas placenteras y sin angustia" ,
57+
58+ 5 : "¿Cuál es el mayor objetivo de la vida?\n "
59+ "A) Ser capaz de influir y convencer a los demás\n "
60+ "B) Alcanzar el conocimiento a través de la observación y el estudio\n "
61+ "C) Comprender las verdades fundamentales del universo\n "
62+ "D) Vivir en tranquilidad y evitar el sufrimiento" ,
63+
64+ 6 : "¿Qué piensas sobre el placer?\n "
65+ "A) Es un medio para persuadir y manipular opiniones\n "
66+ "B) El placer debe ser controlado por la razón y la ética\n "
67+ "C) Es secundario en la búsqueda de la verdad\n "
68+ "D) Es el objetivo principal de la vida, pero debe buscarse con prudencia" ,
69+
70+ 7 : "¿Cómo responderías a una crítica?\n "
71+ "A) Usando argumentos retóricos y desviando el tema\n "
72+ "B) Presentando evidencia lógica y razonada\n "
73+ "C) Invitando a un diálogo filosófico para encontrar la verdad subyacente\n "
74+ "D) Buscando un entendimiento mutuo para minimizar el conflicto" ,
75+
76+ 8 : "¿Qué es más importante: la apariencia o la realidad?\n "
77+ "A) La apariencia, ya que es lo que perciben los demás\n "
78+ "B) La realidad, que se puede comprender a través de la experiencia\n "
79+ "C) La realidad ideal y eterna más allá de las apariencias\n "
80+ "D) La realidad, en tanto proporciona placer y evita el dolor" ,
81+
82+ 9 : "¿Qué tipo de conocimiento valoras más?\n "
83+ "A) El conocimiento práctico que se puede aplicar en la vida cotidiana\n "
84+ "B) El conocimiento científico y empírico\n "
85+ "C) El conocimiento de las ideas y principios eternos\n "
86+ "D) El conocimiento que nos lleva a una vida feliz y sin estrés" ,
87+
88+ 10 : "¿Cómo describirías la verdad?\n "
89+ "A) La verdad es relativa y puede cambiar\n "
90+ "B) La verdad es objetiva y puede descubrirse a través de la investigación\n "
91+ "C) La verdad es una realidad abstracta y eterna\n "
92+ "D) La verdad es aquello que conduce al bienestar"
93+ }
94+
95+ class Sombrero :
96+ def __init__ (self ) -> None :
97+ self .calificacion = {
98+ "a" :0 ,
99+ "b" :0 ,
100+ "c" :0 ,
101+ "d" :0 ,
102+ }
103+ self .casas = casas
104+ self .preguntas = preguntas
105+
106+ def puntuar_pregunta (self ,num ,pregunta ):
107+ check = False
108+
109+ while not check :
110+ print (f"Pregunta - { num } \n { pregunta } " )
111+ respuesta = input ("" ).lower ()
112+ check = True
113+ match respuesta :
114+ case "a" :
115+ self .calificacion [respuesta ] += 1
116+
117+ case "b" :
118+ self .calificacion [respuesta ] += 1
119+
120+ case "c" :
121+ self .calificacion [respuesta ] += 1
122+
123+ case "d" :
124+ self .calificacion [respuesta ] += 1
125+
126+ case _:
127+ print (f"{ respuesta } no es una de las opciones disponibles { self .nombre } " )
128+ check = False
129+
130+ def asignar_mi_casa (self ,resultado ):
131+ match resultado [0 ]:
132+ case "a" :
133+ self .mi_casa = self .casas [0 ]
134+
135+ case "b" :
136+ self .mi_casa = self .casas [1 ]
137+
138+ case "c" :
139+ self .mi_casa = self .casas [2 ]
140+
141+ case "d" :
142+ self .mi_casa = self .casas [3 ]
143+
144+ def asignar_casa (self ):
145+ resultado = ["" ,0 ]
146+ final = []
147+ for respuesta , cantidad in self .calificacion .items ():
148+ if cantidad > resultado [1 ]:
149+ resultado = [respuesta ,cantidad ]
150+ final = [[respuesta ,cantidad ]]
151+ elif cantidad == resultado [1 ]:
152+ resultado = [respuesta ,cantidad ]
153+ final .append ([respuesta ,cantidad ])
154+
155+ if len (final ) == 1 :
156+ self .asignar_mi_casa (final [0 ])
157+ elif len (final ) > 1 :
158+ self .asignar_mi_casa (choice (final ))
159+ print ("Esta siendo difícil.\n Podrías ir a esta... pero..." )
160+
161+ def hablar_sombrero (self ):
162+
163+ print ("Parece que tenemos un nuevo alumno! No seas tímido, ¿Cuál es tu nombre?" )
164+ self .nombre = input ("" ).capitalize ()
165+ print (f"Un placer { self .nombre } , ahora voy ha hacerte una serie de preguntas" )
166+ print ("Esta son las casas:" )
167+ print ("--------------------" )
168+ for casa in self .casas .values ():
169+ print ()
170+ print (casa )
171+ print ("--------------------" )
172+
173+ input ("Responde con la letra que corresponda\n enter para empezar preguntas: " )
174+ for num ,pregunta in self .preguntas .items ():
175+ print ()
176+ self .puntuar_pregunta (num ,pregunta )
177+
178+ self .asignar_casa ()
179+ print (f"{ self .calificacion } \n { self .nombre } tu casa será:\n { self .mi_casa } " )
180+
181+ # Prueba
182+ emmanuel = Sombrero ()
183+ emmanuel .hablar_sombrero ()
0 commit comments