Il 0% ha trovato utile questo documento (0 voti)
0 visualizzazioni

Web Data Science

Il documento tratta della data science, evidenziando il ruolo del data scientist e il processo che segue per analizzare e interpretare i dati. Viene anche spiegata la differenza tra web e internet, le tecnologie di comunicazione, e l'importanza delle decisioni basate sui dati (DDD) con esempi pratici. Infine, si discute del web scraping e della programmazione, introducendo concetti fondamentali come algoritmi e linguaggi di programmazione.
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
0 visualizzazioni

Web Data Science

Il documento tratta della data science, evidenziando il ruolo del data scientist e il processo che segue per analizzare e interpretare i dati. Viene anche spiegata la differenza tra web e internet, le tecnologie di comunicazione, e l'importanza delle decisioni basate sui dati (DDD) con esempi pratici. Infine, si discute del web scraping e della programmazione, introducendo concetti fondamentali come algoritmi e linguaggi di programmazione.
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 34

Web data

science
Data science = disciplina che si occupa dell'estrazione di significato da grandi
quantità di dati ed è il punto di intersezione di diverse discipline:

Registrazione e processo dei


Visualizzazione dati
dati - memorizzati nei database

Estrarre info
contenute nei dati

Riconoscimento
dei percorsi

Prendere dati e applicare


algoritmi per fare
Conteggi dei dati
previsioni

La figura del Data scientist nasce nel 2008 per opera di Patill e Hammerbacher, e nel
2012 viene riconosciuto da un articolo di Harvard come il lavoro del futuro. Nel 2015
Obama riconosce ufficialmente il ruolo del data scientist.

Il data scientist è una figura professionale che deve avere forte capacità di analisi e
solide competenze informatiche. Usa i dati per individuare i pattern e sfrutta
competenze statistiche e matematiche.
Deve perciò raccogliere i dati, organizzarli e controllarne le fonti. Successivamente deve
unire i dati in maniera funzionale, tali da fornire informazioni utili alle diverse aree di
business. É una figura ponte tra il mondo IT e LOB (line of business), ma può essere
fondamentale anche nell’area R&S.
Processo di un data scientist

Fase 1 - definizione obiettivo


Va a capire qual è il problema da affrontare stabilendo gli obiettivi, i benefici per
l'organizzazione, i dati e le risorse richieste

Fase 2 - raccolta dati


Si raccolgono prima i dati interni all'azienda e poi quelli di sorgenti esterne (Twitter, FB)
I dati raccolti vanno messi in un set up dell'infrastruttura di memorizzazione (server, cloud)
I dati salvati devono essere coerenti con quelli delle fonti originali

Fase 3 - preparazione dati


Rendere fruibili i dati con data cleansing, data transformation e data combination

Rimozione typos Riduzione numero Marge/join dataste


Valori mancanti variabili Creazione viste
Errori di codifica Aggregazione

Fase 4 - esplorazione dati


Comprendere i dati e trovare correlazioni
Trovare il modo di graficare i dati (tecniche di clustering e di costruzione di modelli)
In questa fase si trovano le anomalie

Fase 5 - modellazione
Costruire modelli per fare predizioni, classificare oggetti o comprendere
aspetti del sistema usando machine learning, data mining e statistica
3 fasi: scelta tecnica di moderazione e variabili, esecuzione modello e diagnosi.

Fase 6 - presentazione e automazione


Presentare e comunicare i dati dell'analisi tramite report, presentazioni, grafici,
dashboard, ecc. A livello opzionale vi è la realizzazione di un modulo software
indipendente riutilizzabile per analisi future.
Web = Il web è un universo ricco di informazioni
che siano a lungo elaborate affinché siano informative

Documenti multilingue (Wikipedia) possono servire per sviluppare traduttori automatici


Informazioni di profili pubblici (LinkedIn) usati nel campo delle risorse umane

Telecomunicazione = ogni processo che fa arrivare ad 1 o più corrispondenti delle


informazioni utilizzando un sistema di comunicazione
Rete di telecomunicazioni = insieme di dispositivi e i coro collegamenti che consentono la
trasmissione di informazioni attraverso cavi, sistemi radio o
altri sistemi elettromagnetici e ottici
Reti di calcolatori = insiemi di calcolatori autonomi (computer) reciprocamente collegati
mediante una rete di telecomunicazioni

Il web non è internet - è la killer application di internet (ciò che l'ha reso famoso)
Internet (interconnected network) = rete di telecomunicazione
Web = servizio di internet come www, email, servizi di messaggistica e quelli di streaming

Origini di Internet
Nasce negli USA durante la guerra fredda per garantire le comunicazioni anche in
seguito ad un attacco missilistico russo.
1958 nasce l'ARPA (advanced research projects agency) per la ricerca e sviluppo di
tecnologie emergenti. Nasce poi l’ARPANET (precursore di internet).
Rete ufficializzata nel 1972 durante la prima international computer communication
conference a Washington. Una delle prime applicazione è l'e-mail e viene sviluppata
la tecnica a commutazione di pacchetto per trasportare dati di reti.
Reti a commutazione
Commutazione = capacità di una rete di costruire, mantenere e abbattere un
collegamento tra i dispositivi che la compongono (nodi)

Nodi intermedi coinvolti in una trasmissione per commettere sorgente e destinazione


Ogni nodo commuta (switch) i dati - riceve e trasmette al nodo successivo

Commutazione di circuito (vecchie linee telefoniche)


Canale temporaneo dove ogni nodo trasmette (instrada) i dati nei canali output
Reale connessione fisica tra i due estremi comunicanti
3 fasi: apertura connessione, trasferimento dati e chiusura connessione
L'uso del canale è esclusivo e continuo - altro emittente deve aspettare che il primo finisca

Commutazione di pacchetto
Suddividere le informazioni da trasmettere in piccole entità - pacchetti
Pacchetti contengono i dati da trasmetterà e le informazioni di controllo
Pacchetti spediti uno alla volta e i nodi li divido e li spediscono
Una volta arrivati i pacchetti si riassembla il messaggio e si può leggere
Ogni pacchetto può seguire un percorso diverso e indipendente e arrivare al destinatario
(anche non in ordine)
Non si sanno i tempi di ricezione perché non è detto che il primo pacchetto faccia
la strada più corta e che arrivi in ordine

Nascita di internet
Fine anni 80 quando vengono unite ARPANET e NSFNET
LAN = loca area network
WAN = wide area network
IP = protocollo di comunicazione internet (insieme di regole)
Internet protocol (IP)
Regola l'instradamento (routing) attraverso i vari nodi della rete dei pacchetti IP
che compongono il messaggio

IPv4 Indicano tutti i dispositivi connessi ad internet con delle successioni


IPv6 di 4 o 6 numeri (tra 0 e 225)

L'indirizzo IP può essere:


Dinamico - cambia ogni volta che ci si connette ad internet (cell, portatili)
Statico - non cambia (server web dei siti)

World wide web (www)


Nel 1989 si cerco un modo per la diffusione rapida di articoli, appunti, ecc.
Iperteso - corpo di materiale interconnesso -> base del www
1991 - primo prototipo del www
+ tecnologie per creare documenti ipertestuali, metterli a disposizione sul web,
identificarli con un identificativo, richiederli con un protocollo di comunicazione e
visualizzarli su un computer.

Hypertext transfert protocol (HTTP)


Protocollo di comunicazione basato su richiesta-risposta
Client = fa la richiesta
Server = risponde alla richiesta
Messaggio di richiesta
Messaggio di risposta (positivo/negativo)
Uniform resource locator (URL)
È l'esatto indirizzo associato ad una risorsa
Rappresenta un indirizzo della pagina web a cuì il link punta
Ognuno degli hyper link è riferito ad una specifica URL

<schema>://<host>[/<percorso>]

Protocollo di Nome del server web Percorso / sequenza dei


comunicazione (http, ecc) locali da percorrere per
arrivare a quello di interesse

Metodi HTTP
Get = richiedere informazioni sulla risorsa definita dall'URL
Put = creare sul server web la risorsa specificata dall'URL (upload risorsa online)
Delete = rimuovere dal server le info relative alla risorsa
Post = info aggiuntive ad una risorsa esistente (nome utente e pssw)

Tutte le risposte oltre che a contenere i metadati nell'header e a volte dati nel payload
specificano anche un codice di stato dell' header 3 cifre, la prima (0-5) definisce la
classe di risposta: informativa, successo, redirezione, errore del client o errore del server
Browser
Applicazione software che permette di accedere e ottenere info presenti sul web
Microsoft edge, safari e google chrome sono esempi

Permette di specificare un URL in un apposito campo della sua interfaccia


A seconda della risorsa permette di visualizzarla o salvarla sul computer (es. PDF)

Server web
È un "computer speciale" che esegue un software specifico
Permette di ricevere, gestire e soddisfare richieste HTTP provenienti da un client
Quando il server riceve la richiesta cerca localmente informazioni del doc indicate nel
percorso di richiesta, se le trova fai una copia altrimenti associa il codice di errore
(404 error)

Domain name system (DNS)


Sistema usato per passare da indirizzi numerici (IP) a nomi facilmente memorizzabili
= Risoluzione di un nome o di un indirizzo web
In internet ci sono diversi server DNS il cui ruolo è di restituire il corretto indirizzo
IP per un certo nome

Nodi di internet
Ogni nodo è un dispositivo specifico
+ un computer speciale fondamentale per il funzionamento della rete: router

Router
Dispositivo per l'instradamento dei pacchetti IP
Router di casa = permette al nostro computer di connettersi ad internet
Router di collegamento tra sottoreti
Agiscono al livello di rete veicolando il traffico dei pacchetti IP
Quando il router riceve un pacchetto IP controlla qual é il nodo successivo
Un router non entra mai nel merito del payload del pacchetto ip perché per svolgere
la sua funzione sono sufficienti le informazioni nell'header
Data-driver decision-making (DDD)
Esempio - uragano Frances
HURRICANE FRANCES was on its way, barreling across the Caribbean, threatening a
direct hit on Florida's Atlantic coast. Residents made for higher ground, but far away, in
Bentonville, Ark., executives at Wal-Mart Stores decided that the situation offered a
great opportunity for one of their newest data-driven weapons, something that the
company calls predictive technology. A week ahead of the storm's landfall, Linda M.
Dillman, Wal- Mart's chief information officer, pressed her staff to come up with
forecasts based on what had happened when Hurricane Charley struck several
weeks earlier. Backed by the trillions of bytes' worth of shopper history that is
stored in Wal-Mart's computer network, she felt that the company could "start
predicting what's going to happen, instead of waiting for it to happen",
as she put it.

Un'analisi guidata è utile per:


imparare dai dati - esaminare i dati di wal-mart su precedenti situazioni simili per
identificare variazioni nella domanda dei clienti per prodotti specifici
predire cosa succederà - anticipare la domanda e rifornire i negozi prima dell'uragano
prendere decisioni - massimizzare vendite e raggiungere gli obiettivi d'impresa

La DDD è una pratica che consiste nel basare le decisioni sull'analisi di dati e non
sull'intuizione
Analisi predittive dei dati - azienda prevede quanto produrre
Data science - automatizzazione del DDD

Indicatore del DDD - valuta le imprese in base a quanto vengano usati i dati per decidere
Lo studio dimostra che l'uso dei dati aumenta la produzione e la produttività del 4-6%
Indicatore DDD correla positivamente con i principali indicatori di performance aziendali
Esempio - target e neogenitori
I neogenitori sono importanti per Target in quanto acquistano prodotti costosi in
grande quantità e fidelizzarli significa acquisire come cliente un’intera famiglia

1 - definizione obiettivo
Individuare i neogenitori il prima possibile - anticipare la concorrenza
Inviare offerte personalizzate

2 - raccolta dati
Consultare registro nascite per trovare i contatti

3 - preparazione dati
Data cleansing - valori mancanti
Data combination - fondere righe estratte dai registri con i dati nel database

4 - esplorazione dati
Predire chi è incinta guardando dati storici perché si cambia le abitudini, vestiti, ecc.
I

Assemblati in modelli predittivi che identificano in maniera automatica un insieme


particolare di indicatori correlati ad un fattore d'interesse
Recuperare dati dal web
Download diretto - gratuito o a pagamento
Interrogazione di un servizio web - machine to machine
Web scraping - estrarre i dati do pagine web con strumenti di sviluppo in modo autonomo

Web scraping
Costruzione di un agente software per scaricare processare e organizzare i dati di
pagine web tramite processi automatizzati
l
Web crawling - analisi contenuti di rete da parte di un bot

Sitemap - identifica il progetto quindi ha nome e URL


Selettori - servono a scegliere da quali elementi raccogliere i dati

Link selector - link da seguire


Text selector - elementi che interessano

Selector graph - verificare


la correttezza della struttura
dello scraper
Espressioni regolari - specificare come è fatto il testo che si sta ricercando
Ricerca esito positivo = match con l'espressione (solo il primo)
Ricerca esito negativo = nessun match / match vuoto

Stringa - sequenza di caratteri con un ordine prestabilito


Espressione regolare - stringa composta da caratteri e metacaratteri
Metacaratteri - caratteri speciali interpretati in modo non letterale

Questa operazione fa eseguire un’interpretazione


alternativa del carattere che lo segue e si chiama
escaping.
Il backslash è quindi detto carattere di escape delle
espressioni regolari.
Element selector
Permette di selezionare i contenitori che raccolgono le info di ogni elemento e di
aggiungere sotto-selettori per estrarre i dati
Si possono ridurre il numero di click che lo sapaper deve fare

Element scroll down selector


Estensione che permette di fare scroll della pagina più volte finché non sono stati
caricati tutti gli elementi

Pagine con navigazione


Link di paginazione - numeri di pagine
Navigazione Ajax - linguaggi Javascript per avere l'aggiornamento dinamico di una
pagina senza esplicito caricamento

Element click selector


Gestire siti sviluppati con Ajax
Simula i click per caricare nuovi elementi e aggiornare la pagina

Limiti web scraper


Difficile scaricare file
Poco flessibile - non si possono impostare comportamenti diversi a
seconda delle condizioni
Non è in grado di estrarre dati da tutti i siti web (es. No Amazon)

Web scraper più sofisticati


Strumenti a pagamento (webstorm)
Strumenti (framework e librerie) che facilitano la programmazione di web scraper
Introduzione alla programmazione
Area della campana?
Scomporre il problema in sottoproblemi
ASC Tor Semicerchio
2

Composizione dei 3
=

AR 61 41 Rettangolo
2
= :

= risultato
AT (b1 b2) h2 Trapezio
= + ·
AC ASC + ARtAT
=

Algoritmo - sequenza finita di istruzioni


Comprensibili da un esecutore
Descrive come risolvere un problema

Effettività - istruzioni chiare ed univoche


Finitezza - conclusione in tempo finito
Osservabili - deve produrre un risultato osservabile
Riproducibilità - stesso input deve produrre stesso output

Correttezza - risolvere correttamente il problema


Efficienza - risolvere con la minima quantità di risorse
Linguaggio
Basso livello - utilizzati agli albori dell'informatica (linguaggio macchina)
Alto livello - utilizzati dal programmatore per scrivere i programmi

Istruzioni complesse e flessibili Comandi primitivi


Leggibile per un programmatore Estremamente efficienti
Non direttamente comprensibile per il calcolatore Difficili da usare
Necessario prima tradurli in linguaggio
macchina o farli interpretare

Google Colab
Piattaforma di programmazione gratuita che permette di eseguire codice Python
direttamente sul cloud sfruttando delle macchine virtuali fornite da Google

Ogni progetto viene chiamato notebook


Impostazioni ed informazioni (memoria e spazio disco)
Celle di testo con spiegazioni, appunti, ecc.
Celle di codice in cui scrivere ed eseguire i programmi
Area laterale espandibile con funzioni varie (indice, elenco file, ecc)

Un programma è una sequenza di istruzioni scritte in un linguaggio che specifica i


passi da seguire per risolvere un problema (matematico, grafico, testuale (ecc.)
Input - istruzioni per ottenere dati di ingresso da un dispositivo
Output - istruzioni per mostrare dati in uscita
Istruzioni condizionali - verificano lo stato del programma ed eseguono il codice associato
Istruzioni di ripetizione (cicliche) - svolgere ripetutamente alcune azioni

Programmi sono parametrici:


Descrivono i passi necessari a risolvere una classe di problemi equivalenti
A seconda dei dati di partenza otteniamo risultati diversi

Per descrivere in modo generale il problema, le istruzioni fanno riferimento a variabili il


cui valore non è fisso, ma cambia a seconda dello stato del programma
Variabili per contenere i dati di partenza
Variabili per memorizzare i risultati intermedi
Variabili per salvare il risultato finale

Una variabile è un nome (identificatore) che si riferisce ad un valore


Se non si sa come è memorizzata e interpretata dal programma una variabile
(o un risultato) è possibile stamparne il tipo col comando "type"
Stampa del risultato <class 'int'>
Classe = classe/categoria - il tipo di dato è interpretato come una categoria di valori

L'operazione di base che riguarda le variabili è l'assegnamento (nome = valore)


Nuova variabile - si crea nuovo nome associato al valore a destra dell'uguale
Variabile esistente - il nuovo valore si sostituisce a quello vecchio
Nomi e valori esistono nel "tempo di vita" del programma poi vengono distrutte

Un'espressione è una combinazione di valori variabili ed operatori


Operatori aritmetici Operazioni tra stringhe (concatenazione)
3+2 "Ciao" + "mamma"
x-5
(x + y) * 6 Le espressioni possono
14 / 3 essere usate come parte
x ** 2 (equivale a x^2) destra di un assegnamento
x % 2 (resto della divisione intera)
Stampare il valore delle variabili
L'istruzione di stampa scrive una lista di espressioni a schermo
Stampa di una stringa: print ("Hello World!")
Stampa valore variabile: print (a)
Stampa più valori in sequenza: print ("siamo", 2, "amici")
Stampa testo su più righe: print (“””Sempre caro mi fu quest’ermo colle”””)
Triple (“””) virgolette per stampare su più righe

Quando un programma cresce di dimensione diventa difficile da capire


vengono quindi usate delle note per spiegare le parti più complesse
Queste note si chiamano commenti e si inseriscono col simbolo #
Tutto quello che c'è dopo il simbolo fino alla fine della riga viene ignorato
dall'interprete e non ha effetto sull'esecuzione del programma
Inserire pochi commenti, solo quelli considerati realmente utili
Supponete che chi legge sia un minimo competente
Spiegate piuttosto perché avete fatto qualcosa

Gli spazi bianchi non sono significativi (non vengono considerati), eccetto
quelli all'inizio delle righe che sono invece rilevanti
Le righe vuote vengono ignorate dall'interprete
Python
Funzione input
1. scrive testo sullo schermo (come print)
2. rimane in attesa di un input dall’utente
3. dopo che l’utente ha scritto l’input e premuto invio (o enter):
il valore inserito viene interpretato come una stringa
tale valore viene assegnato alla variabile variabile

Conversione
un valore in un numero intero si usa la funzione int (es. da stringa o numero con la virgola)
un valore di tipo numerico in stringa si usa la funzione str (es. interi o numeri reali)
una stringa o un numero intero in un numero con la virgola si usa la funzione float

Espressioni booleane
Possono assumere valori true e false
Gli operatori relazionali restituiscono valori booleani:
x == y vero se il valore di x è uguale al valore di y
x ! = yvero se il valore di x è diverso dal valore di y
x < y vero se il valore di x è strettamente minore del valore di y
x < = y vero se il valore di x è minore o uguale al valore di y
x > y vero se il valore di x è strettamente maggiore del valore di y
x > = y vero se il valore di x è maggiore o uguale al valore di y
Gli operatori relazionali possono essere combinati con gli operatori logici
AND, OR e NOT e le parentesi:
e1 and e2 - vera se sia e1 che e2 sono vere
e1 or e2 - vera se e1 è vera oppure e2 è vera
not e3 - vera se e3 è falsa, e falsa se e3 è vera
Esecuzione condizionale
Per implementare algoritmi che svolgono diverse operazioni a seconda dei dati di
ingresso o di operazioni intermedie, abbiamo bisogno di:
Controllare delle condizioni
Cambiare il comportamento del programma
Istruzioni di esecuzione condizionale - if (condizione)

if x > 0: Vera - istruzioni seguenti indentate (spostate


---- print ("x è positivo!") di una tabulazione) vengono eseguite
Falsa - non succede nulla

Indentazione
Inserimento di spazi all'inizio di una riga del codice sorgente
Usata per aiutare a comprendere meglio la struttura logica delle istruzioni
In Python è obbligatoria e deve essere coerente

Esecuzione alternativa “else”


Condizione vera - eseguite istruzioni ramo "if"
Condizione falsa - eseguite istruzioni ramo "else"
Alternative multiple - "elif" viene eseguito un solo ramo

Condizionali annidati
Cicli (o iterazioni)
Operazioni di ripetizione

Ciclo "for"

Funzione "range" - lista da 1 a 10


Ad ogni iterazione n prende un valore diverso
Print eseguito quindi 10 volte

Ciclo "while"
Controlla la condizione (n < 11) se vera o falsa
Se è falsa, esce dal ciclo e prosegue con
l’istruzione successiva
Se è vera si eseguono le istruzioni del corpo
del ciclo e poi si ritorna al punto 1

Cicli a terminazione
il corpo del while deve cambiare il valore di una o più variabili controllate dalla
condizione ad ogni iterazione per fare in modo che la condizione prima o poi diventi
falsa, altrimenti il ciclo diventa infinito e la computazione andrà interrotta manualmente

Contatori Accumulatori
Come la variabile n nei cicli Usati per calcolare totali e somme
Analizzati prima del ciclo Inizializzati a 0 prima del ciclo
Ad ogni iterazione il valore aumenta Ad ogni iterazione il nuovo valore
o diminuisce di un valore fisso si accumula a quelli precedenti
Uscita anticipata dal ciclo
Istruzione "break"

Mettendo True la condizione del ciclo è sempre vera


Quando si inserisce 0, l’istruzione break viene
eseguita ed il ciclo termina

Cicli annidati
Ciclo come istruzione di un altro ciclo

Stampa tutte le coppie i, j che si possono ottenere


quando i e j assumono valori da 1 a 90

Errori
NameError: name 'pint' is not defined
TypeError: unsupported operand type(s) for +: 'int' and 'str'
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("prova")?

Tutti gli errori che non vengono riconosciuti prima di eseguire il programma vengono
detti runtime errors, cioè errori che avvengono a tempo di esecuzione.
Se non vogliamo che il nostro programma termini quando c’è un errore di runtime,
possiamo intercettare e gestire gli errori di esecuzione con “except” o
“except ValueError” per eccezioni di tipo specifico

Ad ogni try deve corrispondere


almeno un ramo catch/except,
altrimenti è un errore di sintassi
Funzioni
Sequenza di istruzioni che svolgono una computazione a cui è associato un nome
L'operazione che dichiara una nuova funzione è detta definizione
Una volta definita, la funzione può essere invocata per nome
Una funzione è utile per operazioni ripetute più volte nel corso del programma

funzione: Nome - "int"


Argomento - ciò che è in ()
int ("42")
Risultato - conversione a numero intero della stringa dell'argomento

Una funzione "prende" o "accetta" un argomento e "restituisce" un risultato


Il risultato viene definito valore di ritorno

Composizione
Applicare il principio "divide et impera" - suddividere il problema in piccoli elementi
e combinarli per avere la soluzione

r = 4.27 L'argomento può essere ogni tipo di espressione


inclusi operatori aritmetici e variabili
area = int(r ** 2 * 3.14)

area = int(r ** 2 * float("3.14")) Anche chiamate a funzioni

Eccezione!
La parte sinistra dell'assegnamento deve essere un nome variabile

minutes = hours * 60 # corretto


·

hours * 60 = minutes # errore!


Definire nuove funzioni

Per richiamarla:
"Menu ()"

Richiamarle all'interno
di altre funzioni:
“def ripeti_menu():
menu()
menu()”

Parametri e argomenti
All'interno delle funzioni gli argomenti vengono assegnati a variabili dette parametri

def saluta (nome): Prende l'argomento e lo assegna al parametro "nome"


print ("Ciao", nome) Quando viene richiamata la funzione stampa
"Ciao" e il nome passato come parametro

La composizione valgono anche per le funzioni eseguite dall'utente

nome = "Giulia" Eseguendo questo codice otterremo la stampa


"Ciao Giuliano"
saluta (nome + "no")

Quando viene creata una variabile all'interno di una funzione - variabile è locale
Lo stesso vale per i parametri - al di fuori della funzione non esistono
Una funzione può avere più di un argomento - separarli con delle virgole

def media(scritto,orale):
print ((scritto + orale) / 2)
Valori di ritorno
La maggior parte delle funzioni di bsae in Python restituiscono un valore di ritorno.
Le funzioni che abbiamo scritto fino ad ora invece non restituiscono valori: fanno
qualcosa, come stampare un messaggio, ma non restituiscono nulla.
Per essere precisi, il valore restituito è None - ‘nessun valore'
Per far ritornare un valore ad una funzione - "return"

def area_cerchio(r): def area_cerchio(r): In questo caso viene


O restituito il valore
return r ** 2 * 3.14 area=r ** 2 * 3.14
della variabile "area"
return area

Dopo aver creato la funzione possiamo richiamarla e comporta

raggio = 5.78
print ("Area semicerchio", area_cerchio(r) / 2)

È anche possibile avere più di un "return", per esempio con i condizionali

def valore_assoluto(x):
if x >= 0:
return x
else:
return -x
print (valore_assoluto(54))
print (valore_assoluto(-9))
Strutture dati - Pandas
Modi in cui possiamo organizzare informazioni e dati (input/output) in modo da
poter accederci in modo efficiente ed efficace
É quindi un contenitore che fornisce metodi specifici per aggiungere e richiedere
pezzi di informazione
Le principali sono:
Liste = sequenza di elementi ordinati e ripetibili che si possono contare
Pile = lista con operazioni da effettuare sugli elementi (aggiunta push e rimozione pop)
Code = lista con operazioni (aggiunta enqueue e rimozione dequeue)
Insiemi = collezione di elementi non ordinati e non ripetibili
Dizionari = collezione non ordinata di elementi definiti da coppie chiave-valore

Liste
Sequenze di valori detti elementi
I valori possono essere di qualsiasi tipo a differenza delle stringhe dove sono solo caratteri

[10, 20, 30, 40] La prima é una lista di interi


La seconda è una lista di stringhe
["Luca","Elisa","Enrico"]
Gli elementi non devono essere
["Marco Rossi",2021,[27,30]] per forza dello stesso tipo
Lista dentro un'altra lista =
Lista annidata
vuota1 = [] Lista senza elementi =
Lista vuota
vuota2 = list()

Gli elementi vengono identificati dalla loro posizione ed iniziano da O e vengono detti indici

studenti = ["Paolo","Marty","Claudio"]

print (studenti[0]) # stampo ‘Paolo’


Le liste sono modificabili

studenti = ["Paolo","Marty","Claudio"]
studenti[1] = "Patty"
print (studenti)

Operatore "in" per verificare che un elemento sia nella lista

a = [1,3,5,7,9,11] Per scorrere una lista si usa il ciclo "for"


if 9 in a:
print ("trovato") for el in a:
print (el)

Per aggiungere un elemento si usa "append"

l = ["a", "b", "c"] Per rimuovere un elemento si usa "pop"


l.append("d")
l = [10, 20, 30, 40] l = [10, 20, 30, 40]
print (l)
l.pop(2) l.remove(30)
print (l) print (l)
S
Dizionari
Collezione di elementi dove ogni elemento é una coppia chiave-valore
Si possono aggiungere e togliere elementi
Le chiavi consentono di accedere ai valori associati
La chiave non è ripetibile

vuoto1 = {}
Dizionario vuoto = senza elementi
vuoto2 = dict()

ita2eng = {}

Aggiunta nuovo elemento ita2eng["ciao"] = "hello"


ita2eng = {"uno": "one",
(Chiave-valore) ita2eng["uno"] = "one"
"due": "two"}
print (ita2eng)

studente = {}
Se la chiave é già presente
studente["nome"] = "Luca"
l'associazione viene aggiornata
studente["cognome"] = "Rossi"
studente["nome"] = "Enrico" Accedere ai valori contenuti nel dizionario
print (studente) print (studente["nome"])

studente = {}
Le chiavi devono essere stringhe studente["nome"] = "Lucia"
I valori possono essere di s tudente["eta"] = 25
qualsiasi tipo studente["voti"] = [28,24]
print (studente)
Operatore "in" per verificare se una chiave è in lista

studente = {"nome": "Chiara Bianchi", "voto": 28}


if "voto" in studente:
print ("Il voto è " + studente["voto"])

Ciclo "for" per attraversare un dizionario (accedere alle associazioni)

for key in studente:


print (key, studente[key])
Possibili esercizi

Condizionali
Determinare se un numero é positivo, negativo o zero

x = int(input("Inserisci un numero: "))


if x > 0:
print("Il numero è positivo")
elif x == 0:
print("Il numero è zero")
else:
print("Il numero è negativo")

Verificare se un numero é pari o dispari

x = int(input("Inserisci un numero: "))


if x % 2 == 0:
print("Il numero è pari")
else:
print("Il numero è dispari")
Operazioni matematiche

Calcolare somma di due numeri

n1 = int(input("Inserisci il primo numero: "))


n2 = int(input("Inserisci il secondo numero: "))
print("La somma è:", n1 + n2)

Convertire ore, minuti e secondi in secondi totali

ore = int(input("Inserisci le ore: "))


minuti = int(input("Inserisci i minuti: "))
secondi = int(input("Inserisci i secondi: "))
tot_secondi = ore * 3600 + minuti * 60 + secondi
print("Secondi totali:", tot_secondi)

Tabellina moltiplicativa

n = int(input("Inserisci un numero: "))


for i in range(1, n + 1):
print(i, "*", n, "=", i * n)
Gestione di input con errori (try/except)

Somma di due numeri con controllo errori

try:
n1 = int(input("Inserisci il primo numero: "))
n2 = int(input("Inserisci il secondo numero: "))
print("La somma è:", n1 + n2)
except ValueError:
print("Errore: Inserisci solo numeri interi!")

Cicli con accumulatore

Calcolare somma dei numeri inseriti fino all'inserimento di zero

somma = 0
while True:
n = int(input("Inserisci un numero (0 per terminare): "))
if n == 0:
break
somma += n
print("La somma totale è:", somma)
Liste o dizionari

Verificare presenza di un elemento

numeri = [1, 2, 3, 4, 5]
n = int(input("Inserisci un numero: "))
if n in numeri:
print("Il numero è nella lista")
else:
print("Il numero non è nella lista")

Traduzione parole con dizionario

ita_eng = {"cane": "dog", "gatto": "cat"}


parola = input("Inserisci una parola: ")
if parola in ita_eng:
print("La traduzione è:", ita_eng[parola])
else:
print("Parola non trovata")
Funzioni

Somma di una lista

def somma_lista(lista):
return sum(lista)
print(somma_lista([1, 2, 3, 4]))

Trova il massimo di una lista

def massimo(lista):
return max(lista)
print(massimo([1, 2, 3, 4]))
Altri esempi

n=4
a=5
for i in range (1,n):
-

print (a- 1)
a=a-1

k = “*”
a=3
while a >= 1:
print (k)
k = k + “*”
a=a-1
print (a)

Scrivere un programma Python che legga 2 numeri e ne stampi la somma


Se i valori non sono numeri (es. "Cinque") il programma avvisa l'errore

try:
n1 = input ("Inserisci il primo numero: ")
n2 = input ("Inserisci il secondo numero: ")
print (int (n1) + int (n2) )
except:
print ("Errore nell'input, controlla.")

Potrebbero piacerti anche