Skip to content

Commit 5acb50a

Browse files
authored
Merge pull request #6300 from fborjalv/fborjalv-branch
#36 - Python
2 parents 6303063 + e0fcdb5 commit 5acb50a

File tree

1 file changed

+267
-0
lines changed
  • Roadmap/36 - EL SOMBRERO SELECCIONADOR/python

1 file changed

+267
-0
lines changed
Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
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+
"""
23+
24+
import random
25+
houses = {"Frontend": 0, "Backend": 0, "Data": 0, "Mobile": 0}
26+
27+
questions = [
28+
{
29+
"question" :"¿Cuál es tu lenguaje de programación favorito?",
30+
"answer" : [{
31+
"option": "JavaScript",
32+
"house": "Frontend"
33+
},
34+
{
35+
"option": "Python",
36+
"house": "Data"
37+
},
38+
{
39+
"option": "Swift",
40+
"house": "Mobile"
41+
},
42+
{
43+
"option": "SQL",
44+
"house": "Backend"
45+
}
46+
47+
]
48+
},
49+
{
50+
"question": "¿Qué tipo de tareas disfrutas más en un proyecto de desarrollo?",
51+
"answer": [
52+
{
53+
"option": "Analizar información y extraer conocimientos a partir de datos",
54+
"house": "Data"
55+
},
56+
{
57+
"option" : "Diseñar la estructura lógica y gestionar la base del sistema",
58+
"house": "Backend"
59+
},
60+
{
61+
"option": "Desarrollar soluciones optimizadas para dispositivos móviles",
62+
"house": "Mobile"
63+
},
64+
{
65+
"option" : "Crear experiencias visuales y mejorar la interacción del usuario",
66+
"house" : "Frontend"
67+
}
68+
]
69+
},
70+
{
71+
"question": "¿Qué disfrutas más en un proyecto de software?",
72+
"answer": [
73+
{
74+
"option": "Implementar sistemas eficientes",
75+
"house": "Backend"
76+
},
77+
{
78+
"option": "Diseñar interfaces atractivas",
79+
"house": "Frontend"
80+
},
81+
{
82+
"option": "Trabajar con grandes volúmenes de datos",
83+
"house": "Data"
84+
},
85+
{
86+
"option": "Crear apps móviles innovadoras",
87+
"house": "Mobile"
88+
}
89+
]
90+
},
91+
{
92+
"question": "¿Qué tipo de problemas prefieres resolver?",
93+
"answer": [
94+
{
95+
"option": "Estéticos y de diseño",
96+
"house": "Frontend"
97+
},
98+
{
99+
"option": "Funcionalidad en dispositivos móviles",
100+
"house": "Mobile"
101+
},
102+
{
103+
"option": "Escalabilidad y rendimiento",
104+
"house": "Backend"
105+
},
106+
{
107+
"option": "Predicción y análisis de datos",
108+
"house": "Data"
109+
}
110+
]
111+
},
112+
{
113+
"question": "¿Qué entorno de desarrollo prefieres?",
114+
"answer": [
115+
{
116+
"option": "Un dispositivo móvil",
117+
"house": "Mobile"
118+
},
119+
{
120+
"option": "Un clúster de datos",
121+
"house": "Data"
122+
},
123+
{
124+
"option": "Un navegador",
125+
"house": "Frontend"
126+
},
127+
{
128+
"option": "Un servidor",
129+
"house": "Backend"
130+
}
131+
]
132+
},
133+
{
134+
"question": "¿Cómo prefieres aprender nuevas tecnologías? ",
135+
"answer": [
136+
{
137+
"option": "Diseñando interfaces",
138+
"house": "Frontend"
139+
},
140+
{
141+
"option": "Creando APIs",
142+
"house": "Backend"
143+
},
144+
{
145+
"option": "Programando apps móviles",
146+
"house": "Mobile"
147+
},
148+
{
149+
"option": "Explorando datasets",
150+
"house": "Data"
151+
}
152+
]
153+
},
154+
{
155+
"question": "¿Qué herramienta te es más cómoda usar?",
156+
"answer": [
157+
{
158+
"option": "HTML/CSS",
159+
"house": "Frontend"
160+
},
161+
{
162+
"option": "Xcode",
163+
"house": "Mobile"
164+
},
165+
{
166+
"option": "Node.js",
167+
"house": "Backend"
168+
},
169+
{
170+
"option": "Jupyter Notebook",
171+
"house": "Data"
172+
}
173+
]
174+
},
175+
{
176+
"question": "¿Qué es más importante para ti en un proyecto?",
177+
"answer": [
178+
{
179+
"option": "La experiencia del usuario",
180+
"house": "Frontend"
181+
},
182+
{
183+
"option": "La arquitectura del sistema",
184+
"house": "Backend"
185+
},
186+
{
187+
"option": "La compatibilidad con múltiples plataformas móviles",
188+
"house": "Mobile"
189+
},
190+
{
191+
"option": "El manejo eficiente de datos",
192+
"house": "Data"
193+
}
194+
]
195+
},
196+
{
197+
"question": "¿En qué parte de un equipo de desarrollo te sientes más cómodo? ",
198+
"answer": [
199+
{
200+
"option": "Diseñando y desarrollando interfaces",
201+
"house": "Frontend"
202+
},
203+
{
204+
"option": "Implementando la lógica del sistema",
205+
"house": "Backend"
206+
},
207+
{
208+
"option": "Creando apps móviles",
209+
"house": "Mobile"
210+
},
211+
{
212+
"option": "Analizando datos y creando modelos",
213+
"house": "Data"
214+
}
215+
]
216+
},
217+
{
218+
"question": "¿Qué crees que dominará el futuro de la programación?",
219+
"answer": [
220+
{
221+
"option": "Inteligencia artificial y big data",
222+
"house": "Data"
223+
},
224+
{
225+
"option": "Aplicaciones web dinámicas",
226+
"house": "Frontend"
227+
},
228+
{
229+
"option": "Aplicaciones móviles",
230+
"house": "Mobile"
231+
},
232+
{
233+
"option": "Computación en la nube",
234+
"house": "Backend"
235+
}
236+
]
237+
},
238+
239+
]
240+
241+
242+
243+
for index, text in enumerate(questions):
244+
print(f"\n{index+1}-", text["question"]+"\n")
245+
for num, op in enumerate(text["answer"]):
246+
print(f"{num+1}.", op["option"])
247+
user_option = int(input("Elige una de las cuatro opciones: "))
248+
house = text["answer"][user_option-1]["house"]
249+
houses[house] += 1
250+
print(houses)
251+
252+
result_house = max(houses, key= lambda x: houses[x])
253+
254+
scores = list(houses.values())
255+
256+
if scores.count(max(scores)) > 1:
257+
print("Se ha producido un empate...")
258+
print("Dificil decisión.....")
259+
possible_houses = [house for house, point in houses.items() if point == max(scores) ]
260+
print(f"Tu casa será... {random.choice(possible_houses)}")
261+
else:
262+
print(f"La casa ganadora es {result_house}")
263+
264+
sorted_houses = sorted(houses, key= lambda x: houses[x], reverse=True)
265+
print("Resultados: ")
266+
print("\n".join(i for i in sorted_houses))
267+

0 commit comments

Comments
 (0)