Skip to content

Commit 9878f2c

Browse files
authored
Merge pull request mouredev#5918 from EmmanuelMMontesinos/main
mouredev#36 - Python
2 parents 94ea750 + 5a5d396 commit 9878f2c

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed
Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
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.\nPodrí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\nenter 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

Comments
 (0)