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