Digitiamo in IDLE:
>>> max(1, 4, 7, 3)
7
>>> min(2, 5, -1)
-1
notiamo che IDLE colora le due parole max
e min
di viola; inoltre appena apriamo
la prima parentesi tonda appare un tooltip: per il momento non siamo in grado di capire cosa significa
quindi ignoriamolo.
Cosa abbiamo fatto? Con la prima linea di codice abbiamo chiesto a Python di trovare il massimo tra i quattro numeri 1, 4, 7, 3 e
Python ci ha risposto che il massimo è 7; analogamente con la terza riga abbiamo trovato il minimo tra tre numeri; max
e
min
sono due funzioni.
Una funzione è una parte di codice che permette di compiere operazioni su dei dati (argomenti) che noi le forniamo. Per chiamare una funzione (Inglese: function call) si usa la seguente sintassi:
nomefunzione ( arg1, arg2, ... )
Ribadiamo per prima cosa che per chiamare una funzione dobbiamo:
max
o min
;)
Possiamo lasciare degli spazi prima e dopo le parentesi e le virgole; la prassi comune, per avere una migliore leggibilità, è di non lasciarne attorno alle parentesi (nè prima nè dopo) e di lasciare uno spazio dopo ogni virgola.
In Matematica sarete probabilmente abituati ad usare funzioni del tipo y = f(x); nei linguaggi di programmazione il concetto di funzione è simile a quello della Matematica (una "macchina" che produce un valore y in base ad un valore di partenza x) ma gode di molta più libertà. Vediamo perchè:
max
e min
) possono averne addirittura un numero variabile (nell'esempio che abbiamo fatto ne
avevamo messi 4 e 3, ma potete provare a metterne quanti ne volete).Per esempio, il type()
visto nella lezione scorsa è proprio una funzione: essa richiede
un argomento (di qualsiasi tipo) e restituisce in uscita il tipo dell'argomento.
>>> type(4.5)
<class 'float'>
Vediamo un altro esempio: la funzione abs()
prende come argomento un numero e restituisce il suo valore
assoluto:
>>> abs(10)
10
>>> abs (-4.543)
4.543
>>> abs("mamma")
Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> abs("mamma") TypeError: bad operand type for abs(): 'str'
>>> abs()
Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> abs() TypeError: abs() takes exactly one argument (0 given)
Esaminiamo i due errori che abbiamo (volutamente!) ottenuto: nel primo abbiamo chiesto a Python di calcolare il valore
assoluto di una stringa: ci ha risposto con un TypeError: "bad operand type" (cioè il tipo dell'argomento
è sbagliato: Python non può calcolare il valore assoluto di una stringa). Nel secondo abbiamo chiamato la funzione senza argomenti:
di nuovo abbiamo un TypeError: Python ci spiega che abs()
prende esattamente un argomento e
noi non gliene abbiamo dato nessuno.
Un'altra importante funzione che useremo spesso in seguito è len()
che ci restituisce la
lunghezza di una stringa:
>>> len("Peppe")
5
>>> len("Supercalifragilisticespiralidoso")
32
>>> len(2)
Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> len(2) TypeError: object of type 'int' has no len()
Gli argomenti di una funzione non devono essere per forza essere costanti, ma possono essere espressioni qualsiasi. Inoltre le funzioni possono essere liberamente usate nelle espressioni: Python chiama la funzione ed usa poi il valore che essa restituisce nell'espressione.
>>> abs(2 + 5 - 10)
3
>>> len("Mamma " + "mia")
9
>>> len("TA") + len("TATA")
6
>>> 3 * abs(-1)
3
>>> max(abs(-10), len("zio"), -2)
10
Quante funzioni ci sono in Python? La risposta è migliaia (ad esempio ci sono tutte le funzioni matematiche, molte funzioni supplementari per le stringhe, ecc.). E' chiaro che per usare una funzione senza commettere errori dovremo "conoscerla", cioè sapere:
Un programmatore esperto conosce moltissime funzioni del linguaggio: è un pò come conoscere il vocabolario di una lingua!
pw
di tipo stringa e scrivete poi un'espressione booleana che restituisca True
se
pw
può essere usata come password.pw2
e scrivete un'espressione booleana che restituisca True
se la concatenazione di pw
e pw2
è lunga esattamente 10 caratteri.t1, t2, t3
assegnando loro la temperatura degli ultimi tre giorni.
Scrivete una funzione che vi dia la temperatura massima.True
se dobbiamo farlo.Fine della lezione