Stringhe 4

Metodi di ricerca

Slide adattate da softpython

Premi esc per l'overview generale

1. Introduzione 1

Risultato Metodo Significato
str str.strip(str) Rimuove stringhe dai lati
str str.lstrip(str) Rimuove stringhe da sinistra
str str.rstrip(str) Rimuove stringhe da destra
int str.count(str) Conta il numero di occorrenze di una sottostringa
int str.find(str) Ritorna la prima posizione di una sottostringa a partire da sinistra
int str.rfind(str) Ritorna la prima posizione di una sottostringa a partire da destra
str str.replace(str, str) Sostituisce sottostringhe

2. Count 1

Metodo count

  • count conta quante occorrenza della sottostringa in input ci sono nella stringa su cui è applicato

2. Count 2

Metodo count

  • Opzionalmente puoi passare indici da cui partire a contare e/o dove terminare

2. Count 3

Durante il lockdown 2020, mentre guardavi le stelle nella notte, hai cominciato a sentire… onde. Rimuginandoci sopra, hai deciso che LORO vogliono comunicare con te, perciò hai montato un antenna satellitare sul tuo tetto per ricevere messaggi dagli alieni. Dopo mesi di rumori apparentemente irrilevanti, un giorno hai finalmente ricevuto un radio-messaggio che pensi di poter tradurre. Gli alieni ovviamente stanno cercando di dirti i numeri vincenti della lotto! Un messaggio è una sequenza di esattamente 3 diverse ripetizioni di caratteri: il numero di caratteri in ogni ripetizione è un numero che proverai alla lotteria. Inizi freneticamente a sviluppare il traduttore per mostrare questi numeri fortunati sul terminale.

Esempio: data

s = '$$$$€€€€€!!'

dovrebbe stampare

$ € !
4 5 2
  • IMPORTANTE: puoi assumere che tutte le sequenze abbiano caratteri *differenti*
  • NON usare cicli nè comprehension
  • per semplicità assumi che ogni sequenza di caratteri abbia al più 9 ripetizioni

3. Replace 1

Metodo replace

Esempio:

'il treno percorre'.replace('re', 'RO')

  • sostituisce da 'il treno percorre' tutte le occorrenze di 're' con 'RO'
  • produce una NUOVA stringa 'il tROno percorRO'

3. Replace 2

Metodo replace

  • E' possibile specificare fino a quante occorrenze verranno sostituite

3. Replace 3

Domanda

Prova ad indovinare che risultato produce la seguente espressione

Esegui il codice per verificare

3. Replace 4

Domanda

Prova ad indovinare che risultato produce la seguente espressione

Esegui il codice per verificare

3. Replace 5

Esercizio - Non aprite quella porta

Hai una biblioteca di libri, con etichette come G-Il padrino, R-I promessi sposi o H-Non aprite quella porta composte da una un carattere che identifica il tipo (G giallo, R romanzo, H horror) seguito da - e dal titolo.

Dato un libro, vuoi stampare l’etichetta completa, due punti e poi il titolo, come 'Giallo: Il padrino'.

Guarda i seguenti frammenti di codice nelle slide seguenti, e per ciascuno prova a scrivere delle etichette tra quelle proposte o creane altre che darebbero risultati errati (se esistono)

libro = 'G-Il padrino'
libro = 'R-I promessi sposi'
libro = 'H-Non aprite quella porta'

3. Replace 6

Esercizio - Non aprite quella porta (1)

libro = 'G-Il padrino'
libro = 'R-I promessi sposi'
libro = 'H-Non aprite quella porta'

3. Replace 7

Esercizio - Non aprite quella porta (2)

libro = 'G-Il padrino'
libro = 'R-I promessi sposi'
libro = 'H-Non aprite quella porta'

3. Replace 8

Esercizio - Non aprite quella porta (3)

libro = 'G-Il padrino'
libro = 'R-I promessi sposi'
libro = 'H-Non aprite quella porta'

3. Replace 9

Esercizio - Non aprite quella porta (4)

libro = 'G-Il padrino'
libro = 'R-I promessi sposi'
libro = 'H-Non aprite quella porta'

3. Replace 10

Esercizio - Non aprite quella porta (5)

libro = 'G-Il padrino'
libro = 'R-I promessi sposi'
libro = 'H-Non aprite quella porta'

3. Replace 11

Esercizio - Il regno degli Stringardi

La landa dei Caratterinzi è dominata col pugno di ferro dal Ducato degli Stringardi. I borghi comandati degli Stringardi si distinguono per essere monodimensionali e possono essere rappresentati come una stringa: offrono ospitalità ai duchi 'd', ai signori 's', ai vassalli 'v', e alla plebe 'p'. Al fine di separare le varie cerchie sociali da disdicevoli commistioni sono state erette delle mura |mm|. Purtroppo, il Ducato è sotto attacco dalla tribù dei beceri Replaceri, che con loro tecniche barbare e poco avvedute rischiano di radere al suolo la città. Per difendersi, gli Stringardi decidono di innalzare le mura, trasformandole da |mm| a |MM|.

  • NON usare cicli nè list comprehension
  • NON usare liste (quindi niente .split)

Esempio: dati

borgo = 'ppp|mm|vvvvvv|mm|sss|mm|dd|mm|sssss|mm|vvvvvv|mm|pppppp'

il tuo codice deve ritornare

'ppp|MM|vvvvvv|MM|sss|MM|dd|MM|sssss|MM|vvvvvv|MM|pppppp'

3. Replace 12

Esercizio - Il regno degli Stringardi

Esempio: dato

borgo = 'ppp|mm|vvvvvv|mm|sss|mm|dd|mm|sssss|mm|vvvvvv|mm|pppppp'

il tuo codice deve ritornare

'ppp|MM|vvvvvv|MM|sss|MM|dd|MM|sssss|MM|vvvvvv|MM|pppppp'

3. Replace 13

Stringardi II - Mura esterne

Purtroppo la plebaglia non lavora abbastanza e non vi sono fondi per innalzare tutte le mura: innalza solo le mura all’esterno

  • NON usare cicli nè list comprehension
  • NON usare liste (quindi niente split)

Esempio: dati

borgo = 'ppp|mm|vvvvvv|mm|sss|mm|dd|mm|sssss|mm|vvvvvv|mm|pppppp'

il tuo codice deve ritornare

'ppp|MM|vvvvvv|MM|sss|MM|dd|MM|sssss|MM|vvvvvv|MM|pppppp'

3. Replace 14

Stringardi II - Mura esterne

Esempio: dato

borgo = 'ppp|mm|vvvvvv|mm|sss|mm|dd|mm|sssss|mm|vvvvvv|mm|pppppp'

il tuo codice deve ritornare

'ppp|MM|vvvvvv|MM|sss|MM|dd|MM|sssss|MM|vvvvvv|MM|pppppp'

3. Replace 15

Stringardi III - Potere al popolo

Una minaccia ancora più grande affligge gli Stringardi: la democrazia. A seguito del dilagare di questo male oscuro, in alcune città si sono sviluppate fazioni di destra e sinistra, che tendono a privilegiare solo alcune parti della città. Se il sentimento dominante di una città è di sinistra, tutte le abitazioni a sinistra del duca sono privilegiate a suon di dobloni, altrimenti se di destra sono privilegiate quelle a destra del duca. Quando una casa è privilegiata la lettera corrispondente viene resa in maiuscolo.

  • Assumi che almeno un blocco con d sia sempre presente, e che sia unico
  • NON usare cicli nè list comprehension
  • NON usare liste (quindi niente split)

Ci sono due varianti per questo esercizio, alle prossime slide le troverai entrambe

3. Replace 16

Stringardi III - Potere al popolo (1)

Privilegia solo le case di sinistra

Esempio: dato

borgo = 'ppp|mm|vvvvvv|mm|sss|mm|dd|mm|sssss|mm|vvvvvv|mm|pppppp'

il tuo codice deve ritornare

'PPP|mm|VVVVVV|mm|SSS|mm|dd|mm|sssss|mm|vvvvvv|mm|pppppp'

3. Replace 17

Stringardi III - Potere al popolo (2)

Privilegia solo le case di destra

Esempio: dato

borgo = 'ppp|mm|vvvvvv|mm|sss|mm|dd|mm|sssss|mm|vvvvvv|mm|pppppp'

il tuo codice deve ritornare

'ppp|mm|vvvvvv|mm|sss|mm|dd|mm|SSSSS|mm|VVVVVV|mm|PPPPPP'

3. Replace 18

Stringardi IV - Lotte di Potere

Nel tempo la famiglia ducale si è espansa e purtroppo sono nate faide spietate. A seconda della popolosità del borgo di sinistra o destra, un corrispondente numero dei membri della famiglia più a sinistra nel palazzo ducale o più a destra ricevono supporto per attuare i loro giochi di potere. Un membro del palazzo ducale che riceve supporto diventa in maiuscolo. Ogni lettera 'p', 'v' o 's' contribuisce supporto (ma non i muri). I membri della famiglia ducale che non sono raggiunti da nessun supporto vengono trucidati dai parenti, e sostituiti con una Latin Cross Unicode

  • Assumi che almeno un blocco con d sia sempre presente, e che sia unico
  • assumi che per ogni casa di sinistra/destra, vi sia almeno un duca di sinistra/destra
  • NON usare cicli nè list comprehension
  • NON usare liste (quindi niente split)

3. Replace 19

Stringardi IV - Lotte di Potere

Esempio: dato

borgo = 'ppp|mm|vv|mm|v|s|mm|dddddddddddddddddddddddd|mm|ss|mm|vvvvv|mm|pppp'

il tuo codice deve stampare

Membri della famiglia reale: 24
                di sinistra: 7
                  di destra: 11

Dopo la lotta fratricida, il nuovo borgo è:

ppp|mm|vv|mm|v|s|mm|DDDDDDD✝✝✝✝✝✝DDDDDDDDDDD|mm|ss|mm|vvvvv|mm|pppp

4. Altri Esercizi 1

Domanda

Prova ad indovinare che risultato produce la seguente espressione

Esegui il codice per verificare

4. Altri Esercizi 2

Domanda

Prova ad indovinare che risultato produce la seguente espressione

Esegui il codice per verificare

4. Altri Esercizi 3

Domanda

Prova ad indovinare che risultato produce la seguente espressione

Esegui il codice per verificare

4. Altri Esercizi 4

Domanda

Prova ad indovinare che risultato produce la seguente espressione

Esegui il codice per verificare