0% encontró este documento útil (0 votos)
0 vistas13 páginas

Proyectos Python Practica

El documento presenta cinco proyectos de práctica en Python, cada uno enfocado en diferentes estructuras de datos como diccionarios, listas, tuplas y sets. Cada proyecto incluye un contexto, instrucciones detalladas y una solución de referencia que abordan problemas específicos, como el análisis de préstamos de libros, ventas de productos, datos climáticos y rendimiento deportivo. Los proyectos están diseñados para ayudar a los estudiantes a aplicar conceptos de programación en situaciones del mundo real.

Cargado por

angelica
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
0 vistas13 páginas

Proyectos Python Practica

El documento presenta cinco proyectos de práctica en Python, cada uno enfocado en diferentes estructuras de datos como diccionarios, listas, tuplas y sets. Cada proyecto incluye un contexto, instrucciones detalladas y una solución de referencia que abordan problemas específicos, como el análisis de préstamos de libros, ventas de productos, datos climáticos y rendimiento deportivo. Los proyectos están diseñados para ayudar a los estudiantes a aplicar conceptos de programación en situaciones del mundo real.

Cargado por

angelica
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Python — Proyectos de Práctica

5 proyectos estilo Unidad 2


Diccionarios · Listas · Tuplas · Sets · Strings · Literales · Tipos

Proyecto 1: Proyecto: Biblioteca Municipal


Colecciones, búsqueda de máximos/mínimos e índices sobre datos de préstamos de libros
Datos
Género 2020 2021 2022 2023
Novela 1240 1385 1102 1467
Ciencia 870 940 1050 985
Historia 530 620 480 710

Contexto
La Biblioteca Municipal registró el número de préstamos por género literario durante los últimos cuatro
años (expresados en unidades). Cada fila es un género y cada columna un año. Se quiere construir un
programa que represente estos datos y permita obtener información útil sobre los patrones de lectura.

Instrucciones
1. Represente la tabla en una estructura de datos anidada donde:
a. Cada género tendrá dos colecciones: una para los años de registro y otra para las
cantidades de préstamos, donde:
i. Los años están en una colección ordenada e inmutable
ii. Las cantidades están en una colección ordenada y mutable con respecto a su año de
registro
b. Se pueda buscar la estructura por nombre de género para recuperar sus años, sus
cantidades o ambas
2. Calcule en qué año los préstamos de Novela estuvieron en su máximo siguiendo estos pasos:
a. Muestre los datos de préstamos de Novela
b. Calcule la cantidad máxima de préstamos de Novela y guárdela en una variable
c. Usando concatenación de cadenas, muestre: "El máximo de préstamos de Novela es: xxx
unidades" donde xxx es la cantidad calculada, expresada como número entero
d. Obtenga el índice de esa cantidad dentro de la colección de cantidades y guárdelo en una
variable, luego muestre esa variable
e. Use esa variable de índice junto con la colección de años para recuperar el año
correspondiente y guárdelo en otra variable
f. Muestre: "El año con mayor préstamo de Novela es: " concatenado con esa variable
3. En una sola línea de código, muestre el año con mínimo de préstamos de Historia, precedido de
la afirmación "El año con menor préstamo de Historia es: "
4. Calcule y muestre cuántos años consecutivos los préstamos de Ciencia estuvieron por encima de
900 unidades siguiendo estos pasos:
a. Cree un set con los años donde los préstamos de Ciencia fueron mayores a 900
b. Muestre ese set
c. Muestre la cantidad de años usando len()

Tu código

Solución de referencia
#Paso 1
#Se crea un diccionario con listas anidadas (lista de años con tupla y lista
de cantidades)
biblioteca = {
'Novela': [[2020,2021,2022,2023], [1240,1385,1102,1467]],
'Ciencia': [[2020,2021,2022,2023], [ 870, 940,1050, 985]],
'Historia': [[2020,2021,2022,2023], [ 530, 620, 480, 710]],
}

#Paso 2
print(biblioteca['Novela'][1])
n_max = max(biblioteca['Novela'][1])
print("El máximo de préstamos de Novela es: " + str(int(n_max)) + " unidades")
n_max_idx = biblioteca['Novela'][1].index(n_max)
print(n_max_idx)
year_novela = biblioteca['Novela'][0][n_max_idx]
print("El año con mayor préstamo de Novela es: " + str(year_novela))

#Paso 3
print("El año con menor préstamo de Historia es: " +
str(biblioteca['Historia'][0][biblioteca['Historia']
[1].index(min(biblioteca['Historia'][1]))]))

#Paso 4
#Se usa comprensión de conjuntos para filtrar los años donde Ciencia > 900
ciencia_sobre900 = {biblioteca['Ciencia'][0][i] for i in
range(len(biblioteca['Ciencia'][1])) if biblioteca['Ciencia'][1][i] > 900}
print(ciencia_sobre900)
print(len(ciencia_sobre900))

Proyecto 2: Proyecto: Cafetería Universitaria


Tuplas, sets, strings y análisis de ventas por producto
Datos
Producto Lun Mar Mié Jue Vie
Café 85 92 78 110 130
Sándwich 60 55 70 80 95
Jugo 40 48 35 50 62

Contexto
La cafetería universitaria registró sus ventas diarias (en unidades) por producto durante una semana
de trabajo. Cada fila es un producto y cada columna un día. Se necesita un programa que modele
estos datos y responda preguntas sobre el comportamiento de ventas.

Instrucciones
5. Represente la tabla en una estructura de datos anidada donde:
a. Cada producto tendrá dos colecciones: una con los días de la semana y otra con sus ventas
diarias, donde:
i. Los días están en una colección ordenada e inmutable
ii. Las ventas están en una colección ordenada y mutable en el orden correspondiente a
los días
b. Se pueda acceder a la estructura por nombre de producto para recuperar días, ventas o
ambos
6. Calcule el día de mayores ventas de Café siguiendo estos pasos:
a. Visualice las ventas de Café
b. Calcule el máximo de ventas de Café y guárdelo en una variable
c. Muestre usando concatenación de cadenas: "El pico de ventas de Café es: xxx unidades"
donde xxx es un entero
d. Obtenga el índice de ese máximo dentro de las ventas, guárdelo en una variable y muéstrela
e. Recupere el día correspondiente a ese índice y guárdelo en una variable
f. Muestre: "El día con mayor venta de Café es: " concatenado con esa variable
7. En una sola línea de código, muestre el día con mínimas ventas de Jugo, precedido de "El día
con menor venta de Jugo es: "
8. Analice los días donde las ventas de Sándwich superaron las de Jugo:
a. Construya una lista con los días donde ventas de Sándwich > ventas de Jugo usando los
índices de ambas colecciones de ventas
b. Muestre esa lista
c. Muestre cuántos días fue así usando len()
d. Usando concatenación de cadenas, muestre: "Sándwich superó a Jugo en x de 5 días"
donde x es el resultado anterior

Tu código

Solución de referencia
#Paso 1
#Diccionario con tupla de días (inmutable) y lista de ventas (mutable)
cafeteria = {
'Cafe': [('Lun','Mar','Mie','Jue','Vie'), [85, 92, 78,110,130]],
'Sandwich': [('Lun','Mar','Mie','Jue','Vie'), [60, 55, 70, 80, 95]],
'Jugo': [('Lun','Mar','Mie','Jue','Vie'), [40, 48, 35, 50, 62]],
}

#Paso 2
print(cafeteria['Cafe'][1])
cafe_max = max(cafeteria['Cafe'][1])
print("El pico de ventas de Café es: " + str(int(cafe_max)) + " unidades")
cafe_max_idx = cafeteria['Cafe'][1].index(cafe_max)
print(cafe_max_idx)
dia_cafe = cafeteria['Cafe'][0][cafe_max_idx]
print("El día con mayor venta de Café es: " + str(dia_cafe))

#Paso 3
print("El día con menor venta de Jugo es: " + str(cafeteria['Jugo'][0]
[cafeteria['Jugo'][1].index(min(cafeteria['Jugo'][1]))]))

#Paso 4
#Se recorre por índice comparando cantidades de Sandwich vs Jugo en cada
posición
dias_sandwich_mayor = [cafeteria['Sandwich'][0][i] for i in
range(len(cafeteria['Sandwich'][1])) if cafeteria['Sandwich'][1][i] >
cafeteria['Jugo'][1][i]]
print(dias_sandwich_mayor)
conteo = len(dias_sandwich_mayor)
print(conteo)
print("Sándwich superó a Jugo en " + str(conteo) + " de 5 días")

Proyecto 3: Proyecto: Estación Meteorológica


Estructuras anidadas, literales numéricos, sets y manipulación de strings sobre datos climáticos
Datos
Ciudad Ene Feb Mar Abr May Jun
Monterrey 18 21 26 31 35 38
CDMX 14 16 18 20 21 22
Guadalajar 17 19 23 27 30 32
a

Contexto
Una estación meteorológica registró la temperatura promedio mensual (en °C) de tres ciudades
durante el primer semestre del año. Cada fila es una ciudad y cada columna un mes. Se quiere
construir un programa para analizar los datos y generar reportes de texto sobre las temperaturas.

Instrucciones
9. Represente la tabla en una estructura de datos anidada donde:
a. Cada ciudad tendrá dos colecciones: una con los meses y otra con las temperaturas, donde:
i. Los meses están en una colección ordenada e inmutable
ii. Las temperaturas están en una colección mutable en el orden correspondiente a los
meses
b. Se pueda recuperar la información de una ciudad por su nombre
10. Calcule el mes más caluroso en Monterrey siguiendo estos pasos:
a. Muestre las temperaturas de Monterrey
b. Calcule la temperatura máxima y guárdela en una variable
c. Muestre usando concatenación de cadenas: "La temperatura máxima en Monterrey es:
xxx°C" donde xxx es un entero
d. Obtenga el índice de esa temperatura, guárdelo en una variable y muéstrela
e. Recupere el mes correspondiente a ese índice y guárdelo en una variable
f. Muestre: "El mes más caluroso en Monterrey es: " concatenado con la variable del mes
11. En una sola línea de código, muestre el mes con menor temperatura en CDMX, precedido de "El
mes más frío en CDMX es: "
12. Genere un reporte de texto sobre las temperaturas de Guadalajara:
a. Construya una cadena reporte que diga: "Guadalajara | Mín: xx°C | Máx: xx°C | Promedio:
xx.x°C" usando concatenación de cadenas y las funciones min(), max() y una división para el
promedio (suma de la lista entre su longitud)
b. Muestre el reporte
c. Usando replace(), genere una versión del reporte donde el símbolo '°C' sea reemplazado por
' grados' y muéstrela
d. Usando find(), muestre en qué posición del reporte aparece la palabra 'Mín'

Tu código
Solución de referencia
#Paso 1
clima = {
'Monterrey': [('Ene','Feb','Mar','Abr','May','Jun'),
[18,21,26,31,35,38]],
'CDMX': [('Ene','Feb','Mar','Abr','May','Jun'),
[14,16,18,20,21,22]],
'Guadalajara': [('Ene','Feb','Mar','Abr','May','Jun'),
[17,19,23,27,30,32]],
}

#Paso 2
print(clima['Monterrey'][1])
mty_max = max(clima['Monterrey'][1])
print("La temperatura máxima en Monterrey es: " + str(int(mty_max)) + "°C")
mty_max_idx = clima['Monterrey'][1].index(mty_max)
print(mty_max_idx)
mes_mty = clima['Monterrey'][0][mty_max_idx]
print("El mes más caluroso en Monterrey es: " + str(mes_mty))

#Paso 3
print("El mes más frío en CDMX es: " + str(clima['CDMX'][0][clima['CDMX']
[1].index(min(clima['CDMX'][1]))]))

#Paso 4
#Se construye la cadena con concatenación directa de los cálculos convertidos
a string
gdl = clima['Guadalajara'][1]
reporte = "Guadalajara | Mín: " + str(min(gdl)) + "°C | Máx: " + str(max(gdl))
+ "°C | Promedio: " + str(round(sum(gdl)/len(gdl),1)) + "°C"
print(reporte)
print([Link]('°C', ' grados'))
print([Link]('Mín'))
Proyecto 4: Proyecto: Liga de Fútbol Regional
Diccionarios anidados, listas, tuplas, strings y análisis de rendimiento deportivo
Datos
Equipo J1 J2 J3 J4 J5
Tigres 3 1 3 0 3
Rayados 1 3 1 3 1
Tuzos 0 0 3 1 3

Contexto
Una liga de fútbol regional registró los puntos obtenidos por tres equipos en cinco jornadas (3 =
victoria, 1 = empate, 0 = derrota). Cada fila es un equipo y cada columna una jornada. Se quiere un
programa que modele estos datos y permita obtener estadísticas de rendimiento.

Instrucciones
13. Represente la tabla en una estructura de datos anidada donde:
a. Cada equipo tendrá dos colecciones: una con las jornadas y otra con sus puntos, donde:
i. Las jornadas están en una colección ordenada e inmutable
ii. Los puntos están en una colección ordenada y mutable con respecto a las jornadas
b. Se pueda recuperar la información de un equipo por su nombre
14. Calcule la jornada con más puntos de Tigres siguiendo estos pasos:
a. Muestre los puntos de Tigres
b. Calcule el máximo de puntos de Tigres y guárdelo en una variable
c. Usando concatenación de cadenas, muestre: "El máximo de puntos de Tigres es: xxx" donde
xxx es un entero
d. Obtenga el índice de ese máximo, guárdelo en una variable y muéstrela
e. Recupere la jornada correspondiente a ese índice y guárdela en una variable
f. Muestre: "La mejor jornada de Tigres fue: " concatenado con esa variable
15. En una sola línea, muestre la jornada con menos puntos de Tuzos, precedida de "La peor jornada
de Tuzos fue: "
16. Analice el rendimiento global de cada equipo:
a. Calcule el total de puntos de cada equipo (suma de su lista de puntos) y guárdelo en
variables individuales
b. Construya una tupla clasificacion que contenga los totales en el orden (Tigres, Rayados,
Tuzos)
c. Usando concatenación de cadenas, muestre una tabla de texto con el formato "Equipo |
Puntos" para los tres equipos, uno por línea
d. Muestre cuál equipo ganó la liga indicando: el equipo con el valor máximo dentro de la tupla
clasificacion usando max(), y muestre ese valor con la leyenda "Campeón con: xxx puntos"

Tu código
Solución de referencia
#Paso 1
liga = {
'Tigres': [('J1','J2','J3','J4','J5'), [3,1,3,0,3]],
'Rayados': [('J1','J2','J3','J4','J5'), [1,3,1,3,1]],
'Tuzos': [('J1','J2','J3','J4','J5'), [0,0,3,1,3]],
}

#Paso 2
print(liga['Tigres'][1])
tigres_max = max(liga['Tigres'][1])
print("El máximo de puntos de Tigres es: " + str(int(tigres_max)))
tigres_max_idx = liga['Tigres'][1].index(tigres_max)
print(tigres_max_idx)
jornada_tigres = liga['Tigres'][0][tigres_max_idx]
print("La mejor jornada de Tigres fue: " + str(jornada_tigres))

#Paso 3
print("La peor jornada de Tuzos fue: " + str(liga['Tuzos'][0][liga['Tuzos']
[1].index(min(liga['Tuzos'][1]))]))

#Paso 4
#Se suman los puntos de cada equipo y se agrupa en una tupla para comparación
total_tigres = sum(liga['Tigres'][1])
total_rayados = sum(liga['Rayados'][1])
total_tuzos = sum(liga['Tuzos'][1])
clasificacion = (total_tigres, total_rayados, total_tuzos)
print("Equipo | Puntos")
print("Tigres | " + str(total_tigres))
print("Rayados | " + str(total_rayados))
print("Tuzos | " + str(total_tuzos))
print("Campeón con: " + str(max(clasificacion)) + " puntos")

Proyecto 5: Proyecto: Empresa de Logística


Integración completa — diccionarios, listas, tuplas, sets, strings, literales y tipos
Datos
Ruta Lun Mar Mié Jue Vie
Norte 120 95 143 88 160
Sur 75 82 70 91 68
Centro 200 187 215 198 220

Contexto
Una empresa de logística registró el número de paquetes entregados por ruta durante cinco días de
operación. Cada fila representa una ruta y cada columna un día. Se necesita un programa que integre
todos los tipos de estructuras de datos vistos en el curso para analizar la operación y generar reportes.

Instrucciones
17. Represente la tabla en una estructura de datos anidada donde:
a. Cada ruta tendrá dos colecciones: una con los días y otra con las entregas, donde:
i. Los días están en una colección inmutable
ii. Las entregas están en una colección mutable correspondiente al orden de los días
b. Se pueda buscar la estructura por nombre de ruta para recuperar sus días, sus entregas o
ambas
18. Calcule el día de máxima operación de la ruta Centro siguiendo estos pasos:
a. Visualice los datos de entrega de Centro
b. Calcule el máximo de entregas de Centro y guárdelo en una variable
c. Usando concatenación de cadenas, muestre: "El pico de entregas en Centro es: xxx
paquetes" donde xxx es un entero
d. Obtenga el índice de ese máximo, guárdelo en una variable y muéstrela
e. Recupere el día correspondiente y guárdelo en una variable
f. Muestre: "El día de mayor operación en Centro es: " concatenado con esa variable
19. En una sola línea, muestre el día con menor entrega de la ruta Sur, precedida de "El día más bajo
de Sur es: "
20. Construya un reporte de texto para la ruta Norte:
a. Cree una cadena reporte_norte con el formato: "NORTE | Mín: xx | Máx: xx | Total: xxx
paquetes" usando concatenación y min(), max() y sum()
b. Muestre el reporte
c. Usando split(), divida el reporte por '|' y muestre la lista resultante
d. Usando join(), vuelva a unir esa lista usando ' / ' como separador y muestre el resultado
e. Verifique con find() si la palabra 'Total' aparece en el reporte y muestre su posición
21. Analice qué rutas tienen al menos un día con más de 150 entregas:
a. Para cada ruta, verifique si algún valor en su lista de entregas supera 150 y construya un set
rutas_altas con los nombres de esas rutas
b. Muestre rutas_altas
c. Muestre el tipo de rutas_altas con type()
d. Verifique con isinstance() que rutas_altas es un set e imprima el resultado
e. Construya una tupla top_rutas con los elementos de rutas_altas (sin importar orden) e
imprímala junto con su tipo

Tu código
Solución de referencia
#Paso 1
logistica = {
'Norte': [('Lun','Mar','Mie','Jue','Vie'), [120, 95,143, 88,160]],
'Sur': [('Lun','Mar','Mie','Jue','Vie'), [ 75, 82, 70, 91, 68]],
'Centro': [('Lun','Mar','Mie','Jue','Vie'), [200,187,215,198,220]],
}

#Paso 2
print(logistica['Centro'][1])
centro_max = max(logistica['Centro'][1])
print("El pico de entregas en Centro es: " + str(int(centro_max)) + "
paquetes")
centro_max_idx = logistica['Centro'][1].index(centro_max)
print(centro_max_idx)
dia_centro = logistica['Centro'][0][centro_max_idx]
print("El día de mayor operación en Centro es: " + str(dia_centro))

#Paso 3
print("El día más bajo de Sur es: " + str(logistica['Sur'][0][logistica['Sur']
[1].index(min(logistica['Sur'][1]))]))

#Paso 4
#Reporte de texto construido con concatenación pura, sin f-strings
norte = logistica['Norte'][1]
reporte_norte = "NORTE | Mín: " + str(min(norte)) + " | Máx: " +
str(max(norte)) + " | Total: " + str(sum(norte)) + " paquetes"
print(reporte_norte)
partes = reporte_norte.split('|')
print(partes)
print(' / '.join(partes))
print(reporte_norte.find('Total'))

#Paso 5
#Se verifica por comprensión si algún valor supera 150 en cada ruta
rutas_altas = {ruta for ruta in logistica if any(v > 150 for v in
logistica[ruta][1])}
print(rutas_altas)
print(type(rutas_altas))
print(isinstance(rutas_altas, set))
top_rutas = tuple(rutas_altas)
print(top_rutas, type(top_rutas))

También podría gustarte