Stringhe 1

Introduzione

Slide adattate da softpython

Premi esc per l'overview generale

1. Introduzione 1

Le stringhe

  • Sequenze immutabili di caratteri
    • doppie virgolette, una linea
    • virgolette singole, una linea
    • tre doppie virgolette, più linee
    • tre apici, più linee

1. Introduzione 2

Stampare le stringhe

  • Comando print
  • Modalità interprete, apici singoli: vediamo apici singoli
  • Modalità interprete, con apici doppi?
  • Modalità interprete, con variabili?

1. Introduzione 3

Stampare più stringhe

  • Più parameteri per print
  • Anche mischiati con altri tipi (es. numeri)
  • Prova tu!

1. Introduzione 4

Lunghezza di una stringa

  • funzione len
  • (qualunque sequenza)

1. Introduzione 5

Domanda 1

Possiamo scrivere una cosa del genere? Cosa produce?

"len"("ciao")

1. Introduzione 6

Domanda 2

Possiamo scrivere una cosa del genere? Cosa produce?

len("len('ciao')")

1. Introduzione 7

Domanda 3

Possiamo scrivere una cosa del genere? Cosa produce?

len(((((("ciao"))))))

2. Escape 1

Contare sequenze di escape

  • Le sequenze di escape possono occupare meno spazi di quello che sembra

2. Escape 2

Le sequenze di escape

Descrizione Sequenza di escape
Ritorno a capo (linefeed) \n
Tabulazione (ASCII tab) \t

2. Escape 3

Esercizio 1

Quanto sono lunghe le sequenze di escape speciali?

Prova a stampare la lunghezza delle seguenti stringhe: 'ab\ncd' e 'ab\tcd'

Noti qualcosa di strano?

2. Escape 4

Esercizio 2

Trova UNA SOLA stringa che stampata con print venga mostrata come la seguente.

Questa  è
una

sfida   apparentemente      semplice
  • USA SOLO combinazioni di \t e \n
  • NON usare spazi
  • inizia e concludi la stringa con apice singolo

2. Escape 5

Esercizio 3

Trova UNA SOLA stringa che stampata con print venga mostrata come la seguente.

At  te
n   tis
simame

n
te
  • USA SOLO combinazioni di \t e \n
  • NON usare spazi
  • NON usare tripli apici

3. Caratteri speciali 1

Caratteri Speciali

Descrizione Sequenza di escape Risultato a stampa
Apice singolo \' '
Doppio apice \" "
Backslash \\ \

3. Caratteri speciali 2

Esercizio 1

Trova una stringa da stampare con la print che stampata mostri la sequenza seguente

Questo "genio" delle stringhe vuole /\\/ fregarmi \//\ con esercizi atroci O_o'

La stringa DEVE iniziare e finire con apici singoli '

4. Encodings 1

Caratteri ASCII

  • encoding
  • 127 caratteri
  • Extended ASCII
Ascii image

4. Encodings 2

Caratteri UNICODE

Sequenza di escape Risultato stampato
\u272A
Vai a questa pagina, copia-incolla il carattere ✪ e stampalo da codice Python

4. Encodings 3

Esercizio

Cerca su Google Unicode heart e prova a stampare un cuore in Python

Fallo sia copia-incollando il carattere, sia usando la notazione \uxxxx

4. Encodings 4

Riferimenti

5. Immutabilità 1

Le stringhe sono immutabili

Le stringhe sono oggetti immutabili.

Si può solo:

  • generare una nuova stringa a partire da altre
  • riassegnare una variabile stringa

L'operazione + concatena creando una NUOVA stringa

5. Immutabilità 2

Riassegnare variabili

Possiamo riassegnare le variabili

Python si occupa di liberare la memoria

5. Immutabilità 3

Riassegnare variabili

Cosa succede se alla destra dell'= mettiamo una formula del genere?

5. Immutabilità 4

Cosa è successo?

x = 'ciao'
x = x + 'mondo'
  1. Python genera la stringa 'ciao' e la assegna ad x
  2. Poi:
    • calcola il risultato di x + 'mondo', genera NUOVA stringa 'ciaomondo'
    • assegna la nuova stringa a x

5. Immutabilità 5

Per riassumere...

x = 'ciao'
x = x + 'mondo'
  1. PRIMA viene calcolato il risultato dell'espressione a destra dell'=
  2. POI il risultato viene associato alla variabile a sinistra dell'=

5. Immutabilità 6

Esercizio

Scrivi del codice che cambia lo stato della memoria in modo che alla fine risulti la stampa seguente:

z =  Questo
w =  era
x =  un problema
y =  era
s =  Questo era un problema
  • Usa SOLO i simboli =, +, w, x, y, s
  • puoi usare quante linee di codice ritieni opportune
  • puoi usare ogni simbolo quante volte vuoi

5. Stringhe e numeri 1

Stringhe e numeri

  • Tipo stringhe: str
  • Se una stringa contiene un numero?
  • Questo codice porta ad un errore, perché:
    • '254' è di tipo str
    • 254 è di tipo int

5. Stringhe e numeri 2

Attento a quello che vedi!

Prova a stampare questa stringa con print, cosa sembra?

5. Stringhe e numeri 3

Conversioni - da stringa a numero

  • Come sommare '254' e 3?
  • Converti la stringa ad intero con la funzione int

5. Stringhe e numeri 4

Conversioni - da stringa a numero

  • NOTA: le stringhe e i numeri sono immutabili
  • Scrivendo int('254') viene generato un nuovo numero

5. Stringhe e numeri 5

Esercizio

  • Prova a convertire una stringa che rappresenta un numero malformato (per es. un numero con dentro un carattere: '43K12') in un int.
  • Che succede?

5. Stringhe e numeri 6

Conversioni - da numero a stringa

  • Qualsiasi oggetto può essere convertito a stringa usando str

5. Stringhe e numeri 7

Conversioni - da numero a stringa

  • Come concatenare oggetti di tipo diverso?
  • Si può usare str
  • DOMANDA: Dopo l'esecuzione del codice nella cella precedente, alla variabile x risulterà associato un numero o una stringa?

6. Formattazione 1

Modi per formattare stringhe

6. Formattazione 2

Formattare con %

  • place-holder (segnaposto) %s
  • viene sostituito
  • variabile dopo il %

6. Formattazione 3

Formattare con %

  • Per più variabili...
  • ... più segnaposti %s
  • Dopo il %: sequenza variabili in parentesi tonde

6. Formattazione 4

Esercizio - Supercar

Hai ricevuto dei soldi, perciò decidi di comprare due modelli di auto sportive. Visto lo stile di guida scellerato prevedi già incidenti, perciò per ciascun modello comprerai tante auto quanti caratteri ci sono nel nome di ciascun modello.

Scrivi del codice che salva nella stringa s il numero di auto che comprerai.

  • USA il segnaposto %s

Esempio: dati

auto1 = 'Jaguar'
    auto2 = 'Ferrari'

con print(s) il tuo codice dovrebbe mostrare:

'Comprerò 6 Jaguar e 7 Ferrari perchè tengo i dindi'