Track
/
Python
Python
/
Esercizi
/
Il tema della sorellina
Il tema della sorellina

Il tema della sorellina

Esercizio di apprendimento

Introduzione

La classe str offre molti metodi utili per lavorare con le stringhe e comporle. Tra questi troviamo la ricerca, la pulizia, la suddivisione, la trasformazione, la traduzione e molte altre tecniche.

Le stringhe sono sequenze di punti di codice Unicode: i singoli «caratteri» o punti di codice (stringhe di lunghezza 1) si possono indicare tramite un numero di 0-based index da sinistra, oppure un numero di -1-based index da destra. Le stringhe implementano tutte le operazioni comuni sulle sequenze.

Si possono iterare usando la sintassi for item in <str> o for index, item in enumerate(<str>). Si possono anche concatenare usando <str> + <other str> o <str>.join(<iterable>).

Le stringhe sono immutabili: il valore di un oggetto str in memoria non può cambiare. Le funzioni o i metodi che operano su una str (come quelli che stiamo imparando qui) restituiscono una nuova instance di quell'oggetto str invece di modificare la str originale.

Di seguito trovi una piccola selezione di metodi per le stringhe di Python. Per un elenco completo, vedi la classe str nella documentazione di Python.

<str>.title() analizza una stringa e mette in maiuscolo il primo «carattere» di ogni «parola» trovata. In Python, questo dipende molto dal codec della lingua usato e da come quella particolare lingua rappresenta parole e caratteri. Possono anche esserci regole di locale per una lingua o un set di caratteri.

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>) restituisce True se la stringa termina con <suffix>, altrimenti False.

>>> '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>) restituisce una copia della str con i <chars> iniziali e finali rimossi. I punti di codice specificati in <chars> non sono un prefisso o un suffisso: tutte le combinazioni dei punti di codice verranno rimosse a partire da entrambe le estremità della stringa. Se non viene specificato nulla per <chars>, verranno rimosse tutte le combinazioni di punti di codice di spaziatura.

# 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>) restituisce una copia della stringa con tutte le occorrenze di <substring> sostituite con <replacement substring>.

La citazione usata qui sotto è tratta da The Hunting of the Snark di 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'

Istruzioni

In questo esercizio aiuterai tua sorella minore a correggere il tema per la scuola. L'insegnante cerca una punteggiatura corretta, una buona grammatica e una scelta delle parole eccellente.

Hai quattro attività per ripulire e modificare alcune stringhe.

1. Metti in maiuscolo il titolo del tema

Ogni buon tema ha bisogno di un titolo formattato come si deve. Implementa la funzione capitalize_title(<title>), che prende come parametro un titolo di tipo str e mette in maiuscolo la prima lettera di ogni parola. La funzione deve restituire una str con l'iniziale maiuscola di ogni parola.

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

2. Controlla se ogni frase termina con un punto

Vuoi assicurarti che la punteggiatura del tema sia perfetta. Implementa la funzione check_sentence_ending(), che prende sentence come parametro. La funzione deve restituire un bool.

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

3. Elimina gli spazi superflui

Per rendere il tema professionale, occorre rimuovere la spaziatura superflua. Implementa la funzione clean_up_spacing(), che prende sentence come parametro. La funzione deve rimuovere gli spazi bianchi in eccesso sia all'inizio sia alla fine della frase e restituire una nuova str con la frase aggiornata.

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

4. Sostituisci le parole con un sinonimo

Per rendere il tema ancora migliore, puoi sostituire alcuni aggettivi con i loro sinonimi. Scrivi la funzione replace_word_choice(), che prende sentence, old_word e new_word come parametri. La funzione deve sostituire tutte le occorrenze di old_word con new_word e restituire una nuova str con la frase aggiornata.

>>> replace_word_choice("I bake good cakes.", "good", "amazing")
"I bake amazing cakes."
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Python Exercism

Vuoi iniziare Il tema della sorellina?

Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.