Vai al menù, saltando i contenuti (access key "m")
Python. Le basi
Commenti
# ...
Rientri
No tab. Usare 4 spazi.
Esempio di a capo:
vec = [ 'uno', 'dieci', 'cinque' ]
Variabili e Assegnazione
Tipi: intero, reale, booleano, complesso, stringa
Definizione implicita
Nome variabile deve cominciare per lettera o _ poi possono seguire i numeri, lettere e _ ASCII
Esempio di assegnazione
a = 3 c, d = 'su', 'HTML.it' # assegnamento multiplo
Strutture dati
liste, dizionari, tuple e files
Parole riservate
False def if raise None del import return True elif in try and else is while as except lambda with assert finally nonlocal yield break for not class from or continue global pass
Operazioni matematiche di base
+ - * / int(...) # conversione da float a int float(...) # conversione da int a float % # operatore resto della divisione (funziona anche coi numeri con la virgola) // # operatore di divisione intera tra interi << e >> # shift bit a bit a sinistra e a destra per interi ( 24<<1 = 48)
Operatori logici
or and not <, <=, >, >=, ==, != (<> non esiste più...? ) | # or bit a bit & # and bit a bit ^ # xor bit a bit
Stringhe
s = '....' oppure s = "...." + # concatenazione * # ripetizione s[3] # quarto carattere della stringa s[0:3] # dal primo incluso al quarto car. della stringa escluso s[5:] # dal sesto alla fine s[:5] # dal primo al quinto s[-2] # penultimo carattere s[3:-2] # dal quarto al terzultimo len(s) # numero di caratteri nella stringa
Metodi su stringhe
s.find('...') # numero carattere o -1 s.replace('old','new') # rimpiazza s.upper() # maiuscolo s.lower() # minuscolo # Segnaposti nelle stringhe %s stringa %c singolo carattere %d numero decimale %u intero senza segno %o numero in notazione ottale %x numero in notazione esadecimale %g numero reale in notazione normale %e numero reale in notazione scientifica # Esempio: risultato = "%s ha %d anni" % (nome, eta)
Le funzioni di base
print('...') print(a,b,(a*b)) a = input('...') # input stringa a = eval('...') # stringa in numero
Liste
lista = [..., ..., ...] # possono contenere qualsiasi tipo, anche altre liste # indicizzazione come le stringhe (che sono liste di caratteri) + # concatenazione di liste * # ripetizione di liste # eliminare un elemento di una lista: lista[2] = [] len(lista) # lunghezza lista
Metodi liste
lista.append(oggetto) lista.extend(lista2) lista.insert(indice,oggetto) lista.pop([indice]) # restituisce ed elimina elemento lista o l'ultimo lista.remove(valore) # elimina da lista il valore se c'è lista.remove(lista[2]) # altro esempio d'uso di remove lista.sort() # ordina la lista in base a qualche criterio sensato
out = map(function, L) out = [function(object) for object in L]
For straightforward function calls, the map solution is more efficient, since the function object only needs to be fetched once. For other constructs (e.g. expressions or calls to object methods), you have to use a callback or a lambda to wrap the operation; in such cases, the list comprehension is more efficient, and usually also easier to read.
Dizionari
# HASH -> molto veloci diz = {oggetto1:oggetto2, oggetto3:oggetto4, ...} diz[oggetto3] restituisce oggetto4 parola chiave "in" mi dice se un oggetto è nel dizionario oggetto3 in diz # inserimento diz[oggetto5]=oggetto6 #modifica ... # cancellazione del diz[oggetto3] len(diz) # lunghezza dizionario
Metodi dizionari
diz.get('chiave') diz.values() # elenco valori diz.keys() # elenco chiavi diz.items() # elenco chiave, valore # ordinare un dizionario in base alla chiave lista_chiavi = list(diz.keys()) lista_chiavi.sort() for elemento in lista_chiavi: print(elemento,diz[elemento])
Tuple
# tipo non mutabile! Una volta creato è quello t = () t = (1,) t = (1,2) ...
Operatori di conversione
tuple # converte da lista a tupla list # converte da tupla a lista
File
output = open('pippo.txt','w') # apertura di un file in scrittura input = open('dati','r') # apertura di un file in lettura s = input.read() # lettura dell’intero contenuto del file s = input.read(N) # lettura di N bytes s = input.readline() # lettura di una riga (per files di testo) s = input.readlines() #restuisce l’intero file come lista di righe (per files di testo) output.write(s) # scrive nel file i valori passati come parametri e ritorna il numero di bytes scritti output.writelines(L) # scrive la lista L in righe nel file output.close(L) # chiusura del file
\n carattere di a-capo
# Modalità di apertura di open "r" Apre un file di testo in lettura, equivalente a "rt", se si omette il secondo parametro di open è la modalità di default "w" Apre un file in scrittura, e ne azzera i contenuti "rb" e "wb" Apre un file binario in lettura o scrittura con azzeramento del contenuto "w+" e "w+b" Aprono un file in modifica, rispettivamente testuale e binario, e consentendone l’aggiornamento, ma ne azzerano i contenuti "r+" e "r+b" Aprono un file in modifica, rispettivamente testuale e binario, e ne consentono l’aggiornamento senza azzerare i contenuti
# Posizionamento nel file tell() Ritorna la posizione attuale del cursore all’interno del file seek(pos, rel) Sposta la posizione del cursore all’interno del file, con il primo parametro indichiamo il numero di byte (positivo o negativo) di cui vogliamo spostarci, il secondo parametro indica il punto di partenza ( 0=dell’inizio del file; 1=dalla posizione attuale; 2:dalla fine del file) read(N) Legge N bytes dalla posizione corrente e sposta il cursore avanti di N posizioni
CICLI
IF-ELIF-ELSE if condizione1: <gruppo di istruzioni 1> elif condizione2: # opzionale <gruppo di istruzioni 2> ... elif condizione(n-1): # opzionale <gruppo di istruzioni (n-1)> else: # opzionale <gruppo di istruzioni n>
WHILE while condizione: <gruppo di istruzioni>
FOR for <contatore del ciclo> in <lista>: <gruppo di istruzioni> for i in range(10): print(i)
USCIRE DAI CICLI break permette di saltare fuori da un ciclo ignorando le restanti istruzioni da eseguire continue permette di saltare alla prima istruzione della prossima iterazione del ciclo else sia il ciclo for che il ciclo while hanno un costrutto aggiuntivo opzionale che permette di eseguire un blocco di istruzioni all’uscita dal ciclo, queste istruzioni vengono ignorate se usciamo dal ciclo con un break L'operazione pass non fa nulla.
COMPREHENSION
Permetto di creare una nuova lista o dizionario da uno vecchio
lista = [espressione for variabile in altra_lista if espressione] ESEMPIO euro = [2.5, 3.7, 20.9] dollaro = [x*1.3 for x in euro] diz = {espr_chiave : espr_valore for espr_chiave, espr_valore in altro_diz if espressione} diz = {espr_chiave : espr_valore for variabile in altra_lista if espressione}
FUNZIONI
def nome_funzione(<lista parametri separati da virgola>) <blocco istruzioni> return <risultato>
SCOPE Quando si utilizza una variabile, Python cerca prima il nome di quella variabile nel namespace locale. Se la ricerca non da esito positivo, si prosegue con il namespace globale e solo successivamente si va a cercare il nome tra le funzioni builtin (cioè quelle predefinite in python stesso). Questo meccanismo permette di utilizzare il valore delle variabili globali, ma di non poterle mai modificare, in quanto un nuovo assegnamento alla variabile provoca la creazione dello stesso nome in un namespace nuovo. Attenzione che i metodi cambiano l'oggetto in sé. Le assegnazioni o riassegnazioni creano un nuovo oggetto.
Parametri opzionali def funzione2(a, b=30): print(a,b)
Parametri con numero indefinito tipo tupla def trantupla(*tupla): print(tupla) print(type(tupla)) trantupla('uno', 'due', 'tre')
Parametri con numero indefinito tipo dizionario def trandizionario(**dizionario): print(dizionario) print(type(dizionario)) trandizionario(primo=1, secondo=2, terzo=3)
MODULI
Collezioni di funzioni. File pippo.py Per usarlo scrivere import pippo (senza estensione) Per usare le funzioni pippo.funzione1(....) Oppure se si importa così from pippo import funzione1 oppure from pippo import * si possono richiamare le funzioni senza la dot notation I MODULI SONO UTILI ANCHE PER VELOCIZZARE. PYC non viene ricreato. Moduli standard: string, sys, os CAPIRE IL NAMESPACE! MODULI STANDARD (non c'è bisogno di importarli): str....
ECCEZIONI
try: <gruppo di istruzioni sotto test> except: <gruppo di istruzioni da eseguire in caso di errore> else: # opzionale <gruppo di istruzioni da eseguire se non c'è stata alcuna eccezione> finally: # opzionale, al posto di except <gruppo di istruzioni da eseguire anche se il try non ha dato alcuna eccezione>
MATPLOTLIB
plt.plot(Xlista,Ylista) # 2D normale plt.scatter(Xlista,Ylista) # 2D scatter X,Y = np.meshgrid(x,y) plt.imshow(Zlista,interpolation='nearest', cmap='...', origin='lower')