StudyFiWiki
WikiAplicación web
StudyFi

Materiales de estudio con IA para todos los estudiantes. Resúmenes, tarjetas, tests, podcasts y mapas mentales.

Materiales de estudio

  • Wiki
  • Aplicación web
  • Registro gratis
  • Sobre StudyFi

Legal

  • Términos del servicio
  • RGPD
  • Contacto
Descargar en
App Store
Descargar en
Google Play
© 2026 StudyFi s.r.o.Creado con IA para estudiantes
Wiki💻 Ciencias de la ComputaciónProblemas de Programación con Python

Problemas de Programación con Python

Domina problemas de programación con Python: aprende a procesar datos de edificios y cuarteles. Esta guía para estudiantes incluye ejemplos y soluciones. ¡Mejora tus habilidades hoy!

¡Hola, futuros programadores y programadoras! En esta guía completa, exploraremos problemas de programación con Python que te ayudarán a afinar tus habilidades en manejo de archivos, estructuras de datos y algoritmos. Estos ejercicios están diseñados para simular desafíos del mundo real, utilizando datos de rascacielos y cuarteles policiales, perfectos para estudiantes universitarios o de secundaria.

Análisis de Problemas de Programación con Python: Edificios y Sostenibilidad

El primer set de problemas de programación con Python se centra en el procesamiento de datos de rascacielos. Imagina que tienes un archivo CSV con información detallada de miles de edificios a nivel mundial. Tu tarea es extraer, procesar y presentar esta información de diversas maneras.

Estructura de Datos de Edificios

El archivo edificios.csv es clave para este problema. Cada línea representa un edificio y sigue el formato:

nombre;altura;pisos;año;ciudad;latitud;longitud;estado;uso

Aquí hay un desglose de los campos importantes:

  • nombre: Nombre del edificio (ej. "Chrysler Building").
  • altura: Altura en metros.
  • pisos: Cantidad de pisos.
  • año: Año de inauguración (puede ser - si está en construcción o proyecto).
  • ciudad: Ciudad donde se encuentra.
  • latitud, longitud: Ubicación geográfica.
  • estado: Condición actual (ej. 'En uso', 'En construcción', 'Proyecto').
  • uso: Uso principal (ej. 'Oficinas', 'Residencias', 'Oficinas/Hotel').

Es crucial recordar que la primera línea del archivo es un encabezado y debe ignorarse. Además, se proporciona un diccionario d_ciudad_pais que asocia cada ciudad con su país, como {'Santiago': 'Chile'}.

Función primeros_n: Países con Más Rascacielos

Esta función (primeros_n(nombre_archivo, d_ciudad_pais, altura_minima, n)) busca identificar los países con más edificios que cumplen ciertos criterios.

Parámetros:

  • nombre_archivo: String con el nombre del archivo CSV.
  • d_ciudad_pais: Diccionario ciudad-país.
  • altura_minima: Altura mínima en metros para considerar un edificio.
  • n: Cantidad de países a retornar.

Comportamiento esperado:

  1. Lee el archivo edificios.csv, ignorando el encabezado.
  2. Filtra los edificios que están 'En uso' y que tienen al menos altura_minima.
  3. Utiliza el diccionario d_ciudad_pais para asociar cada edificio filtrado con su país.
  4. Cuenta los edificios por país.
  5. Retorna una lista de listas con los n países que tienen más edificios, ordenados de mayor a menor cantidad. Cada sublista contiene [país, cantidad_edificios].

Ejemplo de uso:

# print(primeros_n('edificios.csv', d_ciudad_pais, 200, 5))
# [['China', 1299], ['United States', 257], ['United Arab Emirates', 159], ['Malaysia', 86], ['Korea', 84]]

Función impacto_x_ciudad: Sostenibilidad de Edificios

Este segundo problema de programación con Python introduce el Índice de Impacto Ambiental Simplificado (IIAS), una métrica de sostenibilidad. El IIAS se calcula con la fórmula:

IIAS = H × F(U) / (A - 1900)

Donde:

  • H: Altura del edificio.
  • A: Año de construcción.
  • F(U): Factor que depende del uso del edificio, obtenido de una función factores_uso(tipo_uso) (ej. factores_uso('Oficinas') retorna 1.2).

Parámetros de la función impacto_x_ciudad(nombre_archivo, d_ciudad_pais, filtro_pais):

  • nombre_archivo: String con el nombre del archivo CSV.
  • d_ciudad_pais: Diccionario ciudad-país.
  • filtro_pais: String con el nombre del país a procesar.

Comportamiento esperado:

  1. Para cada ciudad dentro del filtro_pais: a. Crea un archivo de texto llamado [ciudad].txt. b. Calcula el IIAS para todos los edificios 'En uso' de esa ciudad, redondeando a 2 decimales. c. Identifica los 5 edificios con menor IIAS. d. Escribe en el archivo un encabezado como "Edificios más sustentables en [Ciudad]:". e. Lista los 5 edificios más sustentables, ordenados por IIAS de menor a mayor, siguiendo el formato: [correlativo].- [nombre] (iias=[valor_iias]), [pisos] pisos, [altura]m.
  2. La función debe retornar la cantidad total de archivos creados.

Ejemplo de archivo generado (Toronto.txt):

Edificios más sustentables en Toronto:
1.- 484 Yonge (iias=1.24), 45 pisos, 153m.
2.- Nobu Residences East Tower (iias=1.26), 49 pisos, 156m.
3.- Nobu Residences West Tower (iias=1.26), 49 pisos, 156m.
4.- Yonge + Rich (iias=1.27), 45 pisos, 154m.
5.- The PJ Condos (iias=1.29), 49 pisos, 155m.

Resolver Problemas de Programación con Python: Cuarteles de Carabineros

El segundo conjunto de problemas de programación con Python aborda el procesamiento de datos geográficos, específicamente de cuarteles de Carabineros de Chile. Este escenario te permite practicar con coordenadas y cálculos de distancia.

Estructura de Datos de Cuarteles

El archivo carabineros.csv contiene la información de los cuarteles y cada línea sigue el formato:

nombre,tipo,latitud,longitud,region,id_region,comuna

Los campos son:

  • nombre: Nombre oficial del cuartel (ej. "TENENCIA PICA").
  • tipo: Tipo de cuartel (ej. 'SUBCOMISARIA', 'RETEN', 'TENENCIA').
  • latitud, longitud: Ubicación exacta en números reales.
  • region: Región administrativa.
  • id_region: Número de la región.
  • comuna: Comuna donde se ubica.

Los campos están separados por comas.

Función cuarteles_cercanos: Buscando la Seguridad más Próxima

La función cuarteles_cercanos(nombre_archivo, latitud, longitud, umbral) te pide encontrar cuarteles dentro de un radio específico de un punto dado.

Parámetros:

  • nombre_archivo: String con el nombre del archivo CSV.
  • latitud, longitud: Coordenadas del punto de referencia.
  • umbral: Distancia máxima en kilómetros para considerar un cuartel.

Consideraciones clave:

  • Deberás usar una función distancia(lat1, lon1, lat2, lon2) (ya provista) que retorna la distancia en km entre dos puntos geográficos.
  • Filtra los cuarteles cuya distancia sea menor o igual al umbral.

Comportamiento esperado:

  1. Lee el archivo carabineros.csv.
  2. Calcula la distancia de cada cuartel al punto (latitud, longitud).
  3. Retorna una lista de listas, agrupando los cuarteles por comuna.
  4. Cada sublista de nivel superior contiene [nombre_comuna, lista_de_cuarteles].
  5. Las comunas deben estar ordenadas alfabéticamente.
  6. Dentro de cada comuna, la lista_de_cuarteles es una lista de [nombre_cuartel, distancia_redondeada_a_2_decimales], ordenada de mayor a menor distancia.
  7. Si ningún cuartel cumple las condiciones, retorna una lista vacía.

Ejemplo de retorno:

# print(cuarteles_cercanos('carabineros.csv', -33.4918, -70.6175, 5))
# [['La Granja', [['13A. LA GRANJA', 4.85], ['SUBCOM. PARQUE BRASIL', 2.63]]],
# ['Macul', [['46A. MACUL', 0.88]]],...]

Función cuarteles_por_tipo: Organización por Tipo y Región

Finalmente, la función cuarteles_por_tipo(nombre_archivo, filtro_region) te desafía a organizar los cuarteles de una región específica por su tipo, generando archivos de texto.

Parámetros:

  • nombre_archivo: String con el nombre del archivo CSV.
  • filtro_region: String con el nombre de la región administrativa.

Comportamiento esperado:

  1. Para cada tipo de cuartel dentro de la filtro_region: a. Crea un archivo de texto con el nombre REGION_TIPO.txt (ej. Valparaíso_SUBCOMISARIA.txt). b. Escribe una línea de encabezado: "Cuarteles de tipo [TIPO] en [REGION]". c. Lista los cuarteles de ese tipo en la región, uno por línea, ordenados alfabéticamente por nombre, con un número correlativo al inicio. [correlativo].- [nombre_cuartel]
  2. La función debe retornar el número total de cuarteles listados en todos los archivos creados.

Ejemplo de archivo generado (Valparaíso_SUBCOMISARIA.txt):

Cuarteles de tipo SUBCOMISARIA en Valparaíso
1.- SUBCOM. CONCON
2.- SUBCOM. EL QUISCO
3.- SUBCOM. GOMEZ CARRENO
4.- SUBCOM. VALPARAÍSO
5.- SUBCOM. LLAY LLAY
6.- SUBCOM. LLO LLEO
7.- SUBCOM. LOS LIBERTADORES (F)
8.- SUBCOM. QUINTERO
9.- SUBCOM. ROCAS SANTO DOMINGO

Preguntas Frecuentes sobre Problemas de Programación con Python

¿Qué herramientas de Python son útiles para estos problemas?

Para estos problemas de programación con Python, son fundamentales las funciones de manejo de archivos (open(), read(), write(), close()), la manipulación de strings (split(), strip()), estructuras de datos como listas y diccionarios, y funciones de ordenamiento (sort(), sorted()). La biblioteca collections.Counter puede ser útil para contar elementos rápidamente.

¿Cómo manejar los errores de datos, como años faltantes (-)?

Es importante implementar lógica para manejar datos incompletos o en formatos inesperados. Por ejemplo, al calcular el IIAS, si el campo año es '-', deberás decidir cómo proceder: ignorar el edificio, asignar un valor predeterminado o levantar un error, según los requisitos específicos del problema. En estos casos, se asume que solo se consideran años válidos para el cálculo del IIAS.

¿Cómo optimizar el rendimiento al procesar archivos CSV grandes?

Para archivos CSV con miles de registros, como el de edificios, es eficiente leer el archivo línea por línea y procesar los datos a medida que se leen, en lugar de cargar todo el archivo en memoria a la vez, especialmente si la memoria es un factor limitante. Además, el uso adecuado de diccionarios para búsquedas rápidas (como d_ciudad_pais) es crucial.

¿Qué importancia tiene el ordenamiento en estos problemas?

El ordenamiento es vital en varios puntos: ordenar países por cantidad de edificios, edificios por IIAS, comunas alfabéticamente y cuarteles por distancia o alfabéticamente. Python ofrece list.sort() para ordenar listas in-place y sorted() para obtener una nueva lista ordenada, ambas con la opción de usar una función key para criterios de ordenamiento complejos.

Materiales de estudio para este tema

Resumen

Un resumen claro de la información clave

Test de conocimientos

Pon a prueba tus conocimientos del tema

Tarjetas

Practica los conceptos clave con tarjetas

Podcast

Escucha un análisis en audio del tema

Mapa mental

Un resumen visual de la estructura del tema

En esta página

print(primerosn('edificios.csv', dciudadpais, 200, 5))
'China', 1299, 'United States', 257, 'United Arab Emirates', 159, 'Malaysia', 86, 'Korea', 84
Función impactoxciudad: Sostenibilidad de Edificios
Resolver Problemas de Programación con Python: Cuarteles de Carabineros
Estructura de Datos de Cuarteles
Función cuartelescercanos: Buscando la Seguridad más Próxima
print(cuartelescercanos('carabineros.csv', -33.4918, -70.6175, 5))
'La Granja', '13A. LA GRANJA', 4.85, 'SUBCOM. PARQUE BRASIL', 2.63,
'Macul', '46A. MACUL', 0.88,...
Función cuartelesportipo: Organización por Tipo y Región
Preguntas Frecuentes sobre Problemas de Programación con Python
¿Qué herramientas de Python son útiles para estos problemas?
¿Cómo manejar los errores de datos, como años faltantes (-)?
¿Cómo optimizar el rendimiento al procesar archivos CSV grandes?
¿Qué importancia tiene el ordenamiento en estos problemas?

Materiales de estudio

ResumenTest de conocimientosTarjetasPodcastMapa mental

Temas relacionados

Ejercicios Fundamentales de ProgramaciónFundamentos de Internet y RedesSupercomputadoras: Conceptos, Ranking y FuturoIntroducción a los Sistemas Operativos y Windows 7Fundamentos de Sistemas InformáticosConceptos Fundamentales de Datos e InformaciónArquitectura de Computadoras: Memoria y Placa BaseUnidad Central de Procesamiento (CPU) y sus ComponentesHistoria de las ComputadorasIntroducción a la Inteligencia Artificial