Accademia:Funzioni
Da Guide@Debianizzati.Org.
| Attenzione Questo articolo è ancora incompleto o richiede delle verifiche. Sentiti libero di contribuire cliccando sul tasto "Modifica". |
Definire una funzione
Vediamo ora, come possiamo creare una nostra funzione.
Per prima cosa diamo una letta alla [bibbia].
#! /usr/bin/env python3.1
def stampa(): # definisco la funzione
""" questa funzione non ha parametri e non fa altro che stampare un messaggio """
print(" Ti parlo dall'interno della funzione! ")
stampa() # chiamo (invoco) la funzione
Output
- Ti parlo dall'interno della funzione!
#! /usr/bin/env python3.1
def stampa(a):
""" stampa il parametro passatole """
print(" Mi hai passato : {}".format(a))
stampa("parametro")
- Mi hai passato : parametro
Funzioni più complesse
separa.py
#! /usr/bin/env python3.1
# passo un numero qualsiasi di parametri, definendo un separatore
def separa(*args,sep=' '):
return sep.join(args)
print( separa('we','ciao','come','stai','?') )
- we ciao come stai ?
reg.py
#! /usr/bin/env python3.1
"""When a final formal parameter of the form **name is present, it receives a dictionary (see Mapping Types — dict)
containing all keyword arguments except for those corresponding to a formal parameter. This may be combined with
a formal parameter of the form *name (described in the next subsection) which receives a tuple containing
the positional arguments beyond the formal parameter list. (*name must occur before **name.)
For example, if we define a function like this: """
def reg(tipo,*nomi,**campi):
print("\n\n Hai scelto una registrazione di tipo: {0}".format(tipo)) # primo parametro
print(" Parametri : ",end=' ')
for i in nomi:
print(i, end=', ') # stampa la tupla di parametri nomi
print("\n {0} \n\t Dati utente: ".format("-"*30) )
k = sorted(campi.keys()) # ordina le chiavi per nome
for kw in k: # e stampale a fianco dei loro valori
print("{0} : {1}".format(kw,campi[kw]))
reg('hosting', 'www.python.com', '1 year', user='Alessandro', email='tuxerrante@boh.it', pas='1234')
reg('Fast Food','Il re dei paninazzi','pranzo',name='Gino',surname='Score',time='6 months')
- Output
Hai scelto una registrazione di tipo: hosting Parametri : www.python.com, 1 year, ------------------------------ Dati utente: email : tuxerrante@boh.it pas : 1234 user : Alessandro Hai scelto una registrazione di tipo: Fast Food Parametri : Il re dei paninazzi, pranzo, ------------------------------ Dati utente: name : Gino surname : Score time : 6 months
check.py
#! /usr/bin/env python3.1
""" gestione parametri preassegnati """
print()
def checkOk (prompt, tent=3, msg="Yes o No per favore!"):
while True:
ok = input (prompt)
# x in s : True if an item of s is equal to x, else False
if ok.lower() in ('y','yes'): # se la risposta, trasformata in minuscolo, è tra 'y' o 'yes'
return True # restituisce vero
elif ok.lower() in ('n','no'):
return False
# risposta sbagliata
print(msg)
tent-=1
if tent<=0:
raise IOError (' impara a usare una tastiera!!')
checkOk(" Rispondi con un 'yes' o un 'no' : ")
- Out
Rispondi con un 'yes' o un 'no' : B
Yes o No per favore!
Rispondi con un 'yes' o un 'no' : Z
Yes o No per favore!
Rispondi con un 'yes' o un 'no' : U
Yes o No per favore!
Traceback (most recent call last):
File "fib.py", line 57, in <module>
checkOk(" Rispondi con un 'yes' o un 'no' : ")
File "fib.py", line 55, in checkOk
raise IOError (' impara a usare una tastiera!!')
IOError: impara a usare una tastiera!!
Rispondi con un 'yes' o un 'no' : Y ------------------ (program exited with code: 0) Press return to continue