Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Leonardo Ramírez
[LISTAS Y TUPLAS]
I)
Don Peter tiene un listado de sus alumnos con su respectivo rol en la lista de tuplas Rol. Y
además la nota de estos en la lista Notas:
Rol=[(“Leo”,“201660620-3”),(“Pedro”,”201555001-7”),
(“Javier”,”201655089-1”),…]
Notas=[(”201655089-1”,55),(”201555001-7”,30),(“201660620-3”,100),… ]
Cree la función agregar(nombre,rol,nota) que recibe los string nombre, rol, nota. La función debe
agregar los datos del alumno a las listas Rol y Notas, que son variables globales.
agregar(“Renzo”,”201760600-k”,45)
>>>
print Rol
[(“Leo”,“201660620-3”),(“Pedro”,”201555001-7”),(“Javier”,”201655089-
1”),… ,(“Renzo”,”201760600-k”)]
print Notas
[(”201655089-1”,55),(”201555001-7”,30),(“201660620-3”,100),…
,(”201760600-k”,45)]
Cree la función identidad(Rol, nombre) que recibe la lista Rol y un string con un nombre. La
función entrega el rol de la persona del nombre entregado.
identidad(Rol,”Leo”)
>>>”201660620-3”
Cree la función aprobados(Rol,Notas) que recibe las listas de tuplas Rol y Notas. La función
debe entregar una lista con los nombres de los aprobados. Un alumno aprueba cuando su nota es
mayor o igual a 55.
aprobados(Rol,Notas)
>>>[“Leo”,”Javier”]
Cree la función ranking(Rol,Notas) que recibe las listas de tuplas Rol y Notas. La función debe
entregar una lista con los nombres de los estudiantes en orden descendente respecto a su nota.
Ranking(Rol,Notas)
>>>[“Leo”,”Javier”,”Pedro”]
Programación IWI131
Leonardo Ramírez
II)
La Radio Rock&Pop ha lanzado un listado de artistas chilenos, con su nombre, su edad, y su
calificación c/r a su influencia en la escena musical nacional:
Artistas=[(“Pedropiedra”, 39, 4.2), (“Ana Tijoux”, 40, 4.3),
(“Mon Laferte”, 34, 3.8), (“Nano Stern”, 32, 3.3), (“C-Funk”,
40, 3.6), (“Dulce y Agraz”, 20, 2.8), (“Aldo Asenjo”, 49, 4.5),
(“Alvaro Henriquez”, 48, 4.9), …]
Cree la función nota(Artistas,Nombre) que recibe la lista con las calificaciones y el nombre de un
artista. La función debe entregar la calificación de este.
nota(Artistas, “Aldo Asenjo”)
>>>4.5
Cree la función ranking(Artistas) que recibe la lista con las calificaciones. La función debe
entregar una lista con los nombres de los artistas, ordenada según su calificación en orden
descendente.
ranking(Artistas)
>>>[“Alvaro Henriquez”, “Aldo Asenjo”, “Ana Tijoux”,
“Pedropiedra”, “Mon Laferte”, “C-Funk”, “Nano Stern”, “Dulce y
Agraz”]
Cree la función edades(Artistas) que recibe la lista con las calificaciones. La función debe
entregar una lista de tuplas (nombre, edad), ordenada según su edad en orden ascendente.
edades(Artistas)
>>>[(“Dulce y Agraz”,20), (“Nano Stern”,32), (“Mon Laferte”,34),
(“Pedropiedra”,39), (“Ana Tijoux”, 40), (“C-Funk”, 40), (“Alvaro
Henriquez”, 48), (“Aldo Asenjo”, 49)]
III)
Pymart, es una cadena de supermercados que está en proceso de restructurar su estrategia de
negocios. Dada la férrea competencia existente, ha diseñado un plan de ventas con descuentos
para sus productos, según el día de la semana. Esta información se encuentra en la lista
descuentos, en dónde el índice de sus componentes representa los días de la semana (0=Lunes,
1=Martes, ..., 6=Domingo). Las tuplas que indican el tipo de producto con descuento, y el
porcentaje de descuento a aplicar:
descuentos =[('Abarrotes',30),('Carnes',30),('Aseo',20),
('Postres',25),('Cocktail','15'),('Licores',20),('Panaderia','30
')]
a) Cree la función productos descuento(dia), que recibe como parámetro un día específico. Esta
función debe retornar una lista con el nombre de todos los productos en promoción.
>>>productos_descuento('Lunes')
['Fideos','Arroz']
b) Construya la función tiene descuento(producto, dia), la cual recibe como parámetro el nombre
de un producto y un dia específico. La función debe retornar el porcentaje de descuento del
producto, si se encuentra en promoción, o False en caso contrario.
>>> tiene_descuento('Mani','Lunes')
False
>>> tiene_descuento('Mani','Viernes')
15
c) Suponga que cuando un cliente hace una compra se genera una lista de tuplas compras con los
productos y sus precios originales:
('Lavaloza',2000), ('Cloro',1250),('Pavo',6000),('Yogurth',150),
...]
Desarrolle la función precio final(compras, dia), la cual recibe como parámetro la lista compras y
un día en específico. El procedimiento debe imprimir por pantalla el precio total de la compra
(con el descuento ya aplicado) y el total ahorrado por los descuentos. La función no retorna
valores.
IV)
En la Edad Feudal, el objetivo de toda civilización era formar un vasto imperio y vencer a sus
enemigos. Para lograrlo, era necesario contar con 4 valiosos recursos: Madera, Alimento, Oro y
Piedra. Para prevalecer, las civilizaciones debían crear unidades de guerra, las cuales surgían a
partir de la construcción de edificios militares.
La lista de tuplas edificios almacena en tuplas todos los edificios militares que un imperio podía
llegar a construir. Cada tupla se compone de dos elementos: el primero es un string con el
nombre del edificio y el segundo es una tupla de enteros con el costo en recursos necesarios para
construir ese edificio; es decir, (edificio, (madera,alimento,oro,piedra) ).
A su vez, las unidades de guerra se almacenan de la misma forma en la lista de tuplas unidades.
Cada tupla de la lista representa la unidad y su costo de creaci´on en recursos: (unidad,
(madera,alimento,oro,piedra) ):
edificios=[ (‘cuartel’,(175,0,0,0)), (‘arqueria’,(175,0,0,0)),
('taller',(200,0,0,50)),(‘establo’,(275,0,0,0)),…]
unidades=[(‘arquero’,(25,0,45,0)) ,(‘ballesta’,(35,0,45,0)),
(‘milicia’,(0,60,20,0)), (‘campeon’,(0,70,40,0)),
(‘jinete’,(0,60,75,0)), (‘caballero’,(0,65,85,0)),
(‘paladin’,(0,70,95,0)), (‘onagro’,(160,0,135,0)),
(‘catapulta’,(180,0,175,0)),…]
Para crear cada unidad de guerra es necesario haber construido antes su edificio base. El edificio
base de cada unidad se encuentra en la lista de tuplas base, donde el primer elemento de cada
tupla es el edificio base necesario para crear las unidades de guerra, las cuales se almacenan en
una tupla:
base = [(‘arqueria',(‘arquero’,’ballesta’)),
(‘taller’,(‘catapulta’,’onagro’)),
(‘establo’,(‘jinete’,’caballero’,’paladin’)),
(‘cuartel’,(‘milicia’,’campeon’)),…]
Programación IWI131
Leonardo Ramírez
Desarrolle la función recursos(lista_unidades) que retorne una tupla de enteros con el costo de
cada recurso, (madera,alimento,oro,piedra), necesario para crear las unidades de la lista
lista_unidades. Recuerde considerar el costo de construcción de los edificios. Un edificio se debe
construir solo una vez (si es necesario).
>>> recursos(['jinete','paladin'])
(275, 130, 170, 0)
>>> recursos(['campeon','ballesta','caballero'])
(660, 135, 170, 0)
>>>recursos(['catapulta','catapulta'])
(560, 0, 350, 50)
[DICCIONARIOS Y CONJUNTOS]
I)
Para renovar el permiso de circulación en Pythonia se debe de estar libre de multas sin pagar. El
Estado Libre de Pythonia cuenta con las siguientes estructuras para guardar la información de los
vehículos:
Un diccionario que guarda el registro de todas las multas sacadas a cada vehículo, donde la llave
es una tupla (patente, fecha), y el valor corresponde al costo de dicha multa.
multas = {('BCDF-13', '31-12-2017'):65000, ('GGWP-88', '15-09-
2015'):166000, ('QWRT-71', '06-06-2006'):666000, ('BCDF-13','01-
01-2018'):65000, ('PYTR-77', '03-05-2017'):35000, ... }
Además se cuenta con una lista de tuplas donde se tiene el total de dinero pagado asociado a cada
patente, cada patente aparece sólo una vez. Puede darse el caso que una patente con multas
impagas no aparezca debido a que no ha pagado peso alguno.
pagos = [('BCDF-13', 100), ('GGWP-88', 166000), ('QWRT-71',
666), ...]
Considerando lo anterior:
1) Cree la función deudas(multas, pagos) que recibe el diccionario de multas y la lista pagos. La
función debe retornar un diccionario donde la llave será la patente y el valor será el monto total
aun adeudado, es decir, si el vehículo ha pagado todas sus multas, no debe aparecer en el
diccionario.
>>> deudas(multas, pagos) {'QWRT-71': 665334, 'PYTR-77': 35000,
'BCDF-13': 130000}
2) Además, cree la función mas_multado( multas,pagos ) que recibe el diccionario de multas y la
lista pagos. La función deberá retornar un string con la patente que más veces ha sido multada,
Programación IWI131
Leonardo Ramírez
esto es en cantidad de veces que ha sido multada, independiente de que sus multas hayan sido
pagadas o no.
>>>mas_multados(multas,pagos)
'BCDF-13’
3) Ayudándose de ambas funciones realice un programa que muestre sólo las patentes con multas
impagas y además la patente que más veces ha sido multada. Guíese por siguiente ejemplo:
>>> Patentes con multas impagas:
QWRT-71
PYTR-77
BCDF-13
Patente mas veces multada: BCDF-13
II)
El cine de Pythonia tendrá una nueva cartelera este mes, por lo que le ha pedido ayuda a usted
para manejar la información:
La información de las películas se encuentra en el diccionario Peliculas; cuya llave es el nombre
de esta, y el dato asociado una tupla con: (País,año,calificacion)
Peliculas={‘Una Mujer Fantastica’:(‘Chile’,2017, 4.4), ‘El viaje
de Chihiro’:(‘Japon’,2001 ,4.0), ‘WALL-E’:(‘USA’,2008, 3.8),
‘Ciudad de Dios’:(‘Brasil’,2002, 3.7),
‘Mirageman’:(‘Chile’,2007, 5.0), ‘Star Wars: The Force Awakens’:
(‘USA’,2015, 3.2), ‘Your Name’:(‘Japon’, 2016, 4.0),…}
El cine de Pythonia te pide realizar las siguientes funciones:
Cree la función calificación(Peliculas,Nombre) que recibe el diccionario con la información de
las películas y el nombre de una de estas. La función debe entregar su calificación.
>>>calificación(Peliculas,’Mirageman’)
5.0
Cree la función top(Peliculas) que recibe el diccionario con la información de las películas. La
función debe retornar el nombre de la película con mejor calificación.
>>>top(Peliculas)
’Mirageman’
Programación IWI131
Leonardo Ramírez
Cree la función por_pais(Peliculas) que recibe el diccionario con la información de las películas.
La función debe entregar un diccionario cuya llave es un país y el dato asociado una lista con los
nombres de las películas provenientes de ese país.
>>>por_pais(Peliculas)
{‘Chile’:[‘Una mujer fantastica’,’Mirageman’], ‘Japon’:[‘El
viaje de Chihiro’, ‘Your Name’], ‘USA’:[‘WALL-E’,‘Star Wars: The
Force Awakens’,’Brasil’:[‘Ciudad de Dios’]}
Cree la función anio(Peliculas) que recibe el diccionario con la información de las películas. La
función debe entregar una lista con el nombre de las películas en orden ascendente con respecto
al año de estreno.
>>>anio(Peliculas)
[‘El viaje de Chihiro’,’Ciudad de Dios’, ‘Mirageman’, ‘WALL-E’,
‘Star Wars: The Force Awakens’,’Your Name’, ‘Una Mujer
Fantastica’]
Cree la función ranking_paises(Peliculas) que recibe el diccionario con la información de las
películas. La función debe entregar la una lista de tuplas (Pais, promedio) que se calcula sacando
el promedio de las calificaciones de todas las películas de ese país. La lista debe ser en orden
descendente.
>>>ranking_paises(Peliculas)
[(‘Chile’, 4.7),(‘Japon’, 4.0), (‘Brasil’, 3.7), (‘USA’, 3.5)]
III)
La Copa Mundial de la FIFA Rusia 2018 será la XXI edición de la Copa Mundial de Fútbol. En
esta edición el evento se realizará en Rusia entre el 14 de junio y el 15 de julio de 2018. Rusia
confirmó 12 estadios en 11 ciudades, las cuales albergaran los 64 partidos de la Copa Mundial.
La información de los estadios se encuentra de la siguiente forma:
IV)
El sistema más popular de streaming musical de Pythonia, Pytify, le ha pedido al curso de
Programación de la UTFSM ayuda para implementar nuevas funcionalidades para su sistema.
Pytify guarda toda la información de sus canciones en un diccionar, que contiene el
código_canción:(Nombre,Artista,[Estilo1/Estilo2/…]
Asuma que un artista puede tener más de una canción, que los nombres de las canciones no se
repiten, y ojo que no todas las canciones del artista son del mismo estilo.
Canciones={1:(‘La medicina’,’Los Tetas’,[‘Funk’,’Rap’,’Rock’]),
2:(‘Shock’, ‘Ana Tijoux’, [‘Rap’,’Hip Hop’,’R&B’]), 3:(‘Amor
Violento’,’Los Tres’, [‘Jazz’,’Rock’,’R&B’]), 4:(‘Eligiendo una
Reina’,’Chancho en Piedra’,[‘Funk’,’Metal’,’Rock’]), 5:(‘Sacar
la Voz’, Ana Tijoux’, [‘R&B’,‘Jazz’,’Hip Hop’]), 6:(‘No sabes
que desperdicio’,’Los Tres’,[‘Metal’,’Rock’]), 7:(‘Papi Donde
esta el Funk?’,’Los Tetas’,[‘Funk’,’Rap’,’Jazz’])}
Además, tiene una lista de tuplas con las reproducciones del mes, donde la tupla sigue la
estructura (código_cancion, id_usuario) , siendo el id_usuario un string.
Reproducciones=[(6, '4C'), (3, '3D'), (5, '2B'), (2, '3D'), (1,
'4C'), (5, '4C'), (7, '4C'), (5, '3D'), (6, '2B'), (7, '3D'),
(7, '2B'), (1, '1A'), (2, '1A'), (3, '2B')]
Pytify le ha pedido que desarrolle las siguientes funciones:
A)Crear la función canciones_escuchadas(canciones,reproducciones) la cual recibe dos
parámetros: el diccionario con la información de las canciones, y la lista de tuplas de las
reproducciones del mes. La función debe retornar una lista con el nombre de todas las canciones
escuchadas en el mes.
>>>canciones_escuchadas(Canciones, Reproducciones)
[“La Medicina”, “Shock”, “Amor Violento”, “Sacar la voz”, “No
Que Desperdicio”, “Papi Donde esta el Funk”]
Programación IWI131
Leonardo Ramírez
(“No sabes que Desperdicio” también puede aparecer en lugar de una de las
tres últimas)