Il linguaggio Python

Похожие документы
Fondamenti di Programmazione

Introduzione al Python

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Laboratorio di Informatica

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Programmazione Orientata agli Oggetti in Linguaggio Java

Python. Valerio Perticone

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Il calcolatore. Architettura di un calcolatore (Hardware)

Il Manuale di KXSLDbg. Keith Isdale Traduzione del documento: Samuele Kaplun Traduzione del documento: Simone Solinas

Sistemi Web per il turismo - lezione 3 -

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

Calcolare il massimo di una lista

Usare Python in Linux

Richiesta pagina PHP (es: index.php)

Java Native Interface Appunti

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

Esercizi di programmazione in C

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

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

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

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

Gli algoritmi: definizioni e proprietà

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML

Javascript: il browser

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Struttura di un programma Java

Informatica Teorica. Macchine a registri

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

ALGORITMI 1. GLI ALGORITMI 2. IL LINGUAGGIO DI PROGETTO

CALCOLO DEL MASSIMO COMUN DIVISORE

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Prof. Pagani Corrado HTML

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

Informatica. Rappresentazione dei numeri Numerazione binaria

Perché programmare? Capitolo 1. Python for Informatics: Exploring Information

PROGETTAZIONE DISCIPLINARE MATEMATICA classe 2^

SQL Server Architettura Client-Server. SQL Server Introduzione all uso di SQL Server Dutto Riccardo.

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Liceo Marie Curie (Meda) Scientifico Classico Linguistico PROGRAMMAZIONE DISCIPLINARE PER COMPETENZE

Dispensa YACC: generalità

CAPITOLO V. DATABASE: Il modello relazionale

Corso di Informatica

Gestione di files Motivazioni

Esame di Informatica Generale 25 giugno 2010 Professori: Carulli, Fiorino, Mazzei

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Codifica: dal diagramma a blocchi al linguaggio C++

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Lezione 6 Le pile. Informatica. 28 Aprile 2016

Sistemi di Numerazione Binaria NB.1

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Introduzione alla programmazione in C

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

+ / operatori di confronto (espressioni logiche/predicati) / = > < Pseudo codice. Pseudo codice

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

Linguaggio di bash per esempi. Tre modi per quotare. Esempio. quotare: significa trattare caratteri speciali come normali caratteri

Basi di dati (6) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. andrea.bulgarelli@gmail.com Argomento: T-SQL (1.

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

2.12 Esercizi risolti

Laboratorio di Informatica Lezione 2

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

Analizzatore lessicale o scanner

Manuale di configurazione e utilizzo Barcode card

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Corso di Visione Artificiale. Matlab per Visione. Samuel Rota Bulò

Corso Programmazione 1 Capitolo 01: Concetti Elementari

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13

Gestione delle eccezioni in Java

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

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

Input/output in C e in C++

Introduzione a GCC: GNU Compiler Collection

Interpretazione astratta

Vettori ed assegnamenti in R

PYTHON Inviare dati con i form A cura di Silvio Bonechi [sabandini_at_tiscali_dot_it] per

Laboratorio di Informatica

COMPILAZIONE. Tarsformazione di linguaggi

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

la scienza della rappresentazione e della elaborazione dell informazione

4 3 4 = 4 x x x 10 0 aaa

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

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

2 - Introduzione al linguaggio Java

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Alcune regole di base per scrivere un programma in linguaggio C

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

3. La sintassi di Java

Elementi di Informatica e Programmazione

Rendere Python un linguaggio di scripting migliore

Транскрипт:

Il linguaggio Python Capitolo 2 Variabili, Espressioni e Comandi Prof. Mauro Gaspari: mauro.gaspari@unibo.it

Il Linguaggio Python Python è un linguaggio imperativo con alcune caratteristiche funzionali. Python è basato su un interprete che è disponibile su tutti i sistemi operativi ed anche sui palmari. Python è uno scripting language linguaggio adatto a realizzare in modo molto veloce programmi, minimizzando i dettagli notazionali e quindi anche adatto alla prototipazione rapida.

Getting Started Sito di riferimento per l installazione: http://www.python.org/download/ utilizzeremo la versione 2.7 L ultima versione di Python è la 3.7 leggermente differente dalla 2.7. Le differenze principali sono descritte nel Libro. Due componenti: Interprete Python Python IDLE: ambiente di sviluppo. Mauro Gaspari - University of Bologna mauro.gaspari@unibo.it

L'interprete Python Interactive mode: funzionamento interattivo. interprete >>> 1 + 1 2 Script mode: Invocazione di un programma scritto su file La convenzione Il file termina con.py editare il file name.py eseguire python name.py

Un primo programma In genere il primo programma che si presenta quando si introduce un nuovo linguaggio è chiamato Hello, World! perché è il programma che stampa questa frase. in Python: print Hello, World!

Valori e Tipi Un valore (= value) è una delle entità fondamentali che i programmi sono in grado di manipolare (ad esempio un valore può essere un numero o una lettera). Fino ad ora abbiamo visto 3 valori: 1 il numero 1 2 (il risultato di 1 + 1). Hello, World! Ad ogni valore è associato un tipo (= type) ad esempio: 2 è un intero (tipo int in python) Hello, World! è una stringa (tipo string in python)

Tipo string string indica una sequenza di caratteri in inglese). Sia noi che l'interprete python possiamo riconoscere le stringhe perché sono scritte tra virgolette. Interprete: NB1. Il comando print funziona per gli interi e per gli altri tipi. NB2. L'interprete è in grado di stabilire il tipo di un valore con il comando type: type(valore). Tipo float per numeri con il punto decimale (perché sono in virgola mobile - floating-point in inglese).

Esercizi con l interprete Interprete: Quale è il tipo di 17, 3.5? Quale è il tipo di 1,000,000

Perché? Numeri con la virgola come 1,000,000 non sono proprio numeri! NB. primo esempio di errore semantico: il codice viene eseguito senza errori ma l'argomento viene preso come una sequenza (lista) di numeri.

Variabili Una variabile (= variable) è un nome a cui viene associato (che riferisce a) un certo valore. NB. Le variabili sono comunemente utilizzate in tutti i linguaggi di programmazione: A volte la loro definizione tecnica si scosta un po' da quella appena data per python. Pero' il concetto intuitivo di legame tra nome e (possibile) valore è in genere comune a tutti i linguaggi di programmazione ad alto livello.

Assegnamento Il comando di assegnamento (= assignment) crea nuove variabili e associa ad esse un valore. Esempio nell'interprete: >>> message = What's up, Doc? >>> n = 17 >>> pi = 3.14159

Diagramma di stato Si può usare un diagramma di per indicare i valori associati alle singole variabili in un certo momento (diagramma di stato). Spesso utile in fase di debugging.

Ancora assegnamento >>> s = PIPPOLONE >>> Nomi message n pi S riferisce a Valori "What's is up, Doc? 17 3.14159 "PIPPOLONE

Ancora Assegnamento >>> K = S >>> Nomi message n pi S K riferisce a Valori "What's is up, Doc? 17 3.14159 "PIPPOLONE

Tipo delle variabili Anche le variabili hanno associato un tipo. Il tipo di una variabile è il tipo del valore a cui questa riferisce. Interprete Il comando print funziona anche sulle variabili! Il comando type funziona anche sulle veriabili!

Nomi di variabili Un buon programmatore in genere sceglie i nomi delle variabili per ricordare per cosa sono utilizzate queste variabili. I nomi delle variabili possono essere di lunghezza arbitraria (in genere questo vale per quasi tutti i linguaggi ad alto livello moderni). I nomi delle variabili devono iniziare con una lettera e possono contenere sia lettere che numeri. Il carattere underscore ( _ ) puo' apparire nel nome di una variabile, ad esempio il_mio_nome e' un nome legale di variabile (utile per nomi con piu' parole). Nomi scoretti generano errori sintattici.

Esempi di nomi scorretti >>> 76trombones = "big parade" SyntaxError: invalid syntax >>> more$ = 1000000 SyntaxError: invalid syntax >>> class = "Computer Science 101" SyntaxError: invalid syntax La prima inizia con un numero. La seconda ha il carattere illegale $. Quale e' il problema dell'ultima?

Parole chiave Il problema e' che class e' una parola chiave (= keyword) di python. Python ha 28 parole chiave che non possono essere utilizzate come nomi di variabili. Le parole chiave sono utilizzate per le istruzioni del linguaggio. and continue else for import not raise assert def except from in or return break del exec global is pass try class elif finally if lambda print while

Comandi Un comando (= statement) e' un istruzione che puo' essere eseguita dall'interprete python. Quando si scrive un comando sulla riga di comando dell'interprete, python lo esegue e stampa il risultato. NB. ci sono comandi come l'assegnamento che non producono risultati. Uno script di solito contiene una sequenza di comandi. Interpete: esempi di comandi e script.

Valutazione di espressioni Un espressione (= expression) e' una combinazione di valori, variabili e operatori. L'interprete valuta le espressioni e se puo' restituisce un valore. Esempi con l'interprete NB1. le espressioni più semplici sono costituite solo da valori. >>> 17 17 >>> x 2

Differenza tra stampa e valutazione NB. Anche se in alcuni casi l'interprete sembra restituire le stesse cose i concetti di stampa e valutazione sono molto diversi tra loro. Quando l'interprete restituisce un valore lo restituisce cosi come è. Quindi questo può essere riutilizzato ad esempio assegnato ad una variabile. La stampa invece scrive sul video (vedremo anche da altre parti per esempio su un file) il valore dell'espressione. NB. Questa espressione non puo' essere riutilizzata dall'interprete, ad esempio assegnata ad una variabile.

Esempio interprete >>> message = "What's up, Doc?" >>> message "What's up, Doc?" >>> print message What's up, Doc?

Assegnamento e Espressioni Le espressioni possono essere utilizzate nella parte destra di un assegnamento. NB. la parte sinistra di un assegnamento deve essere sempre un nome di variabile.

Assegnamento e riferimenti Cosa accade in realtà, un esempio...

Nomi Valori >>> s = PIPPOLONE >>> s Riferisce a "PIPPOLONE

Nomi Valori >>> s = PIPPOLONE >>> t = pluto s Riferisce a "PIPPOLONE >>> t "PLUTO

Nomi Valori >>> s = PIPPOLONE >>> t = PLUTO s Riferisce a "PIPPOLONE >>> i = 5 >>> print i 5 >>> t "PLUTO i 5

Nomi Valori >>> s = PIPPOLONE >>> t = PLUTO s Riferisce a "PIPPOLONE >>> i = 5 >>> print i 5 >>> t = s t "PLUTO i 5

Nomi Valori >>> s = PIPPOLONE >>> t = PLUTO >>> i = 5 >>> print i 5 >>> t = s >>> print a Traceback (most... File "<stdin>", line. NameError: name 'a' is not defined >>> s t Riferisce a i 5 "PIPPOLONE

>>> s = PIPPOLONE >>> t = PLUTO >>> i = 5 >>> print i 5 >>> t = s >>> print a Traceback (most... File "<stdin>",... NameError: name 'a' is not defined >>> s = MINNI >>> print t PIPPOLONE s "PIPPOLONE t "MINNI i 5

>>> s = PIPPOLONE >>> t = PLUTO >>> i = 5 >>> print i 5 >>> t = s >>> print a Traceback (most... File "<stdin>",... NameError: name 'a' is not defined >>> S = MINNI >>> print t PIPPOLONE >>> del t >>> print t Traceback (most... File "<stdin>",... s i 5 "MINNI

Esempi >>> print 1 + 1 2 >>> t = 1 + 1 >>> t 2 >>> t = print 1 + 1 File "<stdin>", line 1 t = print 1 + 1 ^ SyntaxError: invalid syntax >>> print 1 + 1 2

Interactive mode e script mode Alcune differenze tra i due possono confondere. Per esempio se si usa Python come calcolatore: >>> miles = 26.2 >>> miles * 1.61 42.182 La prima linea non ha effetto visibile mentre la seconda linea c e un espressione e quindi l interprete valuta e visualizza il risultato.

Script mode Lo stesso codice dentro uno script non produce output. Anche un espressione non ha un effetto visibile. Python in realtà valuta l espressione ma non mostra il suo valore, per vederlo è necessario stamparlo: Miles = 26. print miles * 1.61 Uno script di solito contiene una sequenza di statements. Se ci sono piu statements i risultati appaiono non appena gli script vengono eseguiti.

Esempio Lo script print 1 x = 2 print x Produce il seguente output 1 2 NB. l assegnamento no produce output.

Esempio con l interprete >>> message = "What's up, Doc?" >>> message "What's up, Doc?" >>> print message What's up, Doc?

Esercizio 1 Realizzare uno script che stampa le seguenti espressioni? 17 3.2 "Hello, World!" 1 + 1

Esercizio 2 Provare i seguenti comandi con l interprete: 5 x = 5 x + 1 Relizzare uno script che contiene le stesse istruzioni e stampa quello che stampa l interprete?

Exercise 3 Dato il seguente assegnamento per le variabili: X = 'Cat' Y = 'Dog' Scrivere uno script che stampa X e Y in ordine, e che successivamente scambia i valori di X e Y senza utilizzare le stringhe 'Cat'e'Dog' e stampa nuovamente i valori di X, Y nell ordine. Cat Dog Dog Cat

Operatori e Operandi Le espressioni in python si costruiscono con operatori. Gli operatori (= operators) sono simboli speciali che rappresentano operazioni (ad esempio funzioni matematiche). I valori utilizzati dagli operatori si chiamano operandi. Operatori matematici: +, -, /, * (moltiplicazione), ** (esponente).

Espressioni con operatori 20+32 hour-1 hour*60+minute minute/60 5**2 (5+9)*(15-7) Se un espressione con un operatore contiene una variabile anche questa viene valutata e quindi sostituita con il suo valore. Esempi interprete.

Esempio espressioni matematiche >>> minute = 59 >>> minute/60 0 Come mai? nell'aritmetica convenzionale 59/60=0.98333 ma python sta eseguendo la divisione intera perche' i due operandi sono interi. di solito la divisione intera arrotonda con il troncamento: 0.98333 --> 0.98333

Precedenza degli operatori La precedenza degli operatori stabilisce delle regole precise riguardo la valutazione delle espressioni con più operatori. Regole generali (PEMDAS): P: le parentesi hanno la precedenza maggiore. E: esponenziale. 2**1+1 --> (2**1)+1 da risultato 3 MD: moltiplicazione e divisione con stessa precedenza. AS: addizione e sottrazione con stessa precedenza. 2*3-1 --> (2*3)-1 da risultato 5 2/3-1 --> (2/3)-1 da risultato -1 (NB 2/3 = 0 e' la div intera)

Operatori su stringhe In genere non è possibile effettuare operazioni matematiche su stringhe anche se le stringhe contengono numeri. Le seguenti operazioni sono illegali: message-1 "Hello"/123 message*"hello" "15"+2 Notare che in realta' l'operatore + funziona sulle stringhe: infatti realizza l'operazione di concatenazione tra stringhe: >>> pippo + pluto pippopluto Anche l'operatore * funziona sulle stringhe e realizza l'operazione di ripetizione: ha come argomenti una stringa e un intero: >>> pippo *3 pippopippopippo

Esempi operatori su stringhe >>>fruit = "banana" >>>bakedgood = " nut bread" >>>print fruit + bakedgood banana nut bread

Commenti Quando i programmi diventano piu' lunghi e strutturati a volte diventa difficile, guardando un pezzo di codice, capire cosa questo fa'. Utile in fase di debugging o di aggiornamento del codice. E' una prassi comune aggiungere al codice commenti (in genere tutti i linguaggi di programmazione ad alto livello lo permettono). In python i commenti iniziano con il simbolo #. Tutto quello che segue il simbolo # viene ignorato fino alla fine della riga dove si trova.

Esempio commenti Tipologie di commenti: documentare il significato delle operazioni; segnalare possibili fonti di errori; segnalare modifiche al codice. # compute the percentage of the hour that has elapsed percentage = (minute * 100) / 60 percentage = (minute * 100) / 60 # att. divisione int

Esercizio 4: Errore semantico Se si scrive un intero con uno 0 davanti ci possono essere risultati strani: >>> zipcode = 02492 SyntaxError: invalid token Altri numeri sembrano funzionare con effetti strani: >>> zipcode = 02132 >>> zipcode 1114 Cosa succede? Come suggerimento provare a stampare i valori: 01, 010, 0100 and 01000.