Download Laboratorio di Python - Struttura di una funzione, Input da tastiera

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Laboratorio di Python
Struttura di una funzione, Input da tastiera, Iterazione
incondizionata
7 marzo 2014
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sommario
1
Programmare in Python
Struttura di una funzione
2
Comando di richiesta Input
Sintassi ed Esempi
3
Iterazione incondizionata
Sintassi ed Esempi
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Outline
1
Programmare in Python
Struttura di una funzione
2
Comando di richiesta Input
Sintassi ed Esempi
3
Iterazione incondizionata
Sintassi ed Esempi
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Definizione di funzione
import modulo→ Si importa il modulo specificato
def nome_f(par1 , · · · , parn ) : →Si definiscono nome e parametri di f
#commento →Si inserisce un commento
Codice →Blocco delle istruzioni
return ris, ris2, ecc... →Si definiscono i risultati di f
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Import Modulo
Comando per richiamare funzioni implementate in un programma già
salvato. Esempi di moduli sono:
math:
sono implementate funzioni matematiche ad esempio: sin(x),
cos(x), sqrt(x) ecc· · ·
sono definite le costanti e, pi rispettivamente il numero di Nepero e
π
string:
sono implementate alcune funzioni sulle stringhe come ad
esempio: find(mela, a)
Per usare in un programma una o più funzioni appartenenti a un
modulo:
importare il modulo prima del suo utilizzo es: import math
richiamare la funzione coi valori di input in riferimento al modulo es.
math.sin(90)
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Codice
Si inseriscono i comandi che implementano l’algoritmo risolutivo della
nostra funzione.
Avremo una sequenza ordinata di passi che ci permette di giungere
al risultato atteso, partendo dai dati di input.
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Operazioni boolean
Rappresentazioni:
M=True N = False
Operazioni:
M and N→ prodotto tra boolean
M or N →somma tra boolean
not M → nega il valore di M
X>Y → confronto tra X e Y (possono essere di qualsiasi tipo non
necessariamente omogeneo) restituisce True se X>Y; False
altrimenti
X==Y → confronto tra X e Y (possono essere di qualsiasi tipo
non necessariamente omogeneo) restituisce True se sono uguali
(e hanno lo stesso tipo); False altrimenti
X!=Y; X<>Y → confronto tra X e Y (possono essere di qualsiasi
tipo non necessariamente omogeneo) restituisce True se sono
diversi (anche solo se differiscono del tipo); False altrimenti
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Type None
Rappresentazione:
M= None; l’insieme dei valori appartenenti a questo tipo è il solo
elemento None. Si dice insieme singoletto.
Operazioni:
M is None → confronta se M sia esattamente None
M is not None → confronta se M sia diverso da None
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Esempi
1
Definire una funzione equazione_primo_gra che prenda come
argomento i valori a, b, che rappresentano i coefficienti
dell’equazione di primo grado ax + b = 0 e restituisca il valore di
x
2
Definire una funzione radice_quadrata_diff che prenda due valori
come parametri, ne calcoli la differenza, la stampi a video ed
infine restituisca la radice quadrata della differenza
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Esempio 1
def equazione_primo_gra(a, b) : →definisco il nome della mia
funzione
#la mia funzione calcola il valore
dell’equazione ax+b=0
if a! = 0 :→se a è diverso da zero
x = −b/a →assegno a p il valore del perimetro del quadrato
elif a == 0 and b! = 0 : →se a è zero e b non è zero
x =00 impossibile00 →assegnamo a x la stringa impossibile
else: →altrimenti
x =00 indeterminata00 →assegnamo a x la stringa indeterminata
return x →restituisco il valore della variabile p
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Salvare e interpretare il file
salvare con nome il file nella directory python
aprire il menù run e selezionare Run Module
accedere a python_shell per poter richiamare la mia funzione:
es. equazione_primo_gra(2,6) → -3
provare a richiamare la mia funzione dopo l’assegnazione di
valori a variabili es:
x= 20, y=0
equazione_primo_gra(x,y) → impossibile
provare ad assegnare a una variabile il valore di ritorno della mia
funzione es:
y=equazione_primo_gra(-1,3) → il sistema non visualizza il
risultato perchè è stato assegnato alla variabile y
print (y) → -3
provare a fare entrambe le operazioni es:
x=0, y=0
z=equazione_primo_gra(x,y)
print (z) → indeterminato
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Esempio 2
import math → importo il modulo math
def radice_quadrata_diff(a, b) : →definisco il nome della
funzione
#la mia funzione calcola la radice quadrata
della differenza di due valori
p = a − b →assegno a p il valore della differenza di a e b
print(p) →stampo la differenza a video
if p >= 0 : →verifico che sia maggiore o uguale a zero la
differenza
r = math.sqrt(p) →richiamo sqrt da math e assegno a r l’output
else: →altrimenti
r =00 impossibile00 → impossibile calcolare la radice quadrata
nel campo dei num reali
return r →restituisco il valore di r
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Esercizio
Verificare la funzione radice_quadrata_diff con i seguenti input.
x=3 y=5;
c=300, b=220
(20,30); (16,9); (x,y); (c,b)
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Esercizio
Definire una funzione che risolva l’equazione di secondo grado
ax 2 + bx + c = 0
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Esempio sbagliato
import math
def equazione_sec_grado(a,b,c):
if a==0:
x1= -c/b
return x1
else:
delta=b**2-4*a*c
radice_delta=math.sqrt(delta)
x1=(-b-radice_delta)/(2*a)
x2=(-b+radice_delta)/(2*a)
return x1, x2
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Perché la condizione
Data la funzione che risolve ax 2 + bx + c = 0 cosa accade
quando la richiamate con a, b, c = 0?
Possiamo evitare questo errore? Come?
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Debugging
È quel processo nella produzione del software che ha come obiettivo
l’eliminazione degli errori sintattici e semantici. Durante questo
processo è necessario provare (testare) il programma che si è scritto
più volte. Per ogni tipo di errore vediamo la sua correzione:
sintassi → utilizzando gli errori dell’interprete o del compilatore
correggere il codice
semantica → effettuare diversi test, per capire se l’algoritmo è
corretto
run-time → prevedere e gestire gli errori che possono verificarsi
run-time per evitare l’interruzione anomala del programma
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Esempio sbagliato 2
import math
def equazione_sec_grado(a,b,c):
if a==0 and b==0 and c==0:
return "indeterminata"
elif a==0:
x1= -c/b
return x1
delta=b**2-4*a*c
else:
radice_delta=math.sqrt(delta)
x1=(-b-radice_delta)/(2*a)
x2=(-b+radice_delta)/(2*a)
return x1, x2
Ora è corretto il programma?
proviamo ad eseguire questo comando:
equazione_sec_grado(2,3,2)
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Esercizio
1
Correggere il codice in modo tale che non restituisca più nessun
errore usando il comando elif, e facendo restituire alla funzione
sempre una coppia di valori.
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Struttura di una funzione
Esempio Corretto solo con Elif
import math
def equazione_sec_grado(a,b,c):
if a==0 and b==0 and c==0:
return 'indeterminata', None
elif a==0 and b==0:
return 'impossibile', None
elif a==0:
return -c/b, None
else:
delta=b**2-4*a*c
if delta<0:
return 'impossibile', None
else:
x1= (-b+math.sqrt(delta))/(2*a)
x2= (-b-math.sqrt(delta))/(2*a)
return x1, x2
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Outline
1
Programmare in Python
Struttura di una funzione
2
Comando di richiesta Input
Sintassi ed Esempi
3
Iterazione incondizionata
Sintassi ed Esempi
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Input da tastiera Sintassi
<var> = raw_input('stringa descrittiva')
#esisteva nella versione 2.*
<var>= input('stringa descrittiva')
#esiste anche nella versione 3.*
var: indica il nome della variabile a cui si assegna il valore di
input digitato da tastiera
raw_input(): era il comando che richiedeva in input la stringa di
caratteri.
input(): è una funzione prende in input la stringa di caratteri, o
un tipo di dato (tuple, list, int) specificato. es: int(input(’stringa
descrittiva’))
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Esempi
import equazione_sec_grado
def prova_input():
print('**programma che risolve l'equazione ax^2+bx+c=0 **\n')
a= float(input("scrivi il valore di a \n"))
b=float(input("scrivi il valore di b \n"))
c=float(input("scrivi il valore di c \n"))
return equazione_sec_grado.equazione_sec_grado(a,b,c)
Proviamo questo programma
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Input e Output vs parametri della funzione
Quali differenze ci sono tra il comando input, e la definizione di
una funzione che prenda dei parametri di ingresso.
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Outline
1
Programmare in Python
Struttura di una funzione
2
Comando di richiesta Input
Sintassi ed Esempi
3
Iterazione incondizionata
Sintassi ed Esempi
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Iterazione Sintassi
for <var> in <sequence>:
<istruzioni_for>
var: indica il nome della variabile che assume ad ogni ciclo, in
sequenza tutti i valori presenti in <tuple> e per ognuno di questi
valori sono eseguite le <istruzioni_for>.
sequence: è un gruppo di tipi di dato in python.
istruzioni_for: sono l’insieme di istruzioni che vengono eseguite
per tutti i valori presenti nella tupla
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Tipo Sequenza
Immutabili che non possono essere modificate una volta create
stringhe (str ’ ’): tipo stringa di caratteri
tuple (tuple ( )): tipo tupla, un insieme di valori
range: un iteratore
Mutabili che possono essere modificate una volta create
Liste (List[ ]): una lista di valori di qualsiasi tipo
Tipo Dizionario (dict{ }): tipo di dato hash
···
Per approfondire: http://docs.python.org/3.2/library/stdtypes.html
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Esempi
1
Scrivere una funzione che data stringa passata come parametro
mi stampi tutti i caratteri diversi da a, b e c
2
Scrivere una funzione che data un stringa in input mi sostituisca i
caratteri a, b e c in A, B, C
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Primo esempio
Prima soluzione
def stampanoabc1(s):
for i in s:
if(i!='a' and i!='b' and i!='c'):
print i
Corrisponde direttamente al testo dell’esercizio.
E se volevamo escludere un numero di caratteri maggiore?
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Primo esempio
Seconda soluzione
def stampanoabc2(s):
for i in s:
if(i<'a' or i>'c'):
print i
Notare che i caratteri da filtrare sono consecutivi.
Basta prendere solo quelli prima o dopo di quest’intervallo.
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Secondo esempio
def stampanoabc3():
s=input('scrivi la stringa a cui eliminare a,b,c \n')
for i in s:
if i=='a':
print('A')
elif i=='b':
print('B')
elif i=='c':
print ('C')
else:
print(i)
Richiedo in input una stringa
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Esercizi
Definire una funzione che prenda come parametri due numeri
rappresentanti la lunghezza di due cateti e restituisca la
lunghezza dell’ipotenusa
Definire una funzione che prenda come parametri due valori a, b
ne stampi il valore a video, infine restituisca il valore di b a cui è
stato sommato il quadrato di a.
Definire una funzione che prenda come parametri due valori
qualsiasi e restituisca il valore True se sono uguali e False se
sono diversi
Definire una funzione che prenda come parametri tre valori
a, b, c e restituisca il vaore True se è possibile formare un
triangolo con questi tre valori e False in caso contrario
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Esercizi a casa
1
2
3
4
5
6
7
Scrivere una funzione che presi come parametri due numeri
restituisca il valre true se il primo è divisore del secondo e false
altrimenti
Scrivere una funzione che presi come parametri due numeri
stampi maggiore se il primo è maggiore del secondo; minore se
il primo è minore del secondo; uguale se sono uguali.
Scrivere una funzione che stampi a video le vocali della stringa
passata come parametro.
Scrivere una funzione che richiesta una stringa in input la salvi in
un’altra variabile al contrario, infine restituisca la variabile
contente la stringa al contrario come output della funzione.
Scrivere una funzione che preso come parametro una stringa
restituisca True se èpalindroma, False altrimenti
Scrivere una funzione che sostituisca a una stringa richiesta in
input tutte le occorrenze di un carattere passato come
parametro, con un altro carattere passato come parametro.
Inviate gli esercizi svolti a: [email protected]
Laboratorio di Python
Programmare in Python
Comando di richiesta Input
Iterazione incondizionata
Sintassi ed Esempi
Cosa abbiamo fatto?
1
Programmare in Python
Struttura di una funzione
2
Comando di richiesta Input
Sintassi ed Esempi
3
Iterazione incondizionata
Sintassi ed Esempi
Laboratorio di Python