Tema 10: Métodos de las colecciones (Soluciones)

Nota: Estos ejercicios son optativos para hacer al final de la unidad y están pensados para apoyar tu aprendizaje.

1) Utilizando todo lo que sabes sobre cadenas, listas, sus métodos internos... Transforma este texto:

un día que el viento soplaba con fuerza#mira como se mueve aquella banderola -dijo un monje#lo que se mueve es el viento -respondió otro monje#ni las banderolas ni el viento, lo que se mueve son vuestras mentes -dijo el maestro

En este otro:

Un día que el viento soplaba con fuerza...
- Mira como se mueve aquella banderola -dijo un monje.
- Lo que se mueve es el viento -respondió otro monje.
- Ni las banderolas ni el viento, lo que se mueve son vuestras mentes -dijo el maestro.

Lo único prohibido es modificar directamente el texto


In [3]:
# Completa el ejercicio aquí
texto = "un día que el viento soplaba con fuerza#mira como se mueve aquella banderola -dijo un monje#lo que se mueve es el viento -respondió otro monje#ni las banderolas ni el viento, lo que se mueve son vuestras mentes -dijo el maestro"

lineas = texto.split("#")
for i, linea in enumerate(lineas):
    lineas[i] = linea.capitalize()
    if i == 0:
        lineas[i] = lineas[i] + "..."
    else:
        lineas[i] = "- " + lineas[i] + "."

# Mostramos el texto final
for linea in lineas:
    print(linea)


Un día que el viento soplaba con fuerza...
- Mira como se mueve aquella banderola -dijo un monje.
- Lo que se mueve es el viento -respondió otro monje.
- Ni las banderolas ni el viento, lo que se mueve son vuestras mentes -dijo el maestro.

2) Crea una función modificar() que a partir de una lista de números realice las siguientes tareas sin modificar la original:

  • Borrar los elementos duplicados
  • Ordenar la lista de mayor a menor
  • Eliminar todos los números impares
  • Realizar una suma de todos los números que quedan
  • Añadir como primer elemento de la lista la suma realizada
  • Devolver la lista modificada
  • Finalmente, después de ejecutar la función, comprueba que la suma de todos los números a partir del segundo, concuerda con el primer número de la lista, tal que así:
    nueva_lista = modificar(lista)
    print( nueva_lista[0] == sum(nueva_lista[1:]) )
    > True
    

Nota: La función sum(lista) devuelve una suma de los elementos de una lista

Solución revisada creando una nueva lista (15/12/2016)


In [2]:
# Completa el ejercicio aquí
lista = [29, -5, -12, 17, 5, 24, 5, 12, 23, 16, 12, 5, -12, 17]

def modificar(l):
  
    l = list(set(l))  # Borrar los elementos duplicados (recrea la lista a partir de un nuevo diccionario)
    l.sort(reverse=True)  # Ordenar la lista de mayor a menor
 
    l_tmp = []  # Lista temporal que contendrá solo los números pares
    for n in l:
        if n%2 == 0:
            l_tmp.append(n)
            
    suma = sum(l_tmp)  # Realizar una suma de todos los números que quedan
    l_tmp.insert(0, suma)  # Añadir como primer elemento de la lista de pares la suma realizada
    return l_tmp  # Devolver la lista de pares modificada


nueva_lista = modificar(lista)
print( nueva_lista[0] == sum(nueva_lista[1:]) )


True