2 usuarios conectados

Aplicar sangría. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada extraer_clave_valor que tome una cadena de texto (que puede contener múltiples líneas) como entrada y devuelva un diccionario donde las claves son las claves encontradas y los valores son los valores correspondientes. La función debe ignorar las líneas que no sigan el formato "clave: valor".

.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Aplicar sangría

📋 Copiar código


def aplicar_sangria(texto, nivel_sangria):
  """
  Aplica sangría a cada línea de un bloque de texto.

  Args:
    texto: La cadena de texto a la que se aplicará la sangría.
           Puede contener múltiples líneas separadas por '\n'.
    nivel_sangria: El número de espacios para la sangría.

  Returns:
    Una nueva cadena con la sangría aplicada a cada línea.
  """
  lineas = texto.split('\n')
  sangria = " " * nivel_sangria
  texto_con_sangria = ""
  for i, linea in enumerate(lineas):
    texto_con_sangria += sangria + linea
    if i < len(lineas) - 1:
      texto_con_sangria += '\n'
  return texto_con_sangria

# Ejemplos de uso
texto1 = """Esta es la primera línea.
Esta es la segunda línea.
Esta es la tercera línea."""
sangria1 = 4
resultado1 = aplicar_sangria(texto1, sangria1)
print(f"Texto con sangría de {sangria1} espacios:\n'{resultado1}'")

texto2 = "Una sola línea."
sangria2 = 2
resultado2 = aplicar_sangria(texto2, sangria2)
print(f"\nTexto con sangría de {sangria2} espacios:\n'{resultado2}'")

texto3 = ""
sangria3 = 8
resultado3 = aplicar_sangria(texto3, sangria3)
print(f"\nTexto con sangría de {sangria3} espacios:\n'{resultado3}'")

texto4 = """Línea 1.
Línea 2 con más texto."""
sangria4 = 0
resultado4 = aplicar_sangria(texto4, sangria4)
print(f"\nTexto con sangría de {sangria4} espacios:\n'{resultado4}'")

Explicación del Código:

  1. def aplicar_sangria(texto, nivel_sangria)::

    • Define una función llamada aplicar_sangria que toma una cadena de texto (texto) y un entero (nivel_sangria) como entrada.
  2. lineas = texto.split('\n'):

    • Divide el texto en una lista de líneas, utilizando el carácter de nueva línea (\n) como delimitador.
  3. sangria = " " * nivel_sangria:

    • Crea una cadena de sangría que consiste en el número especificado de espacios.
  4. texto_con_sangria = "":

    • Inicializa una cadena vacía para almacenar el texto con la sangría aplicada.
  5. for i, linea in enumerate(lineas)::

    • Itera a través de cada línea en la lista lineas, utilizando enumerate para obtener tanto el índice como la línea.
  6. texto_con_sangria += sangria + linea:

    • Añade la cadena de sangría al principio de la línea actual y luego añade la propia línea al texto_con_sangria.
  7. if i < len(lineas) - 1::

    • Verifica si la línea actual no es la última línea del texto.
  8. texto_con_sangria += '\n':

    • Si no es la última línea, añade un carácter de nueva línea para mantener la estructura del texto original.
  9. return texto_con_sangria:

    • Devuelve la cadena completa con la sangría aplicada a cada línea.

Ejemplos de Uso:

Los ejemplos muestran cómo la función aplica la sangría especificada a diferentes bloques de texto, incluyendo casos con múltiples líneas, una sola línea y texto vacío.