Rudimenti di Python. senza rodimenti di Python



Documenti analoghi
HapPy Python Corso di programmazione in Python Lezione 1. a cura del Neapolis Hacklab

Laboratorio di Informatica

Fondamenti di Programmazione

Alcune regole di base per scrivere un programma in linguaggio C

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Richiesta pagina PHP (es: index.php)

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

ISTRUZIONI VELOCI DI PYTHON Versione (manuale realizzato con Google Documenti)

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Introduzione al Python

PYTHON CHEAT SHEET. Rapido documentazione di consultazione per istruzioni, funzioni e tipi in Python. #stampa le variabili x e y

Le variabili di Visual Basic consentono di memorizzare temporaneamente valori durante

Introduzione alla programmazione in C

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Funzioni in C. Violetta Lonati

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

ASP 3.0 Il Sito Dinamico

Introduzione al MATLAB c Parte 2

Java: Compilatore e Interprete

Concetto di Funzione e Procedura METODI in Java

Arduino: Programmazione

Calcolare il massimo di una lista

Programmazione in Java Parte I: Fondamenti

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

I file di dati. Unità didattica D1 1

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto

Introduzione all' OO in Python

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Linguaggio C. Fondamenti. Struttura di un programma.

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Python. Valerio Perticone

Alfabeto ed elementi lessicali del linguaggio C

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Dispensa YACC: generalità

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

3. La sintassi di Java

Esercizi di JavaScript

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Modellazione dei dati in UML

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Realizzazione di una classe con un associazione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

XML e PHP. Gestire XML con PHP. Appendice

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

LINGUAGGI DI PROGRAMMAZIONE

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag <script> inserito nella sezione <head> con la seguente sintassi:

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

GAUDI SSPC: Tracciato XSD flussi G01-G03 Gestore di rete GAUDI-SSPC GESTIONE FLUSSI G01 G03. Descrizione Tracciati File XSD Terna per Gestore di rete

Introduzione a Dev-C++

Uso delle basi di dati. Informazione e dato. Cos è un database. Tabelle. Esempi di database

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Compilatore risorse display grafico LCD serie IEC-line

Direzione Centrale Entrate Direzione Centrale Sistemi Informativi e Tecnologici. Roma, Messaggio n. 5880

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Abstract Data Type (ADT)

SAP BusinessObjects Versione del documento: Manuale di installazione di Dashboards LiveCycle Data Services Gateway

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

GESTIONE INFORMATICA DEI DATI AZIENDALI

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:


Connessione ad internet

Oggetti Lezione 3. aspetti generali e definizione di classi I

Codifica: dal diagramma a blocchi al linguaggio C++

Il sistema operativo UNIX/Linux. Gli script di shell

Informa(ca Appun% dal laboratorio 2

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Organizzazione degli archivi

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Vettori ed assegnamenti in R

Variabili e tipi di dato

Introduzione al Foglio Elettronico

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

PostV Pos e tv n e d n i d ta t : : altre altr e funzi funz on o i n

Progettazione di Basi di Dati

Archivio CD. Fondamenti di Programmazione

Vettori Algoritmi elementari di ordinamento

Mini-HOWTO sull ordinamento dei dati Release 0.01

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Personalizzazione Stampe

PHP e MySQL. Guida scaricata da

Guida per la gestione del proprio profilo in Scopus utilizzando la piattaforma Scival di Elsevier

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Corso sul linguaggio SQL

Transcript:

Rudimenti di Python senza rodimenti di Python

Contatti _ Enrico Marino _ Federico Spini _ mail: _ (marino spini)@dia.uniroma3.it! _ sito: _ dia.uniroma3.it/~(marino spini)/python!

Eventi _ Possibili date per gli homework di Grafica Computazionale _ venerdì 18 marzo _ venerdì 8 Aprile _ venerdì 6 Maggio _ venerdì 27 Maggio _ venerdì 10 giugno

Riferimenti _ sito ufficiale: http://python.org/ _ tutorial ufficiale: http://docs.python.org/tutorial/ _ documentazione: http://docs.python.org/index.html

Cos'è Python? _ Python è un linguaggio di programmazione ad alto livello _ OpenSource _ licenza PSF, GPL compatibile _ multi paradigma _ imperativo, funzionale, object-oriented _ Caratteristiche principali _ sintassi minimale _ libreria standard vasta e completa _ gestione tipi dinamica e forte _ gestione automatizzata della memoria

Storia _ Concepito nel 1980 da Guido Van Rossum _ nel CWI (istituto di ricerca nazionale olandese) _ come successore del linguaggio ABC _ Nel 1991 viene rilasciato il codice della versione 0.9 _ Nel 1994 viene rilasciata la 1.0 _ Nel 2000 viene rilasciata la 2.0 _ Oggi convivono le versioni 2.7 e 3.2 _ la versione 3.x non è retrocompatibile

Utilizzi _ Web _ Zope application server, YouTube, Google, Bittorrent _ Grafica 3D _ Maya e Blender per gli script di automazione _ Videogame _ giochi OpenSource e commerciali

Caratteristiche principali Sintassi _ Python ha una sintassi minimale _ non si usano simboli per delimitare i blocchi di codice _ non si usa il ';' per delimitare le righe di codice _ non si usano '{' e '}' per delimitare i blocchi di codice _ si usa il # per commentare _ si usano i ':' per indicare l'inizio di un blocco _ i blocchi devono essere indentati # commento! if espressione:!!blocco_if_indentato! else:!!blocco_else_indentato! istruzione_flusso_principale!

Caratteristiche principali Gestione tipi di variabili _ Gestione dinamica _ le variabili possono cambiare tipo durante l'esecuzione _ non viene effettuato alcun controllo statico sul tipo di valore assegnato ad una variabile _ Tipizzazione forte _ Il casting dei tipi deve essere esplicito _ non vengono effettuate conversioni tra tipi _ non si deve dichiarare il tipo delle veriabili # no! str stringa = ciao!! # si! stringa = ciao!

Python Standard Library _ Libreria standard di Python _ contiene moduli delle più svariate funzionalità _ Matematica, RegExp, DataBase, Web, UI,... _ ogni modulo della libreria deve essere compatibile con tutte le piattaforme su cui Python viene eseguito _ include altri moduli specifici per ogni piattaforma specificati nella documentazione

Estensione di Python _ L'architettura di Python è stata pensata per _ permettere una semplice estensione del linguaggio _ E' possibile programmare moduli di Python _ in linguaggio C, C++, Java _ E' possibile programmare parti dell'applicazione _ in un linguaggio più performante come il C _ per ottimizzare le prestazione del software _ E' possibile utilizzare Python in modalità Embedded _ per integrare Python in altre applicazioni _ per aggiungere un motore di scripting interno

"Hello world!"!# il mio primo programma!!# questo è un commento!!print "Hello world!"! _ Per eseguire uno script Python _ chiamare l'interprete seguito dal nome del file!>>> python helloworld.py! _ Per ogni file.py Python crea un file.pyc _ con il codice compilato (o meglio semicompilato) _ per velocizzare il caricamento e l'esecuzione del file _ per evitare la reinterpretazione del codice Python

Tipi di dati _ Built-in object types: _ Numerici _ int, float, long, complex _ Stringhe _ str, unicode _ Booleano _ bool _ Array _ list, tuple, dictionary, set _ Classi _ type

Tipi di dati Numerici _ type int! _ numero intero _ utilizza 4 byte e possiede il segno _ gestisce numeri da -2 miliardi circa a +2 miliardi circa _ corrisponde al long in C o in Java _ type long! _ numero intero con precisione illimitata _ può gestire numeri di qualsiasi dimensione _ l'unico limite (teorico) è la memoria della macchina _ corrisponde al long in C o in Java _ type float! _ corrisponde al tipo double in C

Tipi di dati Stringhe _ type str _ rappresenta le stringhe come in qualsiasi altro linguaggio _ Operazioni comuni _ Creazione: stringa = "stringa tra doppi apici! stringa = 'stringa tra singoli apici! _ Lunghezza: len(stringa)! _ Upper case: stringa.upper()! _ Replace: stringa.replace("old", "new")!

Tipi di dati Booleani _ type bool! _ True e False! _ con le lettere iniziali maiuscole _ Python è case-sensitive _ true non è uguale a True!

Gestire Input e Output _ raw_input è una funzione _ attende un input da tastiera _ restituisce l'input quando viene premuto invio _ print è una direttiva _ stampa la tupla di argomenti che la segue _ effettua il casting automatico degli elementi in stringhe nome = raw_input("ciao, come ti chiami? ")! if nome:! print "Ciao", nome, "!"! else:! print "Devi dirmi il tuo nome"!

Controllo di flusso If x = 'killer rabbit'!! if x == 'bunny':! print 'hello little bunny'! elif x == 'bugs':! print "what's up doc?! else:! print 'Run away! Run away!...'!! >>> Run away! Run away!!

Controllo di flusso While while True:! print 'Type Ctrl-C to stop me!'!

Controllo di flusso For for x in ["hello", "world"]:! print x!

Strutture dati Gli array _ Liste (type list) lista = [ el 1,..., el N ]! _ Tuple (type tuple) tupla = ( el 1,..., el N )! _ Dizionari (type dict) dizionario = { key 1 : el 1,..., key N : el N }! _ Insiemi (type set) insieme = set(lista)!

Liste Caratteristiche _ Le liste sono semplici array _ Ogni elemento è identificato da un indice numerico _ il primo indice è 0 _ Gli elementi possono non essere omogenei

Liste Operazioni comuni _ Creazione: lista = [1, 5, 10, 20, 8, 5] _ Lettura: valore = lista[2] _ Aggiunta: lista.append(34) _ Eliminazione: del lista[3] _ Modifica: lista[0] = 7 _ Lettura degli elementi partendo dalla fine: lista[-1]! _ Appartenenza di un elemento ad un lista: 5 in lista _ Concatenazione di liste: [1,2,3] + [4,5,6]! _ Ripetizione di liste: [1,2,3] * 3!! _ Per saperne di più >>> help(list)!!

Liste Operazioni comuni _ Slicing: lista = [5, 10, 20, 1, 8, 9, 11]! lista[0: 2] = [5, 10]! lista[3:-2] = [1, 8]! lista[3: ] = [1, 8, 9, 11]! lista[ : 2] = [5, 10]! _ I valori restituiti sono quelli _ dal primo indice (compreso) _ al secondo indice (escluso) _ separati da due punti

Tuple Caratteristiche _ Le tuple sono array che _ non permettono la modifica durante il loro ciclo di vita _ hanno vari campi di applicazione _ hanno prestazioni superiori a quelle delle liste _ permettono di proteggere il software da eventuali attacchi _ come XSS (Cross Site Scripting)

Tuple Caratteristiche _ Le tuple sono definite da una lista di valori _ racchiusi tra parentesi tonde _ separati da virgole tupla = (1, 2, 3)! _ Le parentesi in genere sono opzionali _ aumentano la leggibilità del codice _ sono necessarie quando la virgola può essere ambigua _ se la tupla è utilizzata come argomento di una funzione _ Per creare una tupla con un singolo elemento _ è necessario che l'elemento sia seguito dalla virgola tupla = (1,)!

Tuple Operazioni comuni _ Creazione: tupla = (1, 2, 3, 4, 5) _ Lettura valore: tupla[1] _ Lettura intervallo: tupla[1:3] _ Concatenazione: tupla + (6, 7) _ crea una nuova tupla _ Lunghezza: len(tupla)!! _ Per saperne di più >>> help(tuple)!!

Tuple Esempi di applicazione _ Ritornare più di un valore da una funzione tramite una tupla _ per risparmiare memoria _ per velocizzare l'esecuzione del codice return (a, b, c)! _ Scambiare i valori di due variabili _ senza utilizzare una terza variabile _ tramite assegnazione multipla a,b=b,a invece di temp=a; a=b; b=a!

Dizionari Caratteristiche _ I dizionari sono array associativi _ mappe chiave-valore _ Si creano utilizzando le parentesi graffe diz = {}! diz["nome"] = "Pluto"! diz["corso"] = "Python"! oppure diz = {"nome": "Pluto", "corso": "Python"}!

Dizionari Indici _ Gli indici possono essere di qualsiasi tipo _ tipi numerici, stringhe, tuple e istanze diz[10] = "elemento con chiave int"! diz[21.5] = elemento con chiave float"! diz["abc"] = elemento con chiave str"! diz["ok"] = 1! diz[(1,2,3)] = 0.5!

Dizionari Operazioni comuni _ Creazione: diz = { chiave : valore, }! _ Lista delle chiavi: diz.keys()! _ Lista dei valori: diz.values()! _ Lista di tuple (chiave, valore): diz.items()! _ Lettura elemento: diz[chiave]! _ Eliminazione elemento: del diz[chiave]! _ Lunghezza dizionario: len(diz)!! _ Per saperne di più >>> help(dict)!!

Insiemi Caratteristiche _ Collezione non ordinata di elementi unici _ Supporta _ membership testing _ rimozione duplicati da una sequenza _ operazioni insiemistiche standard _ intersezione, unione, differenza e differenza simmetrica _ Non supporta _ comportamenti tipici dei costrutti sequence-like _ accesso posizionale, slicing,...

Insiemi Operazioni comuni _ Creazione: insieme = set([1, 2, 3, 3, 4, 5])! _ Cardinalità: len(insieme)! _ Appartenenza: x in insieme! _ Non appartenenza: x not in insieme! _ Contenimento: s.issubset(t) oppure s <= t!!s.issuperset(t) oppure s >= t! _ Unione: s.union(t) oppure s t! _ Intersezione: s.intersection(t) oppure s & t! _ Differenza: s.difference(t) oppure s - t! _ Differenza simmetrica: s.symmetric_difference(t) oppure s ^ t! _ Per saperne di più >>> help(set)!!

Funzioni Definire le funzioni _ Le funzioni si definiscono con il comando def _ seguito dal nome della funzione _ seguito dall'elenco dei parametri (opzionale) tra parentesi tonde ()! _ seguito dai due punti : che indicano l'inizio del blocco def funzione():! print "La mia prima funzione in Python"!! def saluto(nome):! print "Ciao " + nome + "!"!! >>> funzione() >>> La mia prima funzione in Python!! >>> saluto("pluto")! >>> Ciao Pluto!!

Funzioni Parametri opzionali _ I parametri opzionali riportano il relativo valore di default def potenza(x, y=2):! return x**y!! >>> potenza(3)! >>> 9!! >>> potenza(3, 3)! >>> 27! _ l'operatore ** indica l'elevazione a potenza _ la direttiva return ritorna il valore di output della funzione

Funzioni Legame dei parametri _ I parametri possono essere passati anche per nome def utente(username, nome="", cognome="", id=none):! print "Inserimento nuovo utente nel database..."! print "Username:", username! if nome: print "Nome\t", nome! if cognome: print "Cognome\t", cognome! if id: print "Id\t", id! >>> utente("pj", cognome="junior", nome="pluto")!! >>> utente("secret_agent", id="007")!

Funzioni Parametri addizionali ( finezze ) _ Il numero di parametri può essere dinamico def sommatoria(nome, *elementi):! print "Lista: ", nome! print "Numero elementi: ", len(elementi)! somma = sum(elementi)! print "Somma: ", somma!! >>> sommatoria("x", 1, 1, 2, 3, 5, 8, 13, 21)! _ L'asterisco indica che la variabile elementi sarà una lista contenente tutti i parametri addizionali

Funzioni Parametri addizionali ( finezze ) _ Il numero di parametri passati per nome può essere dinamico def canzone(nome, *tags, **proprieta):! print "Canzone:", nome! print "Tags:", tags! print "Altro:", proprieta!! >>> canzone("titolo", "a", "b", "c",! autore="autore", anno="2011")! >>> Canzone: Titolo! >>> Tags: ["a", "b", "c"]! >>> Altro: {"autore": "Autore", "anno": "2011"}! _ Il doppio asterisco indica che proprieta conterrà tutti i parametri aggiuntivi passati per nome

Moduli Importare i moduli _ from module import metodo X, attributo Y,...! _ per importare selettivamente metodi e attributi del modulo _ import module! _ per importare tutti i metodi e attributi del modulo _ from module import *! _ per importare tutti i metodi e attributi del modulo _ direttamente nel namespace locale _ in modo che siano disponibili direttamente _ senza qualificare il nome del modulo