Ejercicios con Listas en Python

En este post propongo algunos ejercicios básicos con listas en Python para practicar lo aprendido en el artículo de Listas.

El código de los programas viene con varios comentarios que pretenden hacer lo más comprensible posible la solución que se plantea.

Ejercicio 1: Contar vocales de una frase

Realiza un programa que solicite al usuario que introduzca una frase y cuente cuántas vocales hay en ella. El programa debe contar tanto las vocales minúsculas como las mayúsculas.

Por ejemplo:

  • Frase introducida: “Ocho elefantes comen trigo en un trigal”
  • Resultado: 14 vocales

Solución propuesta:

# Solicitar al usuario que introduzca una frase
frase = input("Introduce una frase: ")

# Inicializar el contador de vocales
contador_vocales = 0

# Definir una lista de vocales tanto en minúsculas como mayúsculas
vocales = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']

# Contar el número de vocales en la frase
for caracter in frase:
    if caracter in vocales:
        contador_vocales += 1

# Imprimir el resultado
print("Resultado:", contador_vocales, "vocales")

Ejercicio 2: Lista de listas

Crear la siguiente lista de dos dimensiones: lis1 = [[4,3,5],[3,5,8],[4,5,6]]. Con esta lista realizamos las siguientes operaciones:

  1. Crear una función llamada obt_valor_medio que calcule usando iteraciones el valor medio de todos elementos de la lista anterior (resultado: 4,78).
  2. Crear una función que realice un cálculo sobre los elementos de la lista anterior. El alumno puede elegir el cálculo a realizar. La función recibe como entrada la lista y da un valor de retorno.

Solución propuesta:

# Lista inicial
lis1 = [[4, 3, 5], [3, 5, 8], [4, 5, 6]]

# Función para obtener el valor medio
def obt_valor_medio(lista):
    suma_elementos = 0
    num_elementos = 0
    for sublista in lista:
        for elemento in sublista:
            suma_elementos += elemento
            num_elementos += 1
    return suma_elementos/num_elementos

# Función que devuelve el valor máximo
def obt_valor_maximo(lista):
    maximo = lista[0][0]  # Inicializar el máximo con el primer elemento de la lista
    for sublista in lista:
        for elemento in sublista:
            if elemento > maximo:
                maximo = elemento
    return maximo

# Llamadas a las funciones
valor_medio = obt_valor_medio(lis1)
valor_maximo = obt_valor_maximo(lis1)

# Mostrar los resultados
print(f"Valor medio de los elementos de la lista: {valor_medio}")
print(f"Valor máximo de los elementos de la lista: {valor_maximo}")

Ejercicio 3: Invertir cadena de caracteres

Escribe un programa en Python que solicite al usuario ingresar una cadena de caracteres y luego imprima la misma cadena, pero con los caracteres en orden inverso. Por ejemplo, si el usuario ingresa «Hola mundo», el programa deberá imprimir «odnum aloH”.

Solución propuesta:

cadena = input("Ingrese una cadena de caracteres: ")
# Invierte la cadena usando el operador de slicing [::-1]
cadena_invertida = cadena[::-1]
print("La cadena invertida es:", cadena_invertida)

Ejercicio 4: Mediana de una lista

Escribe un programa que obtenga la mediana de una lista de enteros. La lista es inicializada en el código, no hay que pedir al usuario que introduzca ningún dato. Y el programa tiene que funcionar para cualquier lista, con independencia de la longitud de esta.

No sé puede utilizar la función median de la librería statistics que devuelve la mediana directamente, se trata de programar esa función.

Nota: Recordad que la mediana es el valor que ocupa el lugar central de un conjunto de datos ordenados. Por tanto, si un conjunto de datos tiene un número de elementos impar, la mediana es el valor que ocupa la posición central, teniendo el mismo número de elementos mayores que elementos menores. Si el conjunto de datos tiene un número par de elementos, entonces la mediana es la media de los dos valores centrales.

lista = [1,21,7,5,3,11,10]
# Ordenamos la lista en orden ascendente 
lista_ordenada = sorted(lista)
n = len(lista_ordenada)
# Calculamos la posición del elemento central
mitad=int(n/2)
# Verificamos si la longitud de la lista es par o impar
if n % 2 == 0: # Si es par, la mediana es el promedio de los dos elementos centrales
    mediana = (lista_ordenada[mitad-1] + lista_ordenada[mitad]) / 2
else:  # Si es impar, la mediana es el elemento central
    mediana = lista_ordenada[mitad]

print("La mediana de la lista es:", mediana)

Ejercicio 5: Detectando anagramas

Escribe un programa en Python que solicite al usuario ingresar una cadena de caracteres y luego determine si esa cadena es un anagrama de otra cadena ingresada posteriormente. Dos cadenas son anagramas si tienen las mismas letras, pero en distinto orden. Por ejemplo, «roma» y «amor» son anagramas.

# Solicitamos al usuario que ingrese la primera cadena
cadena1 = input("Ingrese la primera cadena: ")

# Solicitamos al usuario que ingrese la segunda cadena
cadena2 = input("Ingrese la segunda cadena: ")

# Convertimos ambas cadenas a minúsculas para compararlas de manera case insensitive
cadena1 = cadena1.lower()
cadena2 = cadena2.lower()

# Ordenamos ambas cadenas y comparamos si son iguales
if sorted(cadena1) == sorted(cadena2):
    print("Las cadenas son anagramas")
else:
    print("Las cadenas no son anagramas")

NOTA:

Este post es parte de la colección “Python”. Puedes ver el índice de esta colección aquí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.