Laboratorio di Python (con Linux)

Похожие документы
Laboratorio di Python

Laboratorio di Python

Laboratorio di Python

Laboratorio di Python

Laboratorio di Informatica

Programmazione in Python. Moreno Marzolla

Corso di Linguaggi di Programmazione

Lezione 5: Controllo del flusso e costrutti avanzati

Esercizi su strutture dati

Input/Output. Console e File.

Rappresentazione degli algoritmi

Funzioni e moduli. Andrea Passerini Informatica. funzioni e moduli

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Laboratorio di Python

Introduzione al MATLAB c Parte 3 Script e function

Costrutti condizionali e iterativi

Liste, dizionari e tuple

Laboratorio di Python

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

C: panoramica. Violetta Lonati

Lezione 7 Alberi binari: visite e alberi di ricerca

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

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

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

Usare Python in Linux

Laboratorio di Python

Array multidimensionali e stringhe

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

Le basi del linguaggio Java

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

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

Laboratorio di Programmazione Laurea in Bioinformatica

Struttura di programmi MAL Elementi lessicali

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

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

MICROSOFT EXCEL FORMULE E FUNZIONI

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

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

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

Транскрипт:

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.