Skip to content

Commit a58fd56

Browse files
authored
Merge pull request #5984 from JohnAlexGuerrero/main
#36-python
2 parents f6df226 + 916bd60 commit a58fd56

File tree

1 file changed

+316
-0
lines changed

1 file changed

+316
-0
lines changed
Lines changed: 316 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,316 @@
1+
# -*- coding: utf-8 -*-
2+
"""#36-el-sombrero-seleccionador.ipynb
3+
4+
Automatically generated by Colab.
5+
6+
Original file is located at
7+
https://colab.research.google.com/drive/1FeZc3xRWVqqOFn7EfMpHUBIU0IFGdOFh
8+
9+
* EJERCICIO:
10+
* Cada 1 de septiembre, el Hogwarts Express parte hacia la escuela
11+
* de programación de Hogwarts para magos y brujas del código.
12+
* En ella, su famoso sombrero seleccionador ayuda a los programadores
13+
* a encontrar su camino...
14+
* Desarrolla un programa que simule el comportamiento del sombrero.
15+
* Requisitos:
16+
* 1. El sombrero realizará 10 preguntas para determinar la casa del alumno.
17+
* 2. Deben existir 4 casas. Por ejemplo: Frontend, Backend, Mobile y Data.
18+
* (Puedes elegir las que quieras)
19+
* Acciones:
20+
* 1. Crea un programa que solicite el nombre del alumno y realice 10
21+
* preguntas, con cuatro posibles respuestas cada una.
22+
* 2. Cada respuesta asigna puntos a cada una de las casas (a tu elección).
23+
* 3. Una vez finalizado, el sombrero indica el nombre del alumno
24+
* y a qué casa pertenecerá (resuelve el posible empate de manera aleatoria,
25+
* pero indicándole al alumno que la decisión ha sido complicada).
26+
"""
27+
28+
preguntas_respuestas = [
29+
30+
# Frontend
31+
{
32+
"id":1,
33+
"pregunta": "¿Cuál de los siguientes lenguajes se utiliza comúnmente para diseñar el aspecto visual de una página web?",
34+
"respuestas": {
35+
"a": "HTML",
36+
"b": "Java",
37+
"c": "CSS", # Correcta
38+
"d": "Python"
39+
} ,
40+
"correcta": "c",
41+
"casa":"fronted"
42+
},
43+
{
44+
"id":2,
45+
"pregunta": "¿Cuál es el propósito principal de JavaScript en el desarrollo web frontend?",
46+
"respuestas": {
47+
"a": "Crear gráficos 3D",
48+
"b": "Añadir interactividad a las páginas web", # Correcta
49+
"c": "Definir la estructura de una página",
50+
"d": "Estilizar la página web"
51+
},
52+
"correcta": "b",
53+
"casa":"fronted"
54+
},
55+
{
56+
"id":3,
57+
"pregunta": "¿Cuál de los siguientes frameworks es utilizado principalmente para el desarrollo frontend?",
58+
"respuestas": {
59+
"a": "Django",
60+
"b": "Flask",
61+
"c": "React", # Correcta
62+
"d": "PostgreSQL"
63+
},
64+
"correcta": "c"
65+
},
66+
{
67+
"id":4,
68+
"pregunta": "¿Qué propiedad CSS se usa para cambiar el tamaño de un elemento?",
69+
"respuestas": {
70+
"a": "color",
71+
"b": "margin",
72+
"c": "width", # Correcta
73+
"d": "display"
74+
},
75+
"correcta": "c",
76+
"casa":"fronted"
77+
},
78+
79+
# Backend
80+
{
81+
"id":5,
82+
"pregunta": "¿Cuál de los siguientes lenguajes es más comúnmente usado para el desarrollo backend?",
83+
"respuestas": {
84+
"a": "CSS",
85+
"b": "JavaScript",
86+
"c": "Python", # Correcta
87+
"d": "HTML"
88+
},
89+
"correcta": "c",
90+
"casa":"backend"
91+
},
92+
{
93+
"id":6,
94+
"pregunta": "¿Qué es una API en el contexto de desarrollo backend?",
95+
"respuestas": {
96+
"a": "Una biblioteca para crear gráficos",
97+
"b": "Un método de autenticación",
98+
"c": "Una interfaz para que las aplicaciones se comuniquen", # Correcta
99+
"d": "Una base de datos"
100+
},
101+
"correcta": "c",
102+
"casa":"backend"
103+
},
104+
{
105+
"id":7,
106+
"pregunta": "¿Cuál es un ejemplo de un servidor de aplicaciones backend?",
107+
"respuestas": {
108+
"a": "Apache", # Correcta
109+
"b": "Bootstrap",
110+
"c": "React",
111+
"d": "MySQL"
112+
},
113+
"correcta": "a",
114+
"casa":"backend"
115+
},
116+
{
117+
"id":8,
118+
"pregunta": "¿Qué tipo de base de datos utiliza SQL?",
119+
"respuestas": {
120+
"a": "NoSQL",
121+
"b": "Relacional", # Correcta
122+
"c": "Archivo plano",
123+
"d": "Jerárquica"
124+
},
125+
"correcta": "b",
126+
"casa":"backend"
127+
},
128+
129+
# Data
130+
{
131+
"id":9,
132+
"pregunta": "¿Qué lenguaje es más popular para el análisis de datos?",
133+
"respuestas": {
134+
"a": "Java",
135+
"b": "R", # Correcta
136+
"c": "C++",
137+
"d": "PHP"
138+
},
139+
"correcta": "b",
140+
"casa":"data"
141+
},
142+
{
143+
"id":10,
144+
"pregunta": "¿Qué biblioteca de Python es ampliamente utilizada para el análisis de datos?",
145+
"respuestas": {
146+
"a": "TensorFlow",
147+
"b": "Django",
148+
"c": "pandas", # Correcta
149+
"d": "Flask"
150+
},
151+
"correcta": "c",
152+
"casa":"data"
153+
},
154+
{
155+
"id":11,
156+
"pregunta": "¿Qué significa el término 'Big Data'?",
157+
"respuestas": {
158+
"a": "Pequeñas cantidades de datos",
159+
"b": "Un proceso de minería de datos",
160+
"c": "Conjuntos de datos extremadamente grandes", # Correcta
161+
"d": "Una estructura de base de datos"
162+
},
163+
"correcta": "c",
164+
"casa":"data"
165+
},
166+
{
167+
"id":12,
168+
"pregunta": "¿Cuál es la principal ventaja de una base de datos NoSQL sobre una base de datos relacional?",
169+
"respuestas": {
170+
"a": "Soporte para transacciones ACID",
171+
"b": "Mejor rendimiento en grandes cantidades de datos no estructurados", # Correcta
172+
"c": "Mayor seguridad",
173+
"d": "Compatibilidad con SQL"
174+
},
175+
"correcta": "b",
176+
"casa":"data"
177+
},
178+
179+
# Mobile
180+
{
181+
"id":13,
182+
"pregunta": "¿Qué lenguaje es usado principalmente para el desarrollo nativo de aplicaciones Android?",
183+
"respuestas": {
184+
"a": "Swift",
185+
"b": "Kotlin", # Correcta
186+
"c": "JavaScript",
187+
"d": "C#"
188+
},
189+
"correcta": "b",
190+
"casa":"mobile"
191+
},
192+
{
193+
"id":14,
194+
"pregunta": "¿Qué lenguaje se utiliza para desarrollar aplicaciones nativas de iOS?",
195+
"respuestas": {
196+
"a": "Java",
197+
"b": "Python",
198+
"c": "Swift", # Correcta
199+
"d": "Ruby"
200+
},
201+
"correcta": "c",
202+
"casa":"mobile"
203+
},
204+
{
205+
"id":15,
206+
"pregunta": "¿Cuál de las siguientes plataformas permite el desarrollo de aplicaciones móviles multiplataforma?",
207+
"respuestas": {
208+
"a": "Xcode",
209+
"b": "Android Studio",
210+
"c": "Flutter", # Correcta
211+
"d": "Jupyter Notebook"
212+
},
213+
"correcta": "c",
214+
"casa":"mobile"
215+
}
216+
]
217+
218+
import math
219+
import random
220+
221+
#alumno candidato para ingresar a la escuela de programacion de Hogwarts
222+
class Alumno:
223+
224+
def __init__(self, nombre):
225+
self.nombre = nombre
226+
227+
#sombrero que realiza un test para asignar a un alumno a una casa de programacion en Hogwarts
228+
class Sombrero:
229+
230+
def __init__(self, alumno, preguntas):
231+
self.alumno = alumno
232+
self.preguntas = preguntas
233+
self.puntuacion = {
234+
"fronted": 0,
235+
"backend": 0,
236+
"mobile": 0,
237+
"data": 0
238+
}
239+
self.escuelas = [
240+
{
241+
"casa":"fronted",
242+
"alumnos":[],
243+
},
244+
{
245+
"casa":"backend",
246+
"alumnos":[],
247+
},
248+
{
249+
"casa":"mobile",
250+
"alumnos":[]
251+
},
252+
{
253+
"casa":"data",
254+
"alumnos":[]
255+
}
256+
]
257+
258+
def test(self):
259+
pass
260+
261+
def seleccionar_pregunta(self):
262+
index_pregunta = random.randint(1, len(self.preguntas))
263+
res = self.preguntas[index_pregunta - 1]
264+
return res
265+
266+
def adicionar_punto_casa(self, nombre_casa):
267+
self.puntuacion[nombre_casa] += 1
268+
269+
def restar_punto_casa(self, nombre_casa):
270+
if self.puntuacion[nombre_casa] == 0:
271+
return
272+
self.puntuacion[nombre_casa] -= 1
273+
274+
def mostrar_puntuacion(self):
275+
return self.puntuacion
276+
277+
def asignar_casa_ganadora(self):
278+
casa = [(k, v) for k, v in self.puntuacion.items() if v > 2]
279+
print(casa)
280+
#return casa
281+
282+
candidatos = ['Juan Gabriel','Peter Ortiz','John Guerrero']
283+
284+
for name in candidatos:
285+
total_preguntas = 0
286+
print('Bienvenido a la Escuela de Programación de Hagwarts\n')
287+
print('cual es tu nombre?: ')
288+
print(f'hola, {name}')
289+
290+
al = Alumno(name)
291+
s = Sombrero(al, preguntas_respuestas)
292+
293+
while total_preguntas <= 10:
294+
total_preguntas += 1
295+
pregunta = s.seleccionar_pregunta()
296+
297+
print(f'N. pregunta: {total_preguntas}')
298+
nombre_casa = pregunta["casa"]
299+
print(pregunta["pregunta"])
300+
print('='*len(pregunta['pregunta']))
301+
302+
print('RESPUESTAS: \n')
303+
for key, value in pregunta['respuestas'].items():
304+
print(f'{key}: {value}')
305+
306+
respuesta = str(input('Cual es la respuesta? '))
307+
if respuesta == pregunta['correcta']:
308+
print("Respuesta correcta")
309+
s.adicionar_punto_casa(nombre_casa)
310+
elif respuesta != pregunta['correcta']:
311+
print("Respuesta incorrecta")
312+
s.restar_punto_casa(nombre_casa)
313+
314+
print(s.mostrar_puntuacion())
315+
print(s.asignar_casa_ganadora())
316+
print('='*50)

0 commit comments

Comments
 (0)