Scarica Funzioni chiave Python - Bocconi e più Appunti in PDF di Informatica Industriale solo su Docsity!
PYTHON
GUARDARE ANCHE SLIDE 9 ( per multiple choise) SHELL: dove si scrivono ed eseguono le singole istruzioni EDITOR: scrivere programmi più lunghi
- File
- New file OPERAZIONI MATEMATICHE PEMDAS: Parentesi, Elevamento a potenza, Moltiplicazione, Divisione, Addizione, Sottrazione Python:
- utilizza il sistema americano (, per le migliaia e. per i decimali)
- utilizza colori diversi per le diverse funzioni (viola: funz. Built-in; verde: stringhe; blu: output; rosso:errori)
- se scrivo una funzione built-in si apre la sintassi
- stringhe racchiuse o “” o ‘’. (se voglio mettere le “” in una frase devo utilizzare ‘’ per la frase e “” per il testo tra virgolette oppure viceversa. print(“Matteo dice ‘ciao’”)
- mi permette di concatenare stringhe
- *numero, ripete la stringhe n volte FUNZIONI BUILT-IN Funzioni predefinite disponibili nell’ambiente Pyhton SINTASSI Nome (argom1, argom2,…) FUNZIONE HELP
Visualizzo le informazioni su una funzione, dato, modulo
help (…) FUNZIONE PRINT Riporta i valori scritti tra parentesi Sep =separatore; se lascio invariato usa lo spazio, se no scelgo io print(1,2,3, sep= ‘*’) LIBREARIA STANDARD Sono istallate con Python ma non sempre disponibili (risparmiare memoria) Per importarle:
- import math
- nome funzione.funzione specifica (math.sqrt(16) radice quadrata) N.B. se non importo mi da errore CODICI ESCAPE Danno comandi specifici a Python \n serve per mandare a capo \t serve per aggiungere una tabulazione X es. (print('uno\ndue\ntre')) COMMENTARE IL CODICE Serve per sapere cosa si è fatto in quel punto 2 tipi:
- inserisco delle stringhe all’inizio ‘‘‘ questo è il mio programma’’’
- accanto alle singole righe #ciao VARIABILI Ci rappresenta un “pezzo” di memoria dove vado a scrivere un singolo valore Inizializzazione di una variabile, uso = (cognome = ‘Rossi’) Nomi di variabili:
- brevi e significativi
- iniziare con una lettera o _
- non può contenere spazi/caratteri speciali
- non può contenere le keyword di python (scritte in arancione)
- preferibile non usare caratteri accentati N.B
- Python è case-sentitive (distingue maiuscolo e minuscole)
- Posso riassegnare i valori
- posso aggiornare le variabili (a=1; a=a+1=2) – Tipizzazione dinamica
- posso fare un assegnazione multipla (a,b,c= 1,2,3) TYPE Mi restituisce a quale tipo di dato appartiene un valore type(1) <class ‘int’>
- Deve essere in formato phyton
- Per aprirlo tasto dx
- Edit with IDLE
- Una volta aperto: run – run module STRUTTURA L’ordine in cui vengono eseguite le istruzioni di un programma dipende dallo schema logico definito, chiamato struttura:
- Sin qui abbiamo utilizzato solo la struttura sequenziale, ovvero un insieme di istruzioni che vengono eseguite nell’ordine in cui compaiono
- Talvolta è necessario utilizzare una struttura decisionale, in cui si esegue una determinata azione solo al verificarsi di condizioni specifiche (stessa logica del SE in Excel)
- In questo caso potremo specificare una o più istruzioni che vengano eseguite nel caso in cui una condizione sia vera (e altre nel caso in cui sia falsa) Vi sono diversi tipi di strutture decisionali:
- Struttura decisionale semplice (o esecuzione condizionale o ad alternativa singola)
- Esecuzione alternativa (o ad alternativa doppia)
- Condizioni in serie Le strutture decisionali vengono implementate nel codice per mezzo di istruzioni condizionali ISTRUZIONE IF If condizone: istruzione istruzione ecc. [altre linee di codice] N.B non uso le parentesi quadre ma lo spazio. Se la condizione è falsa, il blocco di istruzioni viene saltato e il programma prosegue. N.B gli operatori di confronto non li uso solo per i numeri ma anche stringhe, variabili o funzioni.
ISTRUZIONE IF-ELSE
Permette di scrivere una struttura decisionale ad alternativa doppia che prevede due possibili percorsi di esecuzioni a seconda che la condizione sia vera o falsa. If se positivo Else se negativo CONDIZIONI NIDIFICATE Inserisco più condizioni per situazioni più complesse. Per verificare due condizioni (con tre possibili uscite), la sintassi prevede due clausole if e due clausole else: N.B. se si hanno condizioni nidificate complesse: ISTRUZIONI IF-ELIF OPERATORI LOGICI Chiamati anche operatori booleani, consentono di creare espressioni booleane complesse, aumentando le potenzialità dei costrutti condizionali:
Le funzioni possono svolgere compiti di qualsiasi tipo: eseguire un calcolo, svolgere un’azione, creare un oggetto, aggiornare valori ecc. Oltre a svolgere calcoli o compiere azioni, le funzioni sono importanti perché favoriscono la creazione di un programma modulare. FUNZIONI PERSONALIZZATE Ha due componenti:
- Intestazione: def nome_funzione (parametri: possono essere obbligatori o opzionali) :
- Corpo: contiene le istruzioni; può terminare con l’istruzione return Chiamare una funzione: per eseguire una funzione è necessario scriverla. Parametri obbligatori: scrivo semplicemente la stringa Parametri opzionali: scrivo parametro=valore_predefinito Chiamare un parametro: è necessario specificare gli argomenti per posizione (nello stesso ordine in cui sono stati definiti i parametri), oppure utilizzare il nome assegnato (argomenti denominati) FUNZIONE VOID E PRODUTTIVE Void: quando la chiamata della funzione non restituisce nulla. Rimane in memoria la funzione Produttive: quando si ha un ritorno. Rimane in memoria funzione e valore di ritorno Variabile globale : può essere raggiunta da qualsiasi istruzione di un programma Variabile locale : è accessibile solo all’interno del suo ambito (scope), cioè nella parte del programma in cui è stata definita, come per esempio una funzione. N.B. È locale una variabile definita all’INTERNO di una funzione. Globale se è definita FUORI. STRINGA DI DOCUMENTAZIONE Quando si crea una funzione è possibile inserire qualche riga di spiegazione o commento definendo una stringa di documentazione ( docstring ). Si scrive con i 3 apici ECCEZIONI Un’eccezione (exception) è un evento scatenato da un errore di varia natura
- Se prevediamo che si possa verificare un'eccezione, in Python è possibile scrivere del codice per gestirla (exception handling)
- Quando un’eccezione non è gestita (unhandled exception) causa un errore e l’uscita dal blocco di istruzioni in cui si verifica o dal programma
ERRORI
3 categorie:
- Sintassi: errore nella scrittura del codice (SyntaxErroor)
- Runtime: c’è un errore nel codice, anche se la sintassi è corretta
- Semantici: avvengono quando il programma viene eseguito senza produrre messaggi di errore, ma i risultati non sono quelli corretti (sono incoerenti o imprevisti) Per risolvere gli errori effettuo il debugging. TRY … EXCEPT Specifica come devono essere prevenuti gli errori. SEQUENZE Oggetti che contengono diversi dati, memorizzati uno dopo l’altro. Esistono diversi tipi, tra cui le stringhe, le liste, e le tuple. Anche se hanno caratteristiche diverse, le sequenze:
- sono iterabili
- possono essere mutabili o immutabili
- la posizione di ciascun valore è identificata da un numero (indice)
- utilizzano numerose funzioni, metodi e operazioni che consentono di accedere e lavorare sui dati Sequenze:
- Immutabile: Stringhe e Tuple
- Mutabili: Liste Stringhe : Una stringa è una sequenza di caratteri che può contenere caratteri alfanumerici e simboli. Le stringhe sono immutabili, quindi non è possibile modificare una stringa esistente: l’unica possibilità è quella di creare una nuova stringa, variante dell’originale. (Bisogna sovrascrivere) Liste : Una lista è una raccolta di dati (detti elementi) di qualsiasi tipo, racchiusi tra parentesi quadre e separati da virgole: [19, 30, 24, 28] ['Bocconi', 'IULM', 'Bicocca’] [156, 'Via Roma', 'Milano’, 3318488888, 15.36] Le liste possono essere assegnate a variabili : voti = [19, 30, 24, 28] Una lista priva di elementi è chiamata lista vuota : [ ]
SLICING
Un segmento o porzione di sequenza è chiamato slice. Lo slicing consente di selezionare più di un elemento di una sequenza utilizzandola sintassi: sequenza [indice_iniziale:indice_finale:step] L'operazione restituisce tutti gli elementi della sequenza tra quello con indice_iniziale (compreso) e quello con indice_finale (escluso). Step è opzionale e indica quali indici successivi selezionare dopo il primo. Quando indice_iniziale è omesso lo slicing seleziona gli elementi a partire dal primo; quando indice_finale è omesso lo slicing seleziona gli elementi fino all’ultimo. Omettendo entrambi viene selezionata l’intera sequenza METODI Stringhe, liste e tuple hanno delle funzioni speciali, chiamate metodi La sintassi delle funzioni prevede che la sequenza o il nome della variabile in cui è memorizzata sia uno degli argomenti della funzione. La sintassi dei metodi prevede che sia sempre specificato anche il nome della sequenza, utilizzando la seguente sintassi: oggetto.metodo(argomenti)
Metodi delle tuple : I metodi delle tuple sono pochi perché le tuple sono immutabili. Spesso è utile convertire la tupla in una lista, lavorare sugli elementi della lista e convertire nuovamente in una tupla I DIZIONARI In Python un dizionario è un oggetto che contiene una collezione di dati o elementi Gli elementi sono composti da due parti : una chiave e un valore. Le chiavi sono univoche e possono essere qualsiasi tipo di dato immutabile. I valori possono essere qualsiasi tipo di dato mutabile o immutabile Per creare un dizionario è necessario scrivere tra parentesi graffe { } gli elementi separati da virgole (,). Ogni elemento è costituito da una chiave seguita da due punti (:) e da un valore In alternativa è possibile utilizzare la funzione dict , che crea un nuovo dizionario privo di elementi I dizionari sono oggetti mutabili Gli elementi di un dizionario non sono memorizzati in un ordine particolare, non è quindi possibile utilizzare l’indicizzazione come nelle sequenze
- Per estrarre un valore da un dizionario si utilizza la chiave associata al valore: nome_dizionario[chiave]
- Per aggiungere coppie chiave-valore: nome_dizionario[chiave] = valore Operazioni con i dizionari: in permette di verificare la presenza di una chiave (Restituisce True/False) del rimuove una coppia chiave-valore da un dizionario len restituisce il numero di coppie chiave-valore
ATTRIBUTI E METODI
Una classe è definita da un nome e da un insieme di attributi e metodi
- Gli attributi sono le caratteristiche della classe: I metodi sono le «azioni» che gli oggetti di una classe possono compiere: CREARE CLASSI Per creare una classe è necessario assegnarle un nome e definirne i suoi attributi e/o metodi
- Tutte le istanze di una classe ereditano attributi e metodi della classe a cui appartengono
- Gli attributi ereditati dalle singole istanze possono essere assegnati in fase di creazione dell’istanza e/o modificati in un secondo momento. Attributi : Consentono di personalizzare i singoli oggetti della classe (i.e. le istanze)
- Possono essere tipi built-in di Python (es.: int, float, list) o altri oggetti
- Si possono definire direttamente nella classe (con una semplice assegnazione, come mostrato qui sotto), ma sono solitamente definiti con uno speciale metodo definito metodo costruttore
METODO COSTRUTTORE INIT
È il metodo che Python cerca nella classe quando deve inizializzare lo stato di un oggetto
- Può includere la definizione degli attributi e di qualsiasi altra caratteristica e opzione necessaria agli oggetti della classe, come: chiamata di funzioni, apertura di file, accesso ai database ecc.
- La sintassi segue le stesse regole utilizzate durante la definizione di una funzione, con i parametri (obbligatori o opzionali) che vengono utilizzati per inizializzare gli attributi, specificati tra parentesi
- Deve essere presente almeno un parametro, convenzionalmente denominato self, che rappresenta il riferimento al nome dell'istanza che verrà creata N.B parametro self obbligatorio Interagire con gli attributi degli oggetti Per accedere a uno specifico oggetto bisogna utilizzare il nome della relativa istanza. METODI Non sono variabili/oggetti che contengono un valore, bensì procedure che eseguono istruzioni
- Possono restituire un valore attraverso l’utilizzo dell’istruzione return
- Hanno almeno un parametro: self
- Vengono invocati con la stessa notazione degli attributi:
Metodi di lettura È possibile leggere il contenuto del file, interamente o riga per riga:
- Il metodo read legge il contenuto dell’intero file
- I metodi readline e readlines leggono il contenuto riga per riga MODULI Qualunque linguaggio di programmazione può essere arricchito da estensioni per svolgere funzionalità aggiuntive o specifiche
- In Python, le funzionalità aggiuntive vengono fornite tramite i moduli: si tratta di file che fungono da contenitori, raggruppando le funzionalità per tema
- Alcuni sono presenti nella installazione di base di Python, e ne conosciamo già alcuni esempi: math, random
- I moduli possono essere organizzati in librerie o «package»
- I moduli installati di default con Python costituiscono la libreria standard di Python
- Esistono anche moltissimi moduli personalizzati per gli scopi più disparati Modulo os: Si tratta di un modulo che permette a Python di interagire con il Sistema Operativo, particolarmente utile per ispezionare e manipolare file e cartelle Modulo random: Permette di generare numeri casuali, con una serie di funzioni utili: random.random() Restituisce un numero casuale decimale tra 0 e 1 (1 escluso) random.randint(min, max) Restituisce un intero casuale tra min e max (estremi compresi) random.choice([list]) Restituisce un elemento casuale da una lista random.randrange(min,max,step) Restituisce un intero casuale tra min e max (max escluso) con passo pari a step Modulo webbrowser: Permette di aprire un URL nel browser. Comando rilevante: webbrowser.open(URL) Richiede al browser aprire l’URL Modulo openpyxl: permette di lavorare con Excel
MODULI PERSONALIZZATI: Moduli specialistici, particolarmente innovativi o destinati ad audience di nicchia, devono essere installati da ciascun utente.