SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
Giugno 2006


                                 Definizioni:

Le Istruzioni
 - Sono dei comandi che si vuole impartire alla macchina

Il Terminale
 - O comunemente chiamata shell
   e' il client che ci permette di comunicare i nostri comandi alla macchima

Lo script
 - E' una sequenza di comandi salvati in un file che verra' poi mandato in esecuzione
   inteso come gestione della macchina

Il Programma
 - E' sempre una sequenza di istruzioni che l'elaboratore deve eseguire
   pero' inteso come applicativo che serve all'utente finale




                                   Loris Michielutti                               1
Python le Basi


Interpretato:
 - Compilazione istantanea
 - Interattivo
   quando siamo su una shell e impartendo dei comandi
   abbiamo i risultati in tempo reale
 Pro:
 - Velocita' di apprendimento
 - Visualizzazione immediata dei risultati
 - Efficenza di sviluppo
 Contro:
 - Velocita' di esecuzione
Compilato
- Compilazione Differita
  si deve creare un file poi si deve compilarlo
  per ottenere il file eseguibile
 Pro:
 - Velocita' di esecuzione
 Contro:
 - Elaborazione dei risultati differita
                                  Loris Michielutti                    2
Python le Basi


# questo e' un commento
# assegnazione semplice
mia = “ciao”

# riassegnazione
mia = “adesso contengo un'altra cosa”

# duplice assegnazione
tua = essa = “nostra”

# assegnazione multipla
# (con scambio dei contenuti)
mia, tua = tua, mia




                                Loris Michielutti                    3
Python le Basi


if mia > 20:          # condizione
   mia = 10           # eseguita se VERA
   pass               # istruzione che non fa nulla
else:                 # questo e' facoltativo
   mia = 30           # eseguita se FALSA
if mia > 20: mia = 10 # condizione e operazione sulla stessa riga
elif mia < 50: mia = 5 # testata solo se la precedente non e' soddisfatta

          Condizioni                           Boolean
== is        uguale                  False           0,””,None
!= <> is not non uguale              True            tutti gli altri casi
<            minore                  - Una particolare attenzione si deve portare nelle
>            maggiore                   operazioni di tipo boolean.
<=           minore o uguale         - In una espressione AND viene calcolata la 2a parte
>=           maggiore o uguale          solo se, il valore della 1a parte e' VERO.
5<x<7        x compreso              - In una espressione OR viene calcolata la 2a parte
                                        solo se, il valore della 1a parte e' FALSO.


                                  Loris Michielutti                              4
Python le Basi


int(num)              # intero    (normamente 32bit)
long(num)             # long      (illimitato)
float(num)            # floating  (normalmente 64bit, IEEE)
complex(rea,ima)      # complesso (due float parte reale, parte immaginaria)

         Funzioni Base                                   Funzioni sui Bit
x+y          # somma                            x|y          # x or y
x–y          # sottrazione                      x^y          # x xor y
x*y          # moltiplicazione                  x&y          # x and y
x/y          # divisione                        x << y       # shift a Sx di y bit
x%y          # resto divisione                  x >> y       # shift a Dx di y bit
x ** y       # x alla potenza di y              ~x           # negato
         Operazioni Unitarie                             Moduli matematici
+x          # incremento                        math        #
-x          # decremento                        cmath       #
                                                operator    #



                                     Loris Michielutti                               5
Python le Basi


while mia > 20:            # condizione
 mia -= 1                  # eseguita finche' la condizione e' VERA
for i in 1,2,4      :       # condizione (finche' esistono elementi)
  print i ** 2              # eseguita finche' la condizione e' VERA
for i in xrange (0,6,2)    # condizione (da 0 a 6 a step di 2)
  print i ** 2             # eseguita finche' la condizione e' VERA
a = ['Mary', 'had', 'a', 'little', 'lamb']
for i, item in enumerate a # itera sugli indici della sequenza
  print i, item                  # stampa indice ed elemento
All'interno dei corpi possono esistere le istruzioni:
break                       # interrompi il ciclo
continue                    # continua a ciclare senza eseguire le istr. seguenti del corpo
return                      # esce dalla funzione o dal metodo
Alla fine del corpo puo' esistere l'istruzione:
else
Nota:
      xrange(0,6,2) crea una sequenza immutabile       # piu' veloce come iteratore
       range(0,6,2) crea una sequenza mutabile
                                   Loris Michielutti                                 6
Python le Basi


str = “questa e' una stringa”                   # assegnazione con i doppi apici
str = 'questa e' una stringa'                  # assegnazione con gli apici singoli
str = r“questa e' una stringa rawn”            # raw
str = u“questa e' una stringa unicode”          # unicode

str = “questa e' una stringa                    # multilinea
          con piu' lineee”
str = “””questa e' una stringa                   # multilinea con i triplici apici
          con piu' lineee”””                     # (doc String)
      Le stringhe sono sequenze
           (immutabili!)
for i in str :print i
print len(str), str[:2], str[::-1], 'ci'+'ao'

     Modulo
string




                                          Loris Michielutti                            7
Python le Basi


                         Alcuni Metodi:
s.capitalize()                   # ritorna una copia con il primo carattere Maiuscolo
s.center(width)                  # ritorna una copia di lunghezza passata e centrata
s.count(sub[,start[,end]])       # ritorna il numero di occorrenze della sottostringa
s.encode([encoding[,errors]]) # ritorna la codifica dell'errore
s.endswith(suffix[,start[,end]]) # ritorna vero se la stringa finisce col suffisso specificato
s.expandtabs([tabsize])          # ritorna una copia della con tutti i tab espansi usando ' '
s.find(sub[,start[,end]])        # ritorna l'indice piu' basso della sottostringa altrimenti -1
s.index(sub[,start[,end]])       # uguale al prec. ma solleva una ecc. se non la trova
s.isalnum()                      # ritorna vero se tutti i caratteri sono alfanumerici
s.isalpha()                      # ritorna vero se tutti i caratteri sono alfabetici
s.isdigit()                      # ritorna vero se tutti i caratteri sono numerici
s.isupper()                      # ritorna vero se tutti i caratteri sono maiuscoli
s.join(seq)                      # rit. una concat. della strin. nella seq. separata da uno ' '
s.ljust(width)                   # rit. una stringa di lungh. passata e giustificata a sinitra
s.lower()                        # ritorna una copia con tutti i caratteri minuscoli
s.lstrip()                       # ritorna una copia eliminando tutti gli spazi a inizio stringa
s.replace(old, new[, maxsplit]) # rit. una copia sostit. la sottostringa old con quella new
s.upper()                        # ritorna una copia con tutti i caratteri maiuscoli

                                    Loris Michielutti                                   8
Python le Basi

              Usa il codice della libreria C printf (il prefisso % indica la variabile)
a = 12.5; b= “ciao”; c= 100
”%f e' un floating %03d e' un decimale formattato %s e' una stringa” % (a,c,b)
              Flag
“%-5d”        # Indica di formattare allineando a sinistra un decimale a 5 cifre
“%5d”         # Indica di formattare allineando a destra un decimale a 5 cifre
“%+5d”        # come prima ma aggiunge il segno al decimale
“%05d”        # come prima ma se mancano cifre aggiunge degli 0
“%5.1f”       # Indica di formattare un frazionario con 5 caratteri in totale
               (compresa la virgola!!!) di cui 1 dopo la virgola
              Codice del Formato
d,i           # intero decimale con segno
o             # ottale senza segno
u             # decimale senza segno
x,X           # esadecimale senza segno (lowercase, uppercase).
e,E           # formato esponenziale floating point (lowercase, uppercase).
f,F           # formato decimale floating point (lowercase, uppercase).
g,G           # come "e" ma meno preciso
c             # singolo carattere
r,s           # stringa (conversione ottenuta usando repr(), str()).
%%            # usato per ottenere “%”
                                    Loris Michielutti                                     9
Python le Basi

                      Liste (mutabili) e Tuple (immutabili)
sono vettori eterogenei:            t = “vettore eterogeneo”, 1, 'ciao', 20
sono sequenze con indice e slice t[1] ; t [2:3]
         si possono impachettate e spachettate
    x = 1,3,6,9                               # packing
    a,b,c,d = x                               # unpacking
    ROSSO, GIALLO, VERDE = range(3) # come enum in C
t = “questa e' una tupla”, 1, 'ciao', 20        # immutabile
l = [“questa e' una lista”, 3, 'ciao', 15]      # mutabile
      l [0] = “modifico il primo elemento”
          Operazioni eseguibili su Liste, Tuple e Stringhe
x in s                                        # vero se l'elemento in s e' uguale a x
x not in s                                    # falso se l'elemento in s e' uguale a x
s+t                                           # concatenamento di s e t
s * n, n*s                                    # concatena n copie di s
s[i]                                          # ennesimo elemento di s, origine = 0
s[i:j]                                        # ritaglio di s da i (incluso) a j (escluso)
len(s)                                        # lunghezza di s
min(s)                                        # il piu' piccolo elemento di s
max(s)                                        # il piu' grande elemento di s
                                     Loris Michielutti                                   10
Python le Basi

           Operazioni eseguibili su sequenze mutabili Liste
as[i] =x                                               # sostituzione di un elemento
s[i:j] = t                                             # sostituzione di una parte di elementi
del s[i:j]     equivale a s[i:j] = []                  # eliminazione di una parte
s.append(x) equivale a s[len(s) : len(s)] = [x]        # aggiunta di un elemento alla fine
s.extend(x) equivale a s[len(s):len(s)]= x             # aggiiunta di N elementi alla fine
s.count(x)                                             # ritorna il num. Delle occorrenze
s.index(x)                                             # ritorna la primaa occorrenza
s.insert(i, x) equivale a s[i:i] = [x] if i >= 0       # aggiunge un elem. nella posizione (i)
s.remove(x) equivale a del s[s.index(x)]               # rimuove il primo elemento
s.pop([i])     equivale a x = s[i]; del s[i]; return x # estrae un elemento di indice (i)
s.reverse()                                            # inverte l'ordine della sequenza
s.sort()                                               # sistema l'ordine della sequenza
s.set(x)                                               # ritorna un insieme di elem. univoci


          Attenzione se volete una copia non copiate il riferimento
              copia = lista, y = x
                    ma richiedetela esplicitamente
              y = list(x) o x[:] o x*1 o copy.copy(x)

                                    Loris Michielutti                                   11
Python le Basi

           I Dizionari sono mappe non sono sequenze
d = {1:2, 'mio':10, 2:[2,'i',5]}    # questo e' un dizionario (chiave, elemento)
           la chiave di solito e' immutabile!!
d[ [1,2] ] = ...                    # una Lista non puo' essere una chiave
d[ {1,2} ] = ...                    # un Dizionario non puo' essere una chiave
d[ 1,2 ] = ...                      # una Tupla puo' essere una chiave
           pero' un dizionario puo' essere iterato tramite la chiave
     for k in d: print d[k]
           Operazioni sui Dizionari
len(d)                              # numero di elementi in d
d[k], d.get(k)                      # elemento in d con chiave k
d[k] = x , d.setdefault(x)          # modifico l'elemento con chiave k
del d[k]                            # elimino l'elemento con chiave k
d.clear()                           # elimino tutti gli elementi di d
d.copy()                            # faccio una copia del dizionario
d.has_key(k)                        # ritorna 1 se esiste la chiave k
d.items()                           # creo una lista con le coppie (chiave,elemento)
d.keys()                            # creo una lista con le chiavi
d.values()                          # creo una lista con gli elementi
d1.update(d2)                       # aggiorna il dizionario d1 con d2
     equivale a for k, v in d2.items(): d1[k] = v
                                     Loris Michielutti                                 12

Contenu connexe

Tendances

06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedefPiero Fraternali
 
PHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLPHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLextrategy
 
2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#Marco Parenzan
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)STELITANO
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsJUG Genova
 
12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatoriMajong DevJfu
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object OrientedManuel Scapolan
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Marcello Missiroli
 
Gestione della memoria in C++
Gestione della memoria in C++Gestione della memoria in C++
Gestione della memoria in C++Ilio Catallo
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScriptGiovanni Buffa
 
PHP: strutture di controllo e funzioni
PHP: strutture di controllo e funzioniPHP: strutture di controllo e funzioni
PHP: strutture di controllo e funzioniextrategy
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamicaguest60e9511
 

Tendances (20)

2006 Py04 avanzato
2006 Py04 avanzato2006 Py04 avanzato
2006 Py04 avanzato
 
06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedef
 
PHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQLPHP:funzioni e interazione con MySQL
PHP:funzioni e interazione con MySQL
 
2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 
05 1 intro-struttura
05 1 intro-struttura05 1 intro-struttura
05 1 intro-struttura
 
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
 
12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori
 
JavaScript Object Oriented
JavaScript Object OrientedJavaScript Object Oriented
JavaScript Object Oriented
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
Gcc & Make
Gcc & MakeGcc & Make
Gcc & Make
 
Gestione della memoria in C++
Gestione della memoria in C++Gestione della memoria in C++
Gestione della memoria in C++
 
06 2 vector_matrici
06 2 vector_matrici06 2 vector_matrici
06 2 vector_matrici
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
PHP: strutture di controllo e funzioni
PHP: strutture di controllo e funzioniPHP: strutture di controllo e funzioni
PHP: strutture di controllo e funzioni
 
07 1 funzioni
07 1 funzioni07 1 funzioni
07 1 funzioni
 
Corso c++
Corso c++Corso c++
Corso c++
 
Stringhe java
Stringhe javaStringhe java
Stringhe java
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
13 Puntatori E Memoria Dinamica
13   Puntatori E Memoria Dinamica13   Puntatori E Memoria Dinamica
13 Puntatori E Memoria Dinamica
 

Similaire à 2006 Py02 base

Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi orestJump
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)STELITANO
 
Pycrashcourse4.0 pdfjam
Pycrashcourse4.0 pdfjamPycrashcourse4.0 pdfjam
Pycrashcourse4.0 pdfjamrik0
 
Lezione5 - MIPS & SPIM Unicam
Lezione5 - MIPS & SPIM UnicamLezione5 - MIPS & SPIM Unicam
Lezione5 - MIPS & SPIM UnicamNicola Paoletti
 
What is new in C# 2018
What is new in C# 2018What is new in C# 2018
What is new in C# 2018Marco Parenzan
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)STELITANO
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)STELITANO
 
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...Davide Brunato
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014Andrea Telatin
 

Similaire à 2006 Py02 base (20)

Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)
 
Bash programming
Bash programmingBash programming
Bash programming
 
Pycrashcourse4.0 pdfjam
Pycrashcourse4.0 pdfjamPycrashcourse4.0 pdfjam
Pycrashcourse4.0 pdfjam
 
Corso python 2020 - Lezione 1
Corso python 2020 - Lezione 1Corso python 2020 - Lezione 1
Corso python 2020 - Lezione 1
 
Lezione5 - MIPS & SPIM Unicam
Lezione5 - MIPS & SPIM UnicamLezione5 - MIPS & SPIM Unicam
Lezione5 - MIPS & SPIM Unicam
 
Modulo 1 - Lezione 1
Modulo 1 - Lezione 1Modulo 1 - Lezione 1
Modulo 1 - Lezione 1
 
Bash Scripting
Bash ScriptingBash Scripting
Bash Scripting
 
07 2 ricorsione
07 2 ricorsione07 2 ricorsione
07 2 ricorsione
 
What is new in C# 2018
What is new in C# 2018What is new in C# 2018
What is new in C# 2018
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
Bash intro
Bash introBash intro
Bash intro
 
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
 

2006 Py02 base

  • 1. Giugno 2006 Definizioni: Le Istruzioni - Sono dei comandi che si vuole impartire alla macchina Il Terminale - O comunemente chiamata shell e' il client che ci permette di comunicare i nostri comandi alla macchima Lo script - E' una sequenza di comandi salvati in un file che verra' poi mandato in esecuzione inteso come gestione della macchina Il Programma - E' sempre una sequenza di istruzioni che l'elaboratore deve eseguire pero' inteso come applicativo che serve all'utente finale Loris Michielutti 1
  • 2. Python le Basi Interpretato: - Compilazione istantanea - Interattivo quando siamo su una shell e impartendo dei comandi abbiamo i risultati in tempo reale Pro: - Velocita' di apprendimento - Visualizzazione immediata dei risultati - Efficenza di sviluppo Contro: - Velocita' di esecuzione Compilato - Compilazione Differita si deve creare un file poi si deve compilarlo per ottenere il file eseguibile Pro: - Velocita' di esecuzione Contro: - Elaborazione dei risultati differita Loris Michielutti 2
  • 3. Python le Basi # questo e' un commento # assegnazione semplice mia = “ciao” # riassegnazione mia = “adesso contengo un'altra cosa” # duplice assegnazione tua = essa = “nostra” # assegnazione multipla # (con scambio dei contenuti) mia, tua = tua, mia Loris Michielutti 3
  • 4. Python le Basi if mia > 20: # condizione mia = 10 # eseguita se VERA pass # istruzione che non fa nulla else: # questo e' facoltativo mia = 30 # eseguita se FALSA if mia > 20: mia = 10 # condizione e operazione sulla stessa riga elif mia < 50: mia = 5 # testata solo se la precedente non e' soddisfatta Condizioni Boolean == is uguale False 0,””,None != <> is not non uguale True tutti gli altri casi < minore - Una particolare attenzione si deve portare nelle > maggiore operazioni di tipo boolean. <= minore o uguale - In una espressione AND viene calcolata la 2a parte >= maggiore o uguale solo se, il valore della 1a parte e' VERO. 5<x<7 x compreso - In una espressione OR viene calcolata la 2a parte solo se, il valore della 1a parte e' FALSO. Loris Michielutti 4
  • 5. Python le Basi int(num) # intero (normamente 32bit) long(num) # long (illimitato) float(num) # floating (normalmente 64bit, IEEE) complex(rea,ima) # complesso (due float parte reale, parte immaginaria) Funzioni Base Funzioni sui Bit x+y # somma x|y # x or y x–y # sottrazione x^y # x xor y x*y # moltiplicazione x&y # x and y x/y # divisione x << y # shift a Sx di y bit x%y # resto divisione x >> y # shift a Dx di y bit x ** y # x alla potenza di y ~x # negato Operazioni Unitarie Moduli matematici +x # incremento math # -x # decremento cmath # operator # Loris Michielutti 5
  • 6. Python le Basi while mia > 20: # condizione mia -= 1 # eseguita finche' la condizione e' VERA for i in 1,2,4 : # condizione (finche' esistono elementi) print i ** 2 # eseguita finche' la condizione e' VERA for i in xrange (0,6,2) # condizione (da 0 a 6 a step di 2) print i ** 2 # eseguita finche' la condizione e' VERA a = ['Mary', 'had', 'a', 'little', 'lamb'] for i, item in enumerate a # itera sugli indici della sequenza print i, item # stampa indice ed elemento All'interno dei corpi possono esistere le istruzioni: break # interrompi il ciclo continue # continua a ciclare senza eseguire le istr. seguenti del corpo return # esce dalla funzione o dal metodo Alla fine del corpo puo' esistere l'istruzione: else Nota: xrange(0,6,2) crea una sequenza immutabile # piu' veloce come iteratore range(0,6,2) crea una sequenza mutabile Loris Michielutti 6
  • 7. Python le Basi str = “questa e' una stringa” # assegnazione con i doppi apici str = 'questa e' una stringa' # assegnazione con gli apici singoli str = r“questa e' una stringa rawn” # raw str = u“questa e' una stringa unicode” # unicode str = “questa e' una stringa # multilinea con piu' lineee” str = “””questa e' una stringa # multilinea con i triplici apici con piu' lineee””” # (doc String) Le stringhe sono sequenze (immutabili!) for i in str :print i print len(str), str[:2], str[::-1], 'ci'+'ao' Modulo string Loris Michielutti 7
  • 8. Python le Basi Alcuni Metodi: s.capitalize() # ritorna una copia con il primo carattere Maiuscolo s.center(width) # ritorna una copia di lunghezza passata e centrata s.count(sub[,start[,end]]) # ritorna il numero di occorrenze della sottostringa s.encode([encoding[,errors]]) # ritorna la codifica dell'errore s.endswith(suffix[,start[,end]]) # ritorna vero se la stringa finisce col suffisso specificato s.expandtabs([tabsize]) # ritorna una copia della con tutti i tab espansi usando ' ' s.find(sub[,start[,end]]) # ritorna l'indice piu' basso della sottostringa altrimenti -1 s.index(sub[,start[,end]]) # uguale al prec. ma solleva una ecc. se non la trova s.isalnum() # ritorna vero se tutti i caratteri sono alfanumerici s.isalpha() # ritorna vero se tutti i caratteri sono alfabetici s.isdigit() # ritorna vero se tutti i caratteri sono numerici s.isupper() # ritorna vero se tutti i caratteri sono maiuscoli s.join(seq) # rit. una concat. della strin. nella seq. separata da uno ' ' s.ljust(width) # rit. una stringa di lungh. passata e giustificata a sinitra s.lower() # ritorna una copia con tutti i caratteri minuscoli s.lstrip() # ritorna una copia eliminando tutti gli spazi a inizio stringa s.replace(old, new[, maxsplit]) # rit. una copia sostit. la sottostringa old con quella new s.upper() # ritorna una copia con tutti i caratteri maiuscoli Loris Michielutti 8
  • 9. Python le Basi Usa il codice della libreria C printf (il prefisso % indica la variabile) a = 12.5; b= “ciao”; c= 100 ”%f e' un floating %03d e' un decimale formattato %s e' una stringa” % (a,c,b) Flag “%-5d” # Indica di formattare allineando a sinistra un decimale a 5 cifre “%5d” # Indica di formattare allineando a destra un decimale a 5 cifre “%+5d” # come prima ma aggiunge il segno al decimale “%05d” # come prima ma se mancano cifre aggiunge degli 0 “%5.1f” # Indica di formattare un frazionario con 5 caratteri in totale (compresa la virgola!!!) di cui 1 dopo la virgola Codice del Formato d,i # intero decimale con segno o # ottale senza segno u # decimale senza segno x,X # esadecimale senza segno (lowercase, uppercase). e,E # formato esponenziale floating point (lowercase, uppercase). f,F # formato decimale floating point (lowercase, uppercase). g,G # come "e" ma meno preciso c # singolo carattere r,s # stringa (conversione ottenuta usando repr(), str()). %% # usato per ottenere “%” Loris Michielutti 9
  • 10. Python le Basi Liste (mutabili) e Tuple (immutabili) sono vettori eterogenei: t = “vettore eterogeneo”, 1, 'ciao', 20 sono sequenze con indice e slice t[1] ; t [2:3] si possono impachettate e spachettate x = 1,3,6,9 # packing a,b,c,d = x # unpacking ROSSO, GIALLO, VERDE = range(3) # come enum in C t = “questa e' una tupla”, 1, 'ciao', 20 # immutabile l = [“questa e' una lista”, 3, 'ciao', 15] # mutabile l [0] = “modifico il primo elemento” Operazioni eseguibili su Liste, Tuple e Stringhe x in s # vero se l'elemento in s e' uguale a x x not in s # falso se l'elemento in s e' uguale a x s+t # concatenamento di s e t s * n, n*s # concatena n copie di s s[i] # ennesimo elemento di s, origine = 0 s[i:j] # ritaglio di s da i (incluso) a j (escluso) len(s) # lunghezza di s min(s) # il piu' piccolo elemento di s max(s) # il piu' grande elemento di s Loris Michielutti 10
  • 11. Python le Basi Operazioni eseguibili su sequenze mutabili Liste as[i] =x # sostituzione di un elemento s[i:j] = t # sostituzione di una parte di elementi del s[i:j] equivale a s[i:j] = [] # eliminazione di una parte s.append(x) equivale a s[len(s) : len(s)] = [x] # aggiunta di un elemento alla fine s.extend(x) equivale a s[len(s):len(s)]= x # aggiiunta di N elementi alla fine s.count(x) # ritorna il num. Delle occorrenze s.index(x) # ritorna la primaa occorrenza s.insert(i, x) equivale a s[i:i] = [x] if i >= 0 # aggiunge un elem. nella posizione (i) s.remove(x) equivale a del s[s.index(x)] # rimuove il primo elemento s.pop([i]) equivale a x = s[i]; del s[i]; return x # estrae un elemento di indice (i) s.reverse() # inverte l'ordine della sequenza s.sort() # sistema l'ordine della sequenza s.set(x) # ritorna un insieme di elem. univoci Attenzione se volete una copia non copiate il riferimento copia = lista, y = x ma richiedetela esplicitamente y = list(x) o x[:] o x*1 o copy.copy(x) Loris Michielutti 11
  • 12. Python le Basi I Dizionari sono mappe non sono sequenze d = {1:2, 'mio':10, 2:[2,'i',5]} # questo e' un dizionario (chiave, elemento) la chiave di solito e' immutabile!! d[ [1,2] ] = ... # una Lista non puo' essere una chiave d[ {1,2} ] = ... # un Dizionario non puo' essere una chiave d[ 1,2 ] = ... # una Tupla puo' essere una chiave pero' un dizionario puo' essere iterato tramite la chiave for k in d: print d[k] Operazioni sui Dizionari len(d) # numero di elementi in d d[k], d.get(k) # elemento in d con chiave k d[k] = x , d.setdefault(x) # modifico l'elemento con chiave k del d[k] # elimino l'elemento con chiave k d.clear() # elimino tutti gli elementi di d d.copy() # faccio una copia del dizionario d.has_key(k) # ritorna 1 se esiste la chiave k d.items() # creo una lista con le coppie (chiave,elemento) d.keys() # creo una lista con le chiavi d.values() # creo una lista con gli elementi d1.update(d2) # aggiorna il dizionario d1 con d2 equivale a for k, v in d2.items(): d1[k] = v Loris Michielutti 12