python

Python: ejercicio de provincias y distritos

El día de hoy vamos a resolver un ejercicio de programación en Python. Se trata de un programa que gestiona provincias y distritos usando colecciones; específicamente en este caso vamos a usar diccionarios.

El programa solicita lo siguiente:

Elaborar una aplicación de línea de comandos en Python cuyo propósito sea gestionar todas las provincias de un país, junto con sus respectivos distritos. Deben utilizar colecciones para lograrlo. La aplicación deberá permitir la consulta bajo el nombre de una provincia, y de ahí, poder mostrar todos sus distritos. Es importante que el programa no falle por ninguna excepción o error.

Veamos cómo resolver esto usando el lenguaje de programación Python.

Explicación de la solución

Vamos a usar un diccionario, por lo que debemos recordar que un diccionario guarda claves y valores. La clave en este caso será la provincia, y el valor será un arreglo de distritos.

De este modo vamos a poder acceder a los distritos usando simplemente el nombre de la provincia, y también determinar si la provincia existe.

Agregar distrito y provincia

Comenzamos declarando el diccionario que en este caso será global, y una función que va a registrar tanto la provincia como el distrito.

Si la provincia no existe, la registramos por primera vez. Para ello usamos el operador in en Python, y también algún if.

provincias = {}


def agregar_distrito_provincia(distrito, provincia):
    global provincias
    if not provincia in provincias:
        provincias[provincia] = []
    provincias[provincia].append(distrito)


Sin importar si la provincia existe, simplemente agregamos un elemento al arreglo. Pues en la línea 6 comprobamos si la provincia no existe para declarar su valor como un arreglo vacío.

Imprimir distritos de provincia

Ahora vamos a ver el siguiente requerimiento, que es imprimir los distritos que pertenecen a determinada provincia a partir del nombre de ésta última. El código queda así:

def imprimir_distritos_de_provincia(provincia):
    if not provincia in provincias:
        print("No hay distritos registrados")
        return

    print("Los distritos de " + provincia + " son: ")
    for distrito in provincias[provincia]:
        print(distrito)


En la línea 2 comprobamos si la provincia no existe, en ese caso imprimimos el mensaje y regresamos de la función. En el caso contrario, imprimimos los distritos.

Poniendo todo junto

Lo que falta ahora es un menú para que el usuario pueda gestionar estos datos a través del diccionario que le vamos a proporcionar. El código completo por lo tanto queda así:

"""

  ____          _____               _ _           _       
 |  _ \        |  __ \             (_) |         | |      
 | |_) |_   _  | |__) |_ _ _ __ _____| |__  _   _| |_ ___ 
 |  _ <| | | | |  ___/ _` | '__|_  / | '_ \| | | | __/ _ \
 | |_) | |_| | | |  | (_| | |   / /| | |_) | |_| | ||  __/
 |____/ \__, | |_|   \__,_|_|  /___|_|_.__/ \__, |\__\___|
         __/ |                               __/ |        
        |___/                               |___/         
    
____________________________________
/ Si necesitas ayuda, contáctame en \
\ https://parzibyte.me               /
 ------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
Creado por Parzibyte (https://parzibyte.me). Este encabezado debe mantenerse intacto,
excepto si este es un proyecto de un estudiante.
"""
provincias = {}


def agregar_distrito_provincia(distrito, provincia):
    global provincias
    if not provincia in provincias:
        provincias[provincia] = []
    provincias[provincia].append(distrito)


def imprimir_distritos_de_provincia(provincia):
    if not provincia in provincias:
        print("No hay distritos registrados")
        return

    print("Los distritos de " + provincia + " son: ")
    for distrito in provincias[provincia]:
        print(distrito)


eleccion = ""
while eleccion != "3":
    eleccion = input("""
1. Agregar distrito
2. Mostrar distritos de provincia
3. Salir
Seleccione: """)
    if eleccion == "1":
        distrito = input("Ingrese el distrito: ")
        provincia = input("Ingrese la provincia al que pertenece: ")
        agregar_distrito_provincia(distrito, provincia)
        print("Agregado")
    elif eleccion == "2":
        provincia = input("Ingrese la provincia: ")
        imprimir_distritos_de_provincia(provincia)

Yo lo probé y en mi caso luce así:

Python – Ejercicio resuelto con diccionarios, gestionar distritos y provincias

Así es como terminamos de resolver este ejercicio de programación.

Leer más sobre Python en mi blog.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

3 días hace

Esta web usa cookies.