Salta al contenido principal

Funciones en Python (2024)

13. Ejercicio tipo final

13.9. Diccionario Banderas de Países

Banderas de países

Realizar un programa con menú para cargar banderas de países con bandas tricolores.

El país sería la clave y los colores van en una lista. Cada opción llama a una función:
    Menú:
    A- cargar una bandera de país
    B- buscar por país
    C- buscar por color
    S- salir

* Cuando el usuario ingresa una opción del menú incorrecta, mostrar un mensaje
 * El programa finaliza cuando presiona la "S", considerar también las minúsculas

* A la carga, se le pasa como parámetro el nombre del pais y retorna True cuando finaliza la carga.

* Considerar antes de cargar un pais si éste ya no fue cargado, en ese caso emitir un mensaje
y permitir el reingreso de otro nombre de pais.
* Permitir la carga de más de un pais, preguntando luego de la carga del primero si quiere ingresar otro, si presiona el usuario "S" permitirá ingresar un segundo, en caso que presione cualquier otra tecla, volverá al menú principal.

 * Permitir al usuario ingresar el color que busca, si está que muestre el país, pero si no está retorne False y emita un mensaje en el programa principal.

Si el usuario elige la opcion A debe llamar a la funcion carga con argumento el nombre del pais, retorna un booleano.

Si el usuario elige la opción B debe llamar a la función buscapais que recibe como argumento el país a buscar y en la función muestra si encontró el nombre del país y los colores. Retorna un booleano que se evalúa en el programa principal por el False indicando que no se encontró el país.

Si el usuario elige la opción C debe llamar a la función buscacolor recibe como argumento el color a buscar. En la función, si encuentra, indica qué país tiene ese color caso contrario, emite un mensaje de "no encontrado". No retorna nada. 

Controlar que para realizar la opcion B o C antes debe haber cargado por lo menos un país.

Una propuesta de solución sería.

# DEFINICIÓN DE LAS FUNCIONES       
def carga(clave):
    lista=[]
    for i in range(3): #bucle para cargar los tres colores
        color=input("ingrese color: ")
        lista.append(color)        
        bande[clave]=lista
    print (bande)
    return True
def buscapais(p): # el parámetro es el nombre del pais   
    if p in bande:
        print("Está el pais", p, "sus colores son :", bande[p])
        return True        
    else:
        return False
        
def buscacolor(c):
    encuentra=False  # variable para saber si encuentra el color
    for k in bande:
        for l in range(len(bande)):
            if bande[k][l]==c:
                print("tiene el color ", c, " la bandera de ", k)
                encuentra= True   # cambia de valor cuando encuentra el color         
       
    if not(encuentra): # si terminaron los bucles y no cambió el valor 
        print("ninguna bandera cargada tiene el color ", c)  
        
# PROGRAMA PRINCIPAL    
bande={}  # defino un diccionario vacío en el programa principal
cargado=False #variable para saber si se cargó un país, se ocupará en B y C
opc="X"
while opc != "S" and opc != "s":
    print ("Menú")
    print ("A- cargar una bandera ")    # carga(p) retorna True
    print ("B- buscar por país ")       # buscapais(p) retorna True o False si encuentra el pais
    print ("C- buscar por color ")      # buscacolor(c) retorna True o False si encuentra el color
    print ("S- salir ")
    opc=input("elija una opción del menú:")
    if opc =="S" or opc=="s":
        print("Salió del programa")
        break
    elif opc =="A" or opc=="a":
        repe="S"
        while repe =="S":
            pais=input("ingrese el pais: ")
            cargado=carga(pais)
            repe=input("Presione S si desea cargar otro país o N si no:")
    elif opc =="B" or opc=="b":
        if cargado ==False: 
            print ("No puede buscar un pais porque no se cargó ninguno, elija la opción A")
        else:
            pais=input("ingrese el pais a buscar: ")
            if not(buscapais(pais)):
                print("no se encuentra el pais ", pais)
    elif opc =="C" or opc=="c":
        if cargado==False:
            print ("No puede buscar un color porque no se cargó banderas, elija la opción A")
        else:
            color=input("ingrese el color a buscar: ")
            buscacolor(color)
    else:
        print("Opción incorrecta, por favor reintente")