Tracks
/
Python
Python
/
Ejercicios
/
El ensayo de la hermanita
El ensayo de la hermanita

El ensayo de la hermanita

Ejercicio de aprendizaje

Introducción

La clase str ofrece muchos métodos útiles para trabajar con strings y componerlos. Entre ellos hay métodos para buscar, limpiar, dividir, transformar, traducir y muchas otras técnicas.

Los strings son secuencias de puntos de código Unicode: cada «carácter» o punto de código individual (strings de longitud 1) se puede referenciar mediante un 0-based index desde la izquierda, o un -1-based index desde la derecha. Los strings implementan todas las operaciones de secuencia comunes.

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 hay 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 mucho del códec del idioma que se use y de cómo ese idioma en particular representa las palabras y los caracteres. También puede haber reglas de locale 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 indicados 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 indica 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 con todas las apariciones de <substring> reemplazadas por <replacement substring>.

La cita que aparece abajo 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 menor a corregir su ensayo para la escuela. El maestro busca puntuación y gramática correctas, y una excelente elección de palabras.

Tienes cuatro tareas para limpiar y modificar strings.

1. Capitalizar el título del ensayo

Todo buen ensayo necesita un título con el formato correcto. Implementa la función capitalize_title(<title>) que toma como parámetro un título de tipo str 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. Comprobar si cada oración termina con un punto

Quieres asegurarte de que la puntuación del ensayo 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. Limpiar el espaciado

Para que el ensayo se vea profesional, hay que eliminar el espaciado innecesario. Implementa la función clean_up_spacing() que toma sentence como parámetro. La función debe eliminar los espacios en blanco adicionales tanto al principio como al final de la oración, y devolver una nueva oración actualizada de tipo str.

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

4. Reemplazar palabras por un sinónimo

Para que el ensayo sea aún mejor, puedes reemplazar 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 oración 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 una pestaña nuevas
Python Exercism

¿Todo listo para empezar El ensayo de la hermanita?

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