Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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