Passa al documento

Programmazione

Appunti completi su esercitazioni di programmazione in python
Corso

Informatica (E0201Q046)

217 Documenti
Gli studenti hanno condiviso 217 documenti in questo corso
Anno accademico: 2016/2017
Caricato da:
Studente anonimo
Questo documento è stato caricato da uno studente come te che ha optato per l'anonimità.
Università degli Studi di Milano-Bicocca

Commenti

accedi o registrati per pubblicare commenti.

Anteprima del testo

Python

“Python is an interpreted, object-oriented, highlevel programming language” “Its high-level built in data structures (...) make it very attractive for Rapid Application Development” “Python’s simple, easy to learn syntax emphasizes readability” “Python supports modules and packages, which encourages program modularity and code reuse”.

Python è un linguaggio Turing-complete Che è un modo elegante di dire che ci si può eseguire qualsiasi computazione (algoritmo) ed è facilmente estensibile con dei package/moduli aggiuntivi che possono essere «importati» Esiste una grande quantità di moduli che coprono le più disparate funzionalità.

I linguaggi possono essere categorizzati in diverse maniere. Una delle tipologie principali è la differenza tra linguaggi compilati e linguaggi interpretati.

Per i linguaggi compilati la programmazione avviene in codice sorgente che viene poi compilato in codice macchina e successivamnete il codice macchina viene eseguito dalla CPU. Per i linguaggi interpretati la programmazione avviene in codice sorgente e l’interprete convertte le istruzioni in linguaggio macchina facendole eseguitre alla CPU. Il primo tipo di linguaggio comporta una maggiore efficrnza, mentre il secondo tipo uno sviluppo più veloce.

Python, a grandi linee, non effettua una vera compilazione per eseguire un programma: basta passare il sorgente all’interprete che lo esegue E’ possibile interagire con l’interprete scrivendo python nella riga di comando, seguito da invio. L’avvio della modalità interattiva è segnalato da >>>

Print

print print “Hello World” interprete reagisce al comando stampando il testo come richiesto Finita l’esecuzione, restituisce il controllo all’utente (segnalato da >>>)

print è una funzione «built-in» di Python, il che significa che è supportata nativamente senza bisogno di moduli aggiuntivi Supporta anche espressioni, ad es. possiamo far calcolare a Python il risultato di 2+

  • La virgola separa le frasi tra virgolette (dette «stringhe») e l’espressione numerica

Non è sempre necessario, quando si usa l’interprete, utilizzare la print: qualunque espressione viene valutata e il risultato stampato a video Incluse le stringhe, che sono uguali a sé stesse. La print resta necessaria se si vuole combinare stringhe ed espressioni.

Messaggi di errore

Quando sbagliamo sintassi l’interprete ce lo fa notare. Ad es., python è case-sensitive il che significa che le maiuscole e le minuscole devono essere scritte correttamente.

Quando l’errore non è un errore di sintassi l’errore viene rivelato durante l’esecuzione e non prima di cominciare, questo tipo di errore viene chiamato exception

Python supporta sei operatori: addizione +, sottrazione -, moltiplicazione *, divisione /, resto della divisione (modulo) %, elevamento a potenza **

In Python esistono due principali categorie di numeri: gli interi (int) e i numeri reali (i., floating point, float) I float richiedono l’uso del punto per separare i decimali.

Math

Python mette a disposizione un modulo aggiuntivo chiamato math che contiene una libreria di funzioni (e costanti numeriche) aggiuntive Per utilizzare il modulo è necessario importarlo con il comando import Funzioni e costanti possono essere utilizzati anteponendo il nome del modulo seguito dal punto, come nell’esempio

>>> import math >>> print “Pigreco =”,math

Per sapere cosa mi mette a disposizione un modulo posso utilizzare il comando help(math)

Il comando help è «built-in» e invoca l’aiuto in linea di Python. Può essere utilizzato per qualsiasi modulo, funzione e parola chiave.

Possiamo elencare a video le funzioni che il modulo ci mette a disposizione tramite la funzione dir()

Variabili

Finora abbiamo utilizzato i dati in maniera diretta, mediante numeri (interi e floating point) e stringhe A volte, però, sarebbe più comodo poter immagazzinare i dati in alcuni contenitori per poterli riutilizzare in seguito: questi contenitori prendono il nome di variabili Nei linguaggi «tipizzati» bisogna sapere a priori che tipo di dato vogliamo immagazzinare, ma Python ha «tipizzazione dinamica» quindi non c'è bisogno Inoltre, in Python non è necessario «dichiarare» le variabili, ovvero specificare all’inizio del programma quali variabili vogliamo usare: è automatico Per creare una variabile basta assegnare un valore con l’operatore di assegnamento =

Una volta creata una variabile è possibile usarla nei calcoli o aggiornarla tutte le volte che è necessario mediante l’operatore di assegnamento • Gli operatori matematici di base e l’assegnamento possono essere combinati, bisogna prestare attenzione a non utilizzare variabili che non siano state definite.

Scripting Python

Abbiamo usato l’interprete interattivo per provare i primi comandi ma, di norma, Python non viene utilizzato così Quello che si fa è creare dei files che contengono i nostri algoritmi (i moduli, ad esempio, sono fatti così) Una volta creato uno script Python (mediante un qualunque editor testuale) lo salviamo con estensione .py e lo lanciamo passandolo all’eseguibile di python Python è, tra le altre cose, un linguaggio imperativo: questo significa che le istruzioni nello script vengono eseguite in sequenza

Input da tastiera

Talvolta l'algoritmo che intendiamo eseguire richiede l’inserimento di alcune informazioni da parte dell’utente Python consente di leggere un input da tastiera medianta la funzione raw_input()

Il valore letto viene messo in una variabile mediante assegnamento Facciamo un esempio: uno script che legge un nome da tastiera e ci accoglie

print "Inserire il tuo nome:", nome = raw_input() la virgola serve per non mandare a capo la print prima di raw_input() print "Benvenuto", nome

la funzione raw_input() restituisce il valore letto come una stringa, non un numero, per operare la conversione del valore usiamo una funzione che ha lo stesso nome del tipo di dato in cui vogliamo convertire:

Liste

Abbiamo visto che le variabili consentono di immagazzinare dei valori. Talvolta è comodo immagazzinare più valori in un unico "oggetto", piuttosto che avere tante variabili diverse: questo oggetto è una lista Una lista è una successione ordinata di elementi identificati da un indice

  • Una stringa può essere vista come una lista di caratteri
  • Per definire una lista in Python si usano le parentesi quadre lista = [ ]

E' altresì possibile creare una lista elencandone gli elementi tra parentesi quadre e separati da virgole, la lista non deve necessariamente essere composta di numeri e non deve nemmeno contenere elementi dello stesso tipo

lista_mista=[0, 3, "paperoga"]

Possiamo accedere ad un elemento della lista utilizzando le parentesi quadre [] nelle quali indichiamo l'indice dell'elemento

  • Possiamo stampare il primo elemento (gli indici partono da zero) di una lista scrivendo print lista_cinque_interi[0]
  • Possiamo modificare il secondo elemento della lista usando ancora le quadre lista_cinque_interi[1] = 42 In Python è anche possibile utilizzare indici negativi In quel caso stiamo "contando" a ritroso partendo dalla fine della lista (ovvero, dall'ultimo fino al primo) Per esempio, possiamo accedere all'ultimo elemento della lista con l'indice -

Con Python è possibile estrarre una porzione della lista Si effettua con l'operatore [m:n] che significa "estrai la porzione di lista che va dal mesimo indice all'n-simo indice (escluso). Con Python si può anche specificare uno solo dei due indici Se manca il secondo indice, arriviamo fino alla fine della lista Se manca il primo indice, partiamo dal primo elemento della lista C=A+B Concateniamo due liste A e B A += [7] Abbiamo appeso la lista [7] alla lista A A*2 Possiamo ripetere una lista più volte len(A) Restituisce la lunghezza di A del A[1] Rimuoviamo un elemento A(3) Rimuove l’elemento con l’argomento corrispondente solo alla prima occorrenza sum(A) somma degli elementi (numerici!) di una lista min(A),max(A) Restituisce il minimo o il massimo di una lista Possiamo verificare la presenza di un valore in una lista con l'operatore booleano in >>> 3 in A True L'indice in cui si trova un elemento può essere ricavato con il metodo index() della lista. Questa sintassi è un po' particolare... >>> A. index(3) 2 Se per copiare una lista A in una variabile B usiamo l'operatore di assegnamento (i., B=A) in realtà stiamo creando un collegamento tra le due liste: modificando una delle due liste, modifichiamo anche l'altra Per copiare effettivamente una lista possiamo usare due metodi

  1. Usare la funzione deepcopy fornita dal modulo copy import copy... B = copy(A)
  2. Usare la sintassi [:] per forzare la creazione di una nuova sotto-lista che contiene tutti gli elementi B = A[:] La funzione range() crea una lista di numeri naturali >>> range(1, 5) [1,2,3,4]

Liste nidificate

È possibile creare liste di liste (liste nidificate) che possono essere utilizzate per rappresentare le matrici

Funzioni, metodi, e attributi

Una funzione in python è un nome seguito da una coppia di parentesi, dentro le quali sono specificati degli argomenti. Chiamando la funzione si effettuano delle operazioni. Talvolta, la funzione restituisce uno o più risultati

Sin(x)

Un metodo è una funzione che però "appartiene" a un oggetto. Un metodo non può essere chiamato come funzione a sé stante, ma dev'essere chiamato specificando l'oggetto ad esso collegato, per esempio una stringa:

A(3)

Infine, un attributo è una variabile che "appartiene" a un oggetto

Stringhe come liste di caratteri

Le stringhe sono considerate da Python come liste di caratteri. Possiamo quindi riutilizzare le funzionalità delle liste. Possiamo creare una sotto-stringa con il metodo find()

>>>A = "TCTTCCTCATCGAGTAGC" >>>A(“TC”) viene riportato l’indice della prima occorrenza 0

IF (THEN) ELSE

In Python si utilizzano le parole chiave if ed else per determinare le regioni di codice condizionale

If N%2==1: print “N dispari” elif N==0: print “N uguale a zero” else: print “N pari” il ramo else è opzionale, non sempre è necessario entrambe le istruzioni if ed else si concludono con i due punti esattamente come nelle funzioni, il codice appartenente all'if è denotato dall'indentazione. Lo stesso vale per l'else.

linee = fd() for linea in linee: print linea

Le operazioni che abbiamo appena visto sono così comuni che python mette a disposizione una sintassi molto compatta (con with) per eseguirle

Prestate attenzione all'indentazione di with: significa che in tutto il blocco indentato il file è aperto. Dopo la parte indentata per with, il file viene automaticamente chiuso e non può più essere letto (a meno di non riaprirlo)

Salvare file di testo

Simmetricamente alla lettura, esiste una sintassi per scrivere su un file di testo Nella open, dobbiamo specificare l'argomento aggiuntivo "w" (i., write) Usiamo il metodo .write() del descrittore per scrivere sul file le stringhe Ogni stringa deve terminare con \n, che è il codice per il ritorno a capo

NumPy

NumPy è un package di python per il calcolo scientifico (si installa a parte) è utilissimo perché fornisce funzionalità matematiche avanzate, liste potenziate (array), generatori di numeri casuali, trasformate di Fourier, funzioni statistiche, e via elencando è molto ben integrato con altre librerie potenti come SciPy e matplotlib (che vedremo in seguito)

MEDIA E DEVIAZIONE STANDARD

Con NumPy possiamo calcolare media e deviazione standard di una lista (di numeri) con le funzioni average() e std()

Entrambe le funzioni ritornano un messaggio di warning e un valore speciale nan ("not a number") se vengono calcolate su una lista vuota

Array

L'array è la struttura dati principale di NumPy Rappresenta un'estensione del concetto di lista numerica (omogenea, tutti dati dello stesso tipo) caratterizzata da funzionalità matematiche avanzate Per creare un array basta creare una lista e convertirla con la funzione array() Gli array supportano operazioni vettoriali: ad es., possiamo raddoppiare tutti i valori degli elementi di un array semplicemente moltiplicandolo per 2 (diverso dalle liste!)

Esistono funzioni NumPy che creano direttamente degli array numerici

Gli array di NumPy supportano operatori vettoriali (ovvero applicate in automatico su tutti i valori) per le principali funzioni matematiche, anche combinate tra loro  sum(), len(), min(), max(), average() e std() supportano gli array

Diversamente dalle liste, la somma di due array non rappresenta più la loro concatenazione, bensì la somma dei loro elementi (somma vettoriale)

Molti operatori sugli array sono vettoriali, ovvero applicano l'operazione tra gli elementi dei due array

Matrici

Una funzionalità importante degli array sono le matrici, ovvero array nidificati

NumPy mette a disposizione molteplici funzionalità per manipolare matrici create con gli array. Ad esempio, l'attributo dà accesso alla trasposta della matrice

print A conoscere le dimensioni della matrice print A conoscere quanti elementi ci sono su ogni dimensione della matrice A((3,2)) 3 righe e 2 colonne

"rimodellare" il numero di righe e colonne di una matrice, a patto che il numero di elementi rimanga uguale A(B) moltiplicazione di due matrici A e B o prodotto matrice vettore cross(A,B) Prodotto vettoriale

Leggere un file strutturato

Molto spesso capita di dover analizzare un file di testo contenente dei dati organizzati in qualche maniera (magari prodotti da qualche strumento) Ad es., i cosidetti CSV e TSV ovvero, rispettivamente, dei files in cui i valori sono separati da virgole o caratteri di tabulazione.

R

R è un linguaggio di programmazione e un ambiente di sviluppo specifico per l'analisi statistica dei dati Creato da due statistici: un canadese (R. Gentleman) e un neozelandese (R. Ihaka) .R è interpretato, ha tipizzazione dinamica, è fondamentalmente imperativo ed è espandibile con un vasto numero di moduli aggiuntivi raccolti in un repository chiamato CRAN - "Comprehensive R Archive Network". Esiste un progetto specifico chiamato Bioconductor che raccoglie un'ampia libreria di tools per la bioinformatica e la genomica high-throughput

Similmente a quanto visto con Python+IDLE, faremo uso di una IDE anche per il linguaggio R e La IDE che useremo è RStudio che si presenta suddiviso in una console dove è possibile dialogare direttamente con l’interprete R, un riquadro editor dove possimo scrivere i nostri file sorgente e lanciane l’esecuzione previa selezione e tramite il tasto Run. Il riquadro Environment mostra tutti gli elementi (e., variabili, liste, matrici) contenuti nella memoria corrente, Il tab History riassume tutti i comandi dati all'interprete fino a quel momento. Infine il riquadro in basso a destra riassume i Files nella directory corrente, consente di creare Plots, elenca i Packages disponibili, fornisce un Help in linea e visualizzare contenuti web locali (Viewer)

La directory corrente

I file che creiamo con RStudio, ma anche i comandi che forniamo, vengono salvati nella directory corrente Per sapere in quale directory stiamo lavorando usiamo il comando getwd().

Utilizziamo il comando q() ("quit") per uscire da R usando questo comando, vengono creati due files chiamati .Rdata e .Rhistory che, rispettivamente, contengono i dati e i comandi dati in questa sessione di lavoro in questo modo, alla prossima apertura di R, possiamo riprendere il lavoro fatto R chiederà conferma di salvare il lavoro fatto: rispondete "y" (yes) se volete farlo

Per conoscere i files contenuti nella directory corrente utilizziamo dir()

Per settare una nuova directory corrente a nostra scelta, utilizziamo il comando setwd("percorso"), dove l'argomento è la nuova directory da utilizzare per lavorare alternativamente possiamo utilizzare l’opzione contenuta nella barra del menu(Session  choose directoty)

L'interprete R

L'interprete R funziona in maniera molto simile a Python ad esempio, possiamo fargli valutare delle espressioni basate sui classici operatori aritmetici (+, -, *, /) ( Attenzione: l'elevamento a potenza è ^ e non **). Molte funzioni matematiche avanzate sono nativamente supportate e non richiedono l'importazione

di librerie aggiuntive (ad es., radice quadrata, funzioni trigonometriche, logaritmi, esponenziali) anche le costanti più importanti sono subito disponibili (ad es., pi per il pigreco). R consente al programmatore di creare nuove funzioni

L'assegnamento in R

Diversamente da Python, in R esistono sei modi per assegnare dei valori alle variabili

  • Possiamo usare il singolo uguale = (come in Python)
  • Il metodo tradizionale è mediante l'operatore "freccia" <- (scorciatoia: ALT + -)
  • Si può anche usare nell'altro verso purché la freccia punti alla variabile
  • Possiamo poi usare la funzione assign("variabile", valore) > assign("A", 42)
  • Esistono poi le notazioni alternative --> e <--

Operatori logici in R

Gli operatori logici (AND, OR, NOT) visti per Python esistono ovviamente anche in R, ma hanno una sintassi differente

  • L'AND logico tra due predicati P1 e P2 si calcola con P1 & P
  • L'OR logico tra due predicati P1 e P2 si calcola con P1 | P
  • Il NOT logico del predicato P si calcola con !P
  • I valori vero e falso in R sono denotati da TRUE e FALSE (maiuscoli)

Similmente a Python, R consente di ottenere una guida in linea sui comandi, richiamabile con la funzione help(). help() richiama l'intera guida

Strutture dati in R

Vettori Collezioni ordinate di dati omogenei (=dello stesso tipo) N. un valore singolo, in R, è un vettore di lunghezza 1 Matrici Strutture bidimensionali (tabelle) di dati omogenei Array Strutture a più di due dimensioni di dati omogenei Dataframe Una matrice più generale, non necessariamente omogenea Simile a uno spreadsheet di Excel Liste Collezione ordinata di dati di qualunque genere (anche altre liste)

Vettori

I vettori sono sequenze (ordinate) di dati omogenei che si creano mediante la funzione c() seguita dagli elementi separati da virgole.

Quando passiamo alle funzioni (inclusa c()) degli argomenti con tipo di valore sbagliato, R cerca di correggerli (Coercion), questo meccanismo è silenzioso

Ad es., i tipi di dato nei vettori devono essere tutti uguali. Se proviamo a creare un vettore usando tipi diversi, vengono tutti convertiti per uniformarli

Possiamo verificare il tipo di dati di un vettore usando la funzione typeof()

I vettori sono sempre "piatti", anche se creiamo vettori nidificati e questo consente di concatenare due vettori semplicemente creando un nuovo vettore che li contiene entrambi

m:n Crea un vettore di numeri interi compresi tra m e n seq(m,n,q) genera un vettore di numeri interi compresi tra m e n (incluso) con passo q seq(0, 1,length=10) genera un vettore di numeri floating point della dimensione desiderata rep(X,N) generare un nuovo vettore replicando i valori in X esattamente N volte

Named vectors

Possiamo assegnare dei "nomi" agli elementi di un vettore con la funzione names() e recuperare i valori utilizzando tali nomi

Operazioni vettoriali

In maniera molto simile a quanto visto con python e numpy, possiamo utilizzare i vettori per effettuare delle operazioni vettoriali (es. A+B) con R possiamo sommare vettori di lunghezza diversa: R risolve il problema "allungando" il vettore più corto, "riciclando" i numeri precedenti

length(V) restituisce la lunghezza del vettore V mode(V) restituisce il tipo di dato usato dal vettore V sort(V) restituisce la versione ordinata del vettore V order(V) restituisce i nuovi indici degli elementi dopo un ordinamento rev(V) restituisce il vettore invertito min(V), max(V) restituiscono, rispettivamente, il valore minimo e massimo contenuti nel vettore V range(V) restituisce c(min(V), max(V)) sum(V), prod(V) restituiscono, rispettivamente, la somma e il prodotto di tutti i valori in V mean(V), var(V), sd(V) restituiscono, rispettivamente, la media aritmetica, la varianza e la deviazione standard dei valori contenuti in V

Matrici

In R le matrici sono le versioni bidimensionali dei vettori. Una matrice si crea con la funzione matrix(dati, nrow=R, ncol=C), dove "dati" è un vettore.

matrix() riempie la matrice per colonne, il che non è quasi mai il comportamento desiderato. Per forzare il riempimento per righe aggiungiamo l'argomento byrow=T

Possiamo partire da un vettore di valori e convertirlo in una matrice mediante la funzione dim()

L'accesso a un elemento di una matrice avviene con la notazione [R,C] Si può omettere l'indice della riga o della colonna per "prenderle" tutte Possiamo altresì specificare un vettore con le righe e/o colonne specifiche cui vogliamo accedere

Possiamo unire due oggetti (matrici o vettori) affiancandoli per colonna (con la funzione cbind()) o impilandoli per riga (con la funzione rbind())

Quando la dimensione delle matrici/vettori non corrisponde, R risolve la cosa troncando le parti in eccesso o ripetendo le parti mancanti, senza dare messaggi di warning quando la lunghezza è un multiplo

length(M) restituisce il numero di elementi della matrice M dim(m) restituisce un vettore contenente le dimensioni (righe e colonne) della matrice M typeof(m) restituisce il tipo dei dati immagazzinati nella matrice mode(m) restituisce il tipo di immagazzinamento dei dati nella matrice A+z, zA Si può sommare o moltiplicare a tutti i valori una costante z A %% z Si può moltiplicare A per un vettore z A+B, AB Si può sommare o moltiplicare gli elementi di A e B A %% B Il prodotto "riga-per-colonna" di A e B

Array

Un vettore può essere visto come matrici a una dimensione Una matrice a più di due dimensioni in R prende il nome di array Un array può avere un numero qualsiasi di dimensioni Per semplicità, nella figura è rappresentato un array 3D con 3 × 3 × 3 = 27 elementi. Si può creare con la funzione array()

Possiamo accedere agli elementi dell'array usando una terna di indici

Definizione di nuove funzioni

Il risultato dell'ultima operazione svolta viene restituito come risultato dell'intera funzione

Le istruzioni nel corpo della funzione sono separate da punti e virgola ";"

Fattori

Molto spesso, all'interno delle nostre strutture dati usate per le analisi statistiche, abbiamo bisogno di poter categorizzare delle osservazioni. Ad es., possiamo raggruppare i dati della seguente tabella in due insiemi grazie alla variabile "sesso"(M,F). Quando esiste una variabile in grado di "etichettare" le osservazioni con delle categorie, in R prende il nome di factor

factor() E' possibile convertire un vettore di characters in fattori levels() possiamo ricavare i livelli del fattore che elencano le categotie tapply(v,fact,fun )

applicare una stessa funzione fun ai dati del vettore v, raggruppati in base ai livelli del fattore fact

Si può accedere anche con l'indice tra quadre. R ci ricorda il suo nome:

Possiamo accedere direttamente all'elemento con le doppie quadre [[]] senza in questo modo ottenere il nome.

Possiamo poi accedere agli elementi dell'oggetto con la solita sintassi a parentesi quadre:

Possiamo aggiungere elementi a una lista accedendo con un nome nuovo (mediante dollaro) o un indice nuovo e Possiamo rimuovere un elemento dalla lista assegnando il valore NULL

length(L) lunghezza della lista mode(L[[i]]) restituisce il tipo dell'elemento i-esimo della lista names(lista) restituisce il nome degli elementi della lista. %in% consente di verificare se un elemento è contenuto nella lista

Stampare a video (print)

In R la funzione per stampare a video si chiama print(). Esiste anche un comando alternativo chiamato cat(), che gestisce solo oggetti semplici (i., no liste e data frame) e non restituisce un valore

Creare figure

R supporta nativamente molte tipologie di grafici  non serve libreria aggiuntiva

Packages

La funzione install() serve a installare un nuovo package e per attivare un package si usa la funzione library(nome_package). Per disattivare un package si usa la funzione detach(nome_package)

Questo documento è stato utile?

Programmazione

Corso: Informatica (E0201Q046)

217 Documenti
Gli studenti hanno condiviso 217 documenti in questo corso
Questo documento è stato utile?
Python
“Python is an interpreted, object-oriented, highlevel programming language” “Its high-level built in data
structures (…) make it very attractive for Rapid Application Development” “Python’s simple, easy to learn
syntax emphasizes readability” “Python supports modules and packages, which encourages program
modularity and code reuse”.
Python è un linguaggio Turing-complete Che è un modo elegante di dire che ci si può eseguire qualsiasi
computazione (algoritmo) ed è facilmente estensibile con dei package/moduli aggiuntivi che possono essere
«importati» Esiste una grande quantità di moduli che coprono le più disparate funzionalità.
I linguaggi possono essere categorizzati in diverse maniere. Una delle tipologie principali è la differenza tra
linguaggi compilati e linguaggi interpretati.
Per i linguaggi compilati la programmazione avviene in codice sorgente che viene poi compilato in codice
macchina e successivamnete il codice macchina viene eseguito dalla CPU. Per i linguaggi interpretati la
programmazione avviene in codice sorgente e l’interprete convertte le istruzioni in linguaggio macchina
facendole eseguitre alla CPU. Il primo tipo di linguaggio comporta una maggiore efficrnza, mentre il secondo
tipo uno sviluppo più veloce.
Python, a grandi linee, non effettua una vera compilazione per eseguire un programma: basta passare il
sorgente all’interprete che lo esegue E’ possibile interagire con l’interprete scrivendo python nella riga di
comando, seguito da invio. Lavvio della modalità interattiva è segnalato da >>>
Print
print print “Hello World”
interprete reagisce al comando stampando il testo come richiesto Finita l’esecuzione, restituisce il controllo
all’utente (segnalato da >>>)
print è una funzione «built-in» di Python, il che significa che è supportata nativamente senza bisogno di
moduli aggiuntivi Supporta anche espressioni, ad es. possiamo far calcolare a Python il risultato di 2+2
• La virgola separa le frasi tra virgolette (dette «stringhe») e l’espressione numerica
Non è sempre necessario, quando si usa l’interprete, utilizzare la print: qualunque espressione viene
valutata e il risultato stampato a video Incluse le stringhe, che sono uguali a sé stesse. La print resta
necessaria se si vuole combinare stringhe ed espressioni.
Messaggi di errore
Quando sbagliamo sintassi l’interprete ce lo fa notare. Ad es., python è case-sensitive il che significa che le
maiuscole e le minuscole devono essere scritte correttamente.
Quando l’errore non è un errore di sintassi l’errore viene rivelato durante l’esecuzione e non prima di
cominciare, questo tipo di errore viene chiamato exception
Python supporta sei operatori: addizione +, sottrazione -, moltiplicazione *, divisione /, resto della divisione
(modulo) %, elevamento a potenza **
In Python esistono due principali categorie di numeri: gli interi (int) e i numeri reali (i.e., floating point,
float) I float richiedono l’uso del punto per separare i decimali.
19