Rutas
/
Python
Python
/
Ejercicios
/
La redacción de la hermana pequeña
La redacción de la hermana pequeña

La redacción de la hermana pequeña

Ejercicio de aprendizaje

Introducción

La clase str ofrece muchos métodos útiles para trabajar con strings y componerlos. Entre ellos hay técnicas de búsqueda, limpieza, división, transformación, traducción y muchas otras.

Los strings son secuencias de puntos de código Unicode. Se puede hacer referencia a los «caracteres» o puntos de código individuales (strings de longitud 1) mediante un número 0-based index a partir de la izquierda, o un número -1-based index a partir de la derecha. Los strings implementan todas las operaciones comunes de secuencia.

Se pueden recorrer con la sintaxis for item in <str> o for index, item in enumerate(<str>). También se pueden concatenar con <str> + <other str> o <str>.join(<iterable>).

Los strings son inmutables, lo que significa que el valor de un objeto str en memoria no puede cambiar. Las funciones o métodos que operan sobre un str (como los que estamos aprendiendo aquí) devolverán una nueva instance de ese objeto str en lugar de modificar el str original.

A continuación tienes una pequeña selección de métodos de string de Python. Para ver la lista completa, consulta la clase str en la documentación de Python.

<str>.title() analiza un string y pone en mayúscula el primer «carácter» de cada «palabra» que encuentra. En Python, esto depende en gran medida del códec de idioma que se use y de cómo representa ese idioma concreto las palabras y los caracteres. También puede haber reglas de configuración regional para un idioma o un conjunto de caracteres.

man_in_hat_th = 'ผู้ชายใส่หมวก'
man_in_hat_ru = 'мужчина в шляпе'
man_in_hat_ko = '모자를 쓴 남자'
man_in_hat_en = 'the man in the hat.'

>>> man_in_hat_th.title()
'ผู้ชายใส่หมวก'

>>> man_in_hat_ru.title()
'Мужчина В Шляпе'

>>> man_in_hat_ko.title()
'모자를 쓴 남자'

>> man_in_hat_en.title()
'The Man In The Hat.'

<str>.endswith(<suffix>) devuelve True si el string termina con <suffix>, y False en caso contrario.

>>> 'My heart breaks. 💔'.endswith('💔')
True

>>> 'cheerfulness'.endswith('ness')
True

# Punctuation is part of the string, so needs to be included in any endswith match.
>>> 'Do you want to 💃?'.endswith('💃')
False

>> 'The quick brown fox jumped over the lazy dog.'.endswith('dog')
False

<str>.strip(<chars>) devuelve una copia del str con los <chars> del principio y del final eliminados. Los puntos de código especificados en <chars> no son un prefijo ni un sufijo: se eliminarán todas las combinaciones de esos puntos de código empezando por ambos extremos del string. Si no se especifica nada para <chars>, se eliminarán todas las combinaciones de puntos de código de espacio en blanco.

# This will remove "https://", because it can be formed from "/stph:". 
>>> 'https://unicode.org/emoji/'.strip('/stph:')
'unicode.org/emoji'

# Removal of all whitespace from both ends of the str.
>>> '   🐪🐪🐪🌟🐪🐪🐪   '.strip()
'🐪🐪🐪🌟🐪🐪🐪'

>>> justification = 'оправдание'
>>> justification.strip('еина')
'оправд'

# Prefix and suffix in one step.
>>> 'unaddressed'.strip('dnue')
'address'

>>> '  unaddressed  '.strip('dnue ')
'address'

<str>.replace(<substring>, <replacement substring>) devuelve una copia del string en la que todas las apariciones de <substring> se sustituyen por <replacement substring>.

La cita que aparece a continuación es de The Hunting of the Snark, de Lewis Carroll

# The Hunting of the Snark, by Lewis Carroll
>>> quote = '''
"Just the place for a Snark!" the Bellman cried,
   As he landed his crew with care;
Supporting each man on the top of the tide
   By a finger entwined in his hair.

"Just the place for a Snark! I have said it twice:
   That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
   What I tell you three times is true."
'''

>>> quote.replace('Snark', '🐲')
...
'\n"Just the place for a 🐲!" the Bellman cried,\n   As he landed his crew with care;\nSupporting each man on the top of the tide\n   By a finger entwined in his hair.\n\n"Just the place for a 🐲! I have said it twice:\n   That alone should encourage the crew.\nJust the place for a 🐲! I have said it thrice:\n   What I tell you three times is true."\n'

>>> 'bookkeeper'.replace('kk', 'k k')
'book keeper'

Instrucciones

En este ejercicio ayudas a tu hermana pequeña a corregir su trabajo para el colegio. El profesor busca una puntuación y una gramática correctas, y una elección de palabras excelente.

Tienes cuatro tareas para limpiar y modificar strings.

1. Capitaliza el título del trabajo

Cualquier buen trabajo necesita un título bien formateado. Implementa la función capitalize_title(<title>), que toma un título str como parámetro y pone en mayúscula la primera letra de cada palabra. Esta función debe devolver un str en formato de título.

>>> capitalize_title("my hobbies")
"My Hobbies"

2. Comprueba si cada frase termina con un punto

Quieres asegurarte de que la puntuación del trabajo sea perfecta. Implementa la función check_sentence_ending(), que toma sentence como parámetro. Esta función debe devolver un bool.

>>> check_sentence_ending("I like to hike, bake, and read.")
True

3. Limpia los espacios

Para que el trabajo parezca profesional, hay que eliminar los espacios innecesarios. Implementa la función clean_up_spacing(), que toma sentence como parámetro. La función debe eliminar los espacios adicionales tanto al principio como al final de la frase y devolver un nuevo str con la frase actualizada.

>>> clean_up_spacing(" I like to go on hikes with my dog.  ")
"I like to go on hikes with my dog."

4. Sustituye palabras por un sinónimo

Para que el trabajo sea aún mejor, puedes sustituir algunos de los adjetivos por sus sinónimos. Escribe la función replace_word_choice(), que toma sentence, old_word y new_word como parámetros. Esta función debe reemplazar todas las apariciones de old_word por new_word y devolver un nuevo str con la frase actualizada.

>>> replace_word_choice("I bake good cakes.", "good", "amazing")
"I bake amazing cakes."
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Python Exercism

¿Listo para empezar La redacción de la hermana pequeña?

Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.