Laboratorio di Python (con Linux)

Documenti analoghi
Laboratorio di Python

Laboratorio di Python

Laboratorio di Python

Laboratorio di Python

Laboratorio di Informatica

Programmazione in Python. Moreno Marzolla

Statements: blocchi di istruzioni

Corso di Linguaggi di Programmazione

Lezione 5: Controllo del flusso e costrutti avanzati

Esercizi su strutture dati

L utility Unix awk [Aho-Weinberger-Kernighan]

Input/Output. Console e File.

Rappresentazione degli algoritmi

Funzioni e moduli. Andrea Passerini Informatica. funzioni e moduli

Metodi Informatici per la Biologia

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Laboratorio di Python

If Statement. Il costrutto condizionale if ha la seguente sintassi:

Introduzione al MATLAB c Parte 3 Script e function

Costrutti condizionali e iterativi

Liste, dizionari e tuple

Laboratorio di Python

Lezione 2 I Dizionari

Si può scrivere un programma anche utilizzando un editor di testo (Blocco Note, WordPad, ) ricordandosi comunque di salvarlo con l estensione.py.

Tipi di dato strutturati: Array

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

Laboratorio di Python

Modularizzazione del software

Logica booleana, Costrutto IF

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO III Indice

Avviate l interprete Python selezionandolo dal menu dei programmi. Una volta avviato, l interprete presenta un cursore in cui inserire comandi

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

C: panoramica. Violetta Lonati

Lezione 7 Alberi binari: visite e alberi di ricerca

Strutture blocco. Indentazione e istruzione blocco

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Sommario FONDAMENTI DI INFORMATICA. File e Python. Gestione di file. LINGUAGGIO Python Gestione dei file

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Laboratorio 04. Programmazione - CdS Matematica. Michele Donini 17 Novembre 2015

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Prima lezione. Le funzioni (subroutines)

Essendo una sequenza, condivide le operazioni su sequenza viste per le stringhe

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

LEZIONE PRECEDENTE. 1 Abilità Informatiche e Telematiche. 03/04/2015 Dott. ssa Carmen De Maio

Laboratorio di Algoritmi e Strutture Dati

Quando usiamo Python in modo interattivo in genere e' lo shell utilizzato che gestisce l'indentazione e la deindentazione.

Laboratorio di programmazione

Usare Python in Linux

Laboratorio di Python

Array multidimensionali e stringhe

Lezione 2 I Dizionari

Introduzione al Python

Laboratorio di Informatica

Raccolta di tutorial Python #1: basi e Tkinter dal sito francescomilanese.com SOMMARIO

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Il linguaggio Python

28/02/2014 Copyright V. Moriggia

LEZIONE 11 IMPARIAMO A PROGRAMMARE: I DATI E LE VARIABILI Laboratorio di Informatica per l Educazione A. A. 2014/2015

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IX.2014

Le basi del linguaggio Java

Iterazione (introduzione)

Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Allocazione Dinamica della Memoria

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Laboratorio Progettazione Web Il linguaggio PHP Lezione 6. Andrea Marchetti IIT-CNR 2011/2012

ESERCIZIO: Lettura/Scrittura Array

C espressioni condizionali

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Matlab 5. Funzioni. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

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

Esercizi. La funzione swapint() primo tentativo

Programmazione Orientata agli Oggetti in Linguaggio Java

Laboratorio di Programmazione Laurea in Bioinformatica

Struttura di programmi MAL Elementi lessicali

Il linguaggio C Strutture

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Introduzione Il costrutto if: else: Il costrutto while: Il costrutto for: Sommario FONDAMENTI DI INFORMATICA. Avviso. Introduzione

Laboratorio di Python

Laboratorio di Python

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

MICROSOFT EXCEL FORMULE E FUNZIONI

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2015/2016

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2014/2015

PROGRAMMAZIONE: Le strutture di controllo

Note per la Lezione 6 Ugo Vaccaro

Programmazione 2. Introduzione al corso

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Fondamenti di Informatica

Transcript:

8 a lezione Università di Bologna 2, 4 maggio 2012

Sommario 1 2 3

Diversi Python 2.6 vs 2.7 v.s 3.x La versione di Python installata sulle macchine del laboratorio è la 2.6 (per l esattezza 2.6.6 ). Versioni successive, come 2.7 e 3.1, possono avere differenze significative (comandi aggiunti, rimossi o modificati). Ad esempio, in Python 3 la divisione tra interi si fa con l operatore //, mentre / fa la divisione tra float (non c è overloading di / come in Python 2). Inoltre in Python 3 il comando range non restituisce una lista ma un iteratore (quello che in Python 2 è xrange), quindi se testate le soluzioni con Python 3 sostituite range(start,end,step) con list(range(start,end,step)). In generale è meglio cercare di scrivere codice che sia forward-compatible con Python 3. Se sul vostro computer usate versioni di Python successive alla 2.6 e notate che il codice non gira come previsto, segnalatelo.

Codice ben scritto In matematica quando si scrivono definizioni o teoremi si tende ad utilizzare certe notazioni per indicare il tipo di oggetti di cui si parla (ad esempio lettere maiuscole per le matrici, i, j come indici, k, n, m come interi, p e q o p 1,..., p n come primi). In informatica è bene fare lo stesso perché il codice risulti più chiaro (sia per chi lo scrive, per evitare di fare errori, che per chi lo legge, per capirlo più facilmente). Se si verifica una situazione anomala (ad esempio un argomento di tipo diverso da quanto previsto) in generale non basta stampare un messaggio di errore, bisogna terminare la funzione corrente con return. def inverso(x): if type(x) not in (int,long,float) or x==0: print "Argomento non numerico o zero." return return 1./x

List comprehension L assioma di comprensione permette, dato un insieme, di isolare il sottoinsieme degli elementi che soddisfano una certa proprietà (infatti si chiama anche assioma di isolamento). Python possiede un costrutto noto come List comprehension che consente analogamente di filtrare gli elementi di una lista. def non_zero(l): return [x for x in L if x!=0] Più in generale una list comprehension valuta un espressione in un contesto dato dalle clausole for e if che seguono. Esempio: [(x, y) for x in [1,2,3] for y in [3,1,4] if x!= y] produce [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

Metodi dizionari Agli elementi di un dizionario si accede comodamente indicando la chiave come fosse l indice di un array. >>> phonebook={'bill':'900123','jim':'984363'} Usare una chiave inesistente causa un errore di runtime. >>> phonebook['kate'] Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> phonebook['kate'] KeyError: 'Kate' Si può usare l operatore in per controllare se la chiave esiste. >>> if 'Kate' in phonebook: print phonebook['kate'] Altra possibilità è usare il metodo get del tipo dizionario, che ha un parametro opzionale (valore di default: None) che viene restituito se la chiave non esiste. >>> phonebook.get('kate','donotcallme') 'donotcallme'

Il metodo keys() dà la lista delle chiavi di un dizionario. >>> phonebook.keys() ['Jim', 'Bill'] Il metodo values() restituisce la lista dei valori di un dizionario. >>> phonebook.values() ['984363', '900123'] Infine il metodo items() dà la lista delle coppie di un dizionario. >>> phonebook.items() [('Jim', '984363'), ('Bill', '900123')] Per altri dettagli: scrivere help(dict) sulla shell di Python. Oppure consultare http://docs.python.org/release/2. 6.6/tutorial/datastructures.html#dictionaries.

Variabili e Python usa i dizionari locals() e globals() per memorizzare variabili locali e globali. Per verificare se esiste una variabile globale possiamo scrivere 'n' in globals().keys(). Utile ad esempio per scrivere codice che usa variabili globali (non si dovrebbe usare una variabile già in uso). Per assegnare/modificare una variabile locale scriviamo locals()['n']=3.

def impiccato(filename="/usr/share/doc/idle-python2.6/re if k>=26: print "Cosi' e' troppo facile!" return import string W=parole_da_file(filename) w=random_word(w,minlen) if w==none: print 'Nessuna parola di lunghezza almeno',minle return wl=['_']*len(w) print W print "Gioco dell'impiccato. Indovina una parola di" print wl C=[]

while True: c=raw_input("inserisci una lettera: ").upper() if len(c)!=1 or not(c in string.uppercase): continue elif c in C: print c,"gia' scelta." print "Lettere gia' scelte:",c continue C.append(c) occur=false for i in range(len(w)): if w[i]==c: wl[i]=c occur=true

if not(occur): print c,'non compare.' k-=1 if k>0: print "Hai ancora",k,"possibilita'." continue else: print 'La parola era',w+". Hai perso!" return elif not('_' in wl): print 'La parola era',w+". Indovinato!" return print wl

Esercizi 1 Calcolare le frequenze delle sole vocali in testo con la list comprehension. 2 Somma e prodotto di matrici sparse con dizionari. 3 Frequenze lettere da dizionario frequenze parole (scrivere un programma che dato un dizionario contenente la frequenza di parole in un testo, ovvero un insieme di coppie del tipo (stringa,intero positivo), calcoli le frequenze delle lettere in quel testo. Esercizio per casa: scrivere la soluzione in un file chiamato frequenze.cognome.nome.py e mandarlo via email a python2012unibo@gmail.com entro il prossimo laboratorio (subject email: frequenze ).

Suggerimenti 1 Usare la list comprehension per filtrare le frequenze delle vocali da quelle di tutte le lettere. 2 Una matrice sparsa è una matrice che contiene pochi elementi non-zero. Mettere questi in un dizionario. 3 Usare i metodi visti a lezione e commentare il codice ove necessario.