vuoi
o PayPal
tutte le volte che vuoi
Il testo si rappresenta come una sequenza di caratteri che è chiamata stringa (tipo dato: str).
La sequenza di caratteri deve essere racchiusa tra apici singoli ' ' o tra doppi apici " "
>>> saluto = "ciao"
Si può indicare una stringa vuota non includendo nulla tra gli apici.
>>> stringa_vuota = ""
Possiamo accedere a porzioni di una stringa:
• Usando l'indice della posizione tra quadre: [i] (indici negativi per contare dalla fine, partendo da 0
se si conta dall’inizio)
• Due indici separati da : per lo slicing, cioè prendere i caratteri da i (compreso) a j (escluso): [i:j]
La lunghezza di una stringa è fornita dalla funzione len().
È possibile svolgere le seguenti operazioni tra stringhe:
• Concatenazione: + oppure ()
• Ripetizione: *
+ e * sono operatori overloaded; eseguono cioè operazioni differenti a seconda del tipo degli
operandi.
Tipo di dato
È possibile conoscere il tipo di dato di un valore o di una variabile utilizzando la funzione:
type(valore o variabile)
Ad ogni tipo di dato corrisponde una funzione (con lo stesso nome del tipo) che (se possibile)
“forza” un dato ad essere di quel tipo.
Possiamo "forzare" un numero a stringa usando str(). Possiamo "forzare" una stringa a numero con
int() o float() (se quella stringa è un numero!).
Operatori Booleani
Le variabili che rappresentano valori Booleani sono di tipo bool.
Un bool ha solamente due valori:
• True (vero)
• False (falso)
Esistono 3 operatori per i bool (in ordine di precedenza):
• not: operatore unario, not x è True se e solo se x è False
• and: binario, x and y è True se e solo se x = y = True
• or: binario, x or y è False se e solo se x = y = False
Operatori relazionali
Anche le stringhe possono essere confrontate: cifre < maiuscole < minuscole
Operatori di appartenenza
L'operatore in permette di testare l'appartenenza di un valore ad una “sequenza” (termine
volutamente generico); cioè cercare un valore all’interno di una sequenza.
Si può usare not in se si vuole testare la non appartenenza: x not in seq è equivalente a not x in seq.
Input
Esistono più funzioni per ottenere l’input inserito dall'utente e memorizzarlo all’interno di una
variabile:
- input() che memorizza, senza valutarlo, quanto inserito dall’utente in una variabile Python.
- eval(input()) che valuta quanto inserito dall’utente e lo memorizza in una variabile Python (lo
vedremo più avanti).
If, elif, else
Il costrutto if permette di prendere decisioni, secondo la seguente sintassi:
if condizione:
istruzioni
Le istruzioni, indentate di 4 spazi, sono eseguite solo se il valore della condizione è True. (scivendo
i ":” dopo l’if (et simili) in python viene indentato da solo, però occhio)
else permette di definire le istruzioni da eseguire se la condizione dell'if è False (o le
condizioni dell’if e degli elif sono False).
Sintassi:
if condizione:
istruzioni1
else: istruzioni2
elif permette di esprimere un numero arbitrario di condizioni alternative.
Sintassi:
if condizione1:
istruzioni1
elif condizione2:
istruzioni2
elif condizione3:
istruzioni3
else: istruzioni4
Liste
Una lista contiene un elenco di valori (gli elementi della lista) separati dalla virgola e racchiusi tra
parentesi quadre. Le liste possono contenere elementi di diversi tipi, ma di solito gli elementi hanno
tutti lo stesso tipo. Sono mutabili (a differenza delle stringhe)
Per leggere una lista passata in input si usa: lista = eval(input())
E da input si specificano gli elementi della lista separati dalla virgola e racchiusi tra parentesi
quadre: [1, 3, 5, 7, 9]
È possibile accedere a porzioni della lista nello stesso modo delle stringhe (tramite l’indice
dell’elemento o tramite lo slicing con due indici separati da :).
La lunghezza di una lista, cioè il numero dei suoi elementi, è fornita dalla funzione len().
Le liste supportano anche la concatenazione. È possibile testare l'appartenenza di un elemento alla
lista tramite l’operatore in.
È possibile annidare le liste (creare liste contenenti altre liste)
>>> lettere = ['a', 'b', 'c']
>>> numeri = [1, 2, 3]
>>> lista = [lettere, numeri]
>>> lista
[['a', 'b', 'c'], [1, 2, 3]]
Le liste prevedono altri metodi:
• append(x): inserisce un nuovo elemento x alla fine della lista
• insert(i, x): inserisce ad una data posizione i un nuovo elemento x
• index(x): restituisce la posizione in cui compare un dato elemento x
• pop(i): rimuove l’ultimo elemento della lista o quello alla posizione i specificata
• remove(x): rimuove un dato elemento x dalla lista
• reverse(): restituisce gli elementi in ordine opposto
• sort(): restituisce gli elementi in ordine sequenziale
Nota: è anche possibile utilizzare la funzione del()per cancellare uno o più elementi o l’intera lista.
Range
La funzione range consente di creare una lista composta da dei numeri interi consecutivi.
La funzione range prevede due argomenti e restituisce una lista che contiene tutti gli interi a partire
dal primo (incluso) fino al secondo (escluso).
Se il primo argomento non viene specificato la lista partirà dal numero 0.
Cicli For e While
L’iterazione (o ciclo o loop) è una struttura di controllo che permette di eseguire
ripetutamente una sequenza di istruzioni fino al determinarsi di particolari
condizioni:
- for: itera un certo numero di volte in base agli elementi di una lista
es: Data una lista di numeri interi, trova il numero maggiore e il minore. Se la lista è vuota il risultato deve
essere 0 per entrambi.
lista = eval(input("Inserisci una lista: "))
max=lista[0]
min=lista[0]
for x in lista:
if x>max:
max = x
if x<min:
min = x
print("Il minimo è", min, "il massimo è", max)
- while: itera finché una certa condizione è vera
es: Scrivere un programma che stampi il numero di cifre decimali di un numero intero positivo specificato in
input
numero = int(input())
count = 0
while numero>=1:
numero = numero / 10
count = count + 1
print(count)
Funzioni
Una funzione è un blocco organizzato di codice che viene utilizzato per eseguire un preciso task
(una sorta di mini-programma).
L’utilizzo di funzioni garantisce maggiore modularità al codice ed un maggior riuso dello stesso.
Python dispone di funzioni built-in, come: print(), input(), len(), range(), … ma è anche possibile
definire nuove funzioni (user-defined-functions).
Sintassi: def nomefunzione (parametro1, …): # definizione
blocco istruzioni # corpo istruzioni
Esempio: Scrivere una funzione "saluta" che prenda come parametro una stringa rappresentante un nome e
visualizzi sullo schermo la scritta: "Ciao" ed il nome passato alla funzione
def saluta(nome): # Definizione
print ("Ciao", nome) # Corpo funzione
saluta(‘Valerio’) # Chiamata della funzione
Il codice della funzione viene eseguito ogni volta che la funzione viene richiamata (e non al
momento della definizione della funzione). Quando il programma richiama la funzione vengono
eseguite le istruzioni della funzione e, una volta terminate, l’esecuzione torna al programma
principale che continua con il resto delle istruzioni. La funzione interagisce con il resto del
programma unicamente attraverso i suoi parametri (input alla funzione) ed il valore di ritorno
(output della funzione).
È possibile passare ad una funzione dei valori tramite degli argomenti che vengono specificati tra le
parentesi tonde dopo il nome della funzione. Un parametro è la variabile al cui interno viene
memorizzato il valore dell’argomento passato alla funzione. Il valore memorizzato in un parametro
viene "dimenticato" quando la funzione finisce la sua esecuzione.
La keyword return permette di specificare dei valori o un’espressione di ritorno (return value) di
una funzione al programma chiamante. Quando, durante l’esecuzione della funzione, viene
incontrata l’istruzione return, la funzione termina ed il valore di ritorno è quello della variabile o
dell’espressione che segue la keyword return.
In Python è possibile specificare più parametri di ritorno; questo è particolarmente utile nel caso di
tipi immutabili.
Due possibilità per terminare una funzione:
return #procedura
return espressione/valore #funzione
Es: Data una lista di numeri interi come parametro, trova il numero maggiore e il minore. Se la lista è vuota il
risultato deve essere 0 per entrambi.
def min_max(lista):
if len(lista) = = 0:
max = 0
min = 0
else: max = lista[0]
min = lista[0]
for x in lista:
if x > max:
max = x
if x < min:
min = x
print("Il minimo è", min, " e il massimo è", max)
Sequenze
Le sequenze (sequences) sono quei tipi di dato che permettono l’iterazione sui suoi elementi. I
seguenti tipi di dato sono delle sequenze:
- str: "stringa testuale"
- list: [1, 2, 3] ["abc", "def", "ghi"]
- tuple: (1, 2, 3) ("abc", "def", "ghi")
Tutte le sequenze supportano, accesso agli elementi con l’indice e lo slicing, l’iterazione dei loro
elementi nei cicli for, la funzione len(), gli operatori in e not in.
Tuple e Dizionari
Una tupla (tipo tuple) è una sequenza immutabile (una versione immutabile delle liste).
L'immutabilità delle tuple significa che né gli elementi né la lunghezza possono essere cambiati.
È utile per “impacchettare” una sequenza di valori di lunghezza fissata e i cui elementi non devono
essere modificati.
Può essere creata elencando i valori separati da virgole, solitamente tra parentesi () (le parentesi
sono opzionali). Una tupla di lunghezza 1 si indica con (valore,) (notare la virgola!).
Le tuple, essendo sequenze, condividono molte delle operazioni delle liste:
• Accesso agli elementi con indice o slicing
• Lunghezza tramite len()
• Concatenazione con + e ripetizione con *
• Iterazione con for
• Gli operatori in e not in
>>> tupla_vuota = ()
>>> tupla1 = (3,)
>>> tupla2 = (4,1)
>>> tupla3 = (4,5,1)
>>> list(tupla3)
[4, 5, 1]
>>> tupla3[0]
4
&g