Parcialito 2 - 2024b - Tema 1#
Ejercicio 1#
En un archivo de CSV, plantas.csv, se posee información sobre un inventario de plantas en un vivero. Cada línea del archivo contiene datos de una planta en el siguiente formato: Nombre, Altura y Cantidad disponible. Un ejemplo de este archivo podría ser:
Se requiere implementar un programa, tal que su código principal realice las siguientes tareas:
- Leer el archivo CSV y construir una lista de diccionarios, donde cada diccionario represente una planta con sus respectivos atributos. Para el ejemplo anterior, la estructura resultante sería:
[
{"Nombre": "Rosa", "Altura": 1.5, "Cantidad": 9},
{"Nombre": "Girasol", "Altura": 3.0, "Cantidad": 6},
{"Nombre": "Cactus", "Altura": 6.0, "Cantidad": 4}
]
-
Ordenar la lista de diccionarios (suponga de tamaño arbitrario) según el criterio especificado por el usuario (por ejemplo, “Nombre”, “Altura” o “Cantidad”).
-
Solicitar al usuario el nombre de una planta y mostrar por pantalla en qué posición de la lista quedó ubicada luego del ordenamiento. En caso de no existir, debe informarlo.
El programa debe estar modularizado convenientemente y definir al menos un Docstring para algunas de las funciones que implemente.
Ejemplo de ejecución:
Ingrese nombre del archivo: plantas.csv
Ingrese criterio de ordenamiento: Altura
Ingrese nombre de una planta: Cactus
La planta quedó ubicada en la posición 2
Ejercicio 2#
- Sea una matriz cuadrada de números, de tamaño n×n (siendo n un tamaño arbitrario). Se requiere obtener la suma de todos los elementos de la matriz. Por ejemplo:
[[1, 3], [4, 6]] # suma = 1 + 3 + 4 + 6 = 14
[[1, 2, 3], [1, 0, 2], [3, 2, 6]] # suma = 1 + 2 + 3 + 1 + 0 + 2 + 3 + 2 + 6 = 20
Implemente una función sumar_matriz_rec(A:list[list]) -> int|float
, que resuelva el problema en
forma recursiva. La función debe recibir la matriz (una lista de listas) y retornar el valor de la suma
total de todos sus elementos. Ayuda: se permite el uso de funciones built-in o ciclos (no más de uno)
si lo considera necesario, pero la lógica principal de la solución debe ser recursiva para que sea válido
el ejercicio.
- Para resolver el problema anterior, suponga que se propone una solución puramente iterativa (usando solo ciclos). A continuación se muestra un posible código en Python que resuelve este problema:
def sumar_matriz_iter(A: list[list]) -> int|float:
suma = 0
for fila in A:
for col in fila:
suma += col
return suma
Para esta función, determine la complejidad computacional mediante la notación Big-O justificando su respuesta.