Operatori
Slide adattate da softpython
Clicca qui per la versione stampabile
Premi esc per l'overview generale
1. Operatori 1
Operatore | Uso | Risultato | Significato |
---|---|---|---|
len | len(str) | int | Ritorna la lunghezza della stringa |
concatenazione | str + str | str | Concatena due stringhe |
inclusione | str in str | bool | Controlla se la stringa è presente in un'altra stringa |
indice | str[int] | str | Legge il carattere all'indice specificato |
slice | str[int:int] | str | Estrae una sotto-stringa |
uguaglianza | ==,!= | bool | Controlla se due stringhe sono uguali o differenti |
replicazione | str * int | str | Replica la stringa |
2. Caratteri 1
2. Caratteri 2
2. Caratteri 3
2. Caratteri 4
2. Caratteri 5
Data una qualsiasi stringa x, eseguendo
x[0]
otterremmo:
2. Caratteri 6
Data una qualsiasi stringa x, eseguendo
x[len(x)]
otterremmo:
2. Caratteri 7
Date due stringhe che hanno entrambe lunghezza 3, stampa una
stringa che intercala caratteri da entrambe le stringhe.
Il tuo codice deve poter funzionare con qualsiasi stringa di questa lunghezza
Esempio: dati
x="say"
y="hi!"
dovrebbe stampare
shaiy!
3. Indici Negativi 1
3. Indici Negativi 2
3. Indici Negativi 3
Data una stringa x NON vuota, eseguendo
x[-len(x)]
otterremmo:
3. Indici Negativi 4
Data una qualsiasi stringa x, le espressioni
x[len(x) - 1]
x[-len(x) - 1]
sono equivalenti? Cosa fanno?
3. Indici Negativi 5
Data una stringa x NON vuota, cosa produce la seguente espressione?
Possiamo semplificarla?
(x + x)[len(x)]
3. Indici Negativi 6
Data una stringa x NON vuota, cosa produce la seguente espressione? Un errore? Altro?
Possiamo semplificarla?
'ciao'[0][0]
3. Indici Negativi 7
Data una stringa x NON vuota, cosa produce la seguente espressione? Un errore? Altro?
Possiamo semplificarla?
(x[0])[0]
4. Sostituire caratteri 1
4. Sostituire caratteri 2
Soluzione corretta:
x = "ciao"
y = x
x = y[0] + y[1] + 'b' + y[3]
5. Slice 1
Scrivendo "mercantile"[3:8]
5. Slice 2
Se x è una stringa qualsiasi di lunghezza almeno 5, cosa fa questo codice?
Dà errore? Funziona? Possiamo abbreviarlo?
x[3:4]
5. Slice 3
Scrivi del codice per estrarre e stampare alam dalla stringa "garalampog". Prova a indovinare correttamente gli indici.
5. Slice 4
Scrivi del codice per estrarre e stampare kS dalla stringa "ifE\te\nfav lkD lkWe"
Fai attenzione agli spazi e caratteri speciali (prima potresti voler stampare x)
Prova a indovinare gli indici corretti
5. Slice 5
5. Slice 6
Se x è una stringa qualsiasi (anche vuota), questa espressione cosa fa? Può dare errore? O ritorna qualcosa di utile?
x[0:len(x)]
5. Slice 7
5. Slice 8
Scrivi del codice che data una stringa x ne produce un altra così:
Esempio: dato x = "mistero" deve stampare isteromister
Esempio: dato x = "corale" deve stampare oralecoral
5. Slice 9
E' anche possibile impostare limiti negativi
Vediamo cosa succede con indici negativi
5. Slice 10
Data una stringa x, scrivi del codice per estrarre e stampare i suoi ultimi 3 caratteri e unirli ai primi 3.
Esempio: dato x = "javarnanda" deve stampare javnda
Esempio: dato x = "bang" deve stampare banang
5. Slice 11
5. Slice 12
5. Slice 13
Scrivere del codice per cui data una stringa s
s = "la corsa all'oro è iniziata."
e delle variabili
cosa = "atomo"
verbo = "finita"
sostituisce la sottostringa in corrispondenza di "oro" con la stringa presente nella variabile cosa e sostituisce la sottostringa in corrispondenza di "iniziata" con la stringa presente nella variabile verbo.
Dopo l'esecuzione del tuo codice, print(s) dovrà stampare:
la corsa all'atomo è finita
6. Operatore in 1
6. Operatore in 2
NON abusare dell'operatore in
6. Operatore in 3
Ti vengono date due stringhe x e y, e una terza z.
Scrivi del codice che stampa True se x e y sono entrambe contenute in z.
Esempio 1: date
x = 'cad'
y = 'ra'
z = 'abracadabra'
dovrebbe stampare True
Esempio 2: date
x = 'zam'
y = 'ra'
z = 'abracadabra'
dovrebbe stampare False
6. Operatore in 5
Date tre stringhe x, y, z, scrivi del codice che:
Esempio 1: dati
x = 'tti'
y = 'patti chiari amicizia lunga'
z = 'tutto chiaro?'
dovrebbe stampare True
Esempio 2: dati
x = 'zio'
y = 'patti chiari amicizia lunga'
z = 'tutto chiaro?'
dovrebbe stampare False
Esempio 3: dati
x = 'chiaro'
y = 'patti chiari amicizia lunga'
z = 'tutto chiaro?'
dovrebbe stampare True
7. Comparazioni 1
7. Comparazioni 2
7. Comparazioni 3
Cosa stampa il codice seguente?
Esegui per verificare!
7. Comparazioni 4
Per ciascuna delle espressioni seguenti, prova a indovinare se produce True o False
Procedi per vedere i risultati
Espressione | Risultato |
---|---|
'cappello' != 'Cappello' | True |
'cappello' == 'CAPPELLO' | False |
'pensieroso'[4:8] == 'forestiero'[6:] | True |
'CoStOsO'[4:] == 'oSo' | False |
'chiaro'[9:20] == 'scuro'[10:15] | True |
'ramarro'[-1] == 'giglio'[-1] | True |
('cappello' != 'giacca') == ('pantaloni' != 'cravatta') | True |
('stra' in 'stradivarius') == ('div' in 'divano') | True |
7. Comparazioni 5
Per ciascuna delle espressioni seguenti, prova a indovinare se produce True o False
Procedi per vedere i risultati
Espressione | Risultato |
---|---|
len('nota') in '5436' | ERROR |
str(len('nota')) in '5436' | True |
len('cartellone') in '5436' | ERROR |
str(len('cartellone')) in '5436' | False |
7. Comparazioni 6
Scrivi del codice che stampa True se una parola inizia con le stesse due lettere con cui finisce
7. Comparazioni 7
7. Comparazioni 8
7. Comparazioni 9
Usando le funzioni di cui abbiamo parlato, prova a trovare quali caratteri sono tra la Z maiuscola e la a minuscola
7. Comparazioni 10
NOTA: l'ordine ci permette di eseguire comparazioni lessicografiche tra caratteri singoli!
7. Comparazioni 11
Scrivi del codice che
Domanda: il tuo codice funzionerebbe anche con caratteri accentati capitalizzati come 'Á'?
Nota: gli insiemi di caratteri possibili sono parecchi, perciò la soluzione appropriata sarebbe usare il metodo isupper che vedremo prossimamente
7. Comparazioni 12
7. Comparazioni 13
7. Comparazioni 14
Stringhe con stessa lunghezza
Stringhe con lunghezza diversa
7. Comparazioni 15
Ti vengono fornite due coppie di stringhe i1 e i2 da due caratteri ciascuna
Supponi che rappresentino intervalli di caratteri: il primo carattere di un intervallo ha sempre un numero d’ordine inferiore o uguale al secondo.
Ci sono 5 possibilità: il primo intervallo 'è contenuto in','contiene', 'si sovrappone parzialmente a', 'è prima', oppure 'è dopo' il secondo intervallo.
Scrivi del codice che dice quale relazione di contenimento abbiamo
Esempio 1: dati
i1 = 'gm'
i2 = 'cp'
il tuo programma dovrebbe stampare gm è contenuto in cp
Per vedere perché, guarda questa rappresentazione (non è necessario stamparla!)
c g m p
abcdefghijklmnopqrstuvwxyz
7. Comparazioni 16
Esempio 2: dati
i1 = 'mr'
i2 = 'pt'
il tuo programma dovrebbe stampare mr si sovrappone parzialmente a pt
perchè mr non è contenuto né contiene né completamente precede né completamente segue pt
m p r t
abcdefghijklmnopqrstuvwxyz
'g' >= 'c' and 'm' <= 'p' and 'è contenuto in'
produce come risultato la stringa 'è contenuto in'
7. Comparazioni 17
7. Comparazioni 18
Nello studio dell’algoritmista Encodicus è presente uno scaffale diviso in 26 sezioni ordinate alfabeticamente, ove custodisce gelosamente i suoi preziosi testi alchemici. Ciascuna sezione può contenere al massimo 9 libri.
Un giorno, Encodicus decide di acquistare un nuovo tomo da aggiungere alla sua collezione: scrivi del codice che data una stringa rappresentante lo scaffale con i conteggi dei libri e un nuovo libro, trovi la giusta posizione del libro e aggiorni scaffale di conseguenza
7. Comparazioni 19
Esempio: dati
scaffale = "|a 7|b 5|c 5|d 8|e 2|f 0|g 4|h 8|i 7|j 1|k 6|l 0|m 5|n 0|o 3|p 7|q 2|r 2|s 4|t 6|u 1|v 3|w 3|x 5|y 7|z 6|"
libro = "ciclare all'aperto"
dopo il tuo codice scaffale deve risultare aggiornato con |c6|
|a 7|b 5|c 6|d 8|e 2|f 0|g 4|h 8|i 7|j 1|k 6|l 0|m 5|n 0|o 3|p 7|q 2|r 2|s 4|t 6|u 1|v 3|w 3|x 5|y 7|z 6|
8. Replicazione 1
8. Replicazione 2
Data una sillaba e una frase che termina con una carattere n come cifra, scrivi del codice che stampa una stringa con la sillaba ripetuta n volte, separate da spazi
Esempio: date
frase = 'Il numero 7'
sillaba = 'za'
il tuo codice deve stampare
za za za za za za za