

























Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
perfetto per esame in python per il tuo esame, ecco come uscire dall'incubo
Tipologia: Appunti
1 / 33
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


























In offerta
print e input. Queste funzioni servono rispettivamente a mostrare e a chiedere valori all’utente. PRINT Abbiamo già visto, nelle passate lezioni, la funzione print, che serve a “stampare” in output (tipicamente sullo schermo) il valore di una variabile o di una espressione. ESEMPIO: >>> a = 12 >>> b = 3 >>> print(a, b, a-b) 12 3 9 >>> >>> c = 'Hello' >>> print(c, 'World!') Hello World! Si può notare che la funzione print accetta in input un numero variabile di argomenti (anche di tipi diversi), li converte in stringhe, e li mostra in output separati da uno spazio e seguiti da un carattere di ritorno a capo (\n). ATTENZIONE Quando si lavora dall’interprete interattivo non è necessario utilizzare print per vedere il valore di una variabile o espressione, ma è sufficiente digitarla, questa possibilità è disponibile solo dall’interprete interattivo; quando si esegue un programma, invece, è necessario utilizzare print esplicitamente.
La funzione input viene usata per consentire all’utente di immettere dati da tastiera, che verranno poi utilizzati dal programma. input accetta un singolo argomento opzionale: una stringa che viene mostrata a video prima di leggere il valore digitato. Una volta che l’utente ha digitato un valore e premuto il tasto Invio, input restituisce il valore come stringa, come mostra il seguente esempio: ESEMPIO >>> nome = input('Inserisci il tuo nome: ') Inserisci il tuo nome: Ezio >>> nome 'Ezio' Nell'esempio sopra possiamo vedere che:
Questo significa che, in Python, l’indentazione è significativa, e che indentare in modo incorretto può portare a comportamenti sbagliati del programma o a errori. Vediamo un semplice esempio. Di seguito usiamo il costrutto if. ESEMPIO print("eseguito sempre all'inizio") if condizione: print('eseguito in mezzo solo se la condizione è vera') print('eseguito in mezzo solo se la condizione è vera') print('eseguito in mezzo solo se la condizione è vera') print('eseguito sempre alla fine') Nell'esempio sopra possiamo vedere che:
Per definire variabili in Python, è sufficiente utilizzare l’operatore di assegnamento (=): ESEMPIO numero = 10 stringa = "Python" lista = [1, 2, 3] Come si vede, in Python non è necessario né definire le variabili prima di utilizzarle, né specificare il loro tipo. ESEMPIO x = 10 x = "Python" x = [1, 2, 3] In questo esempio la variabile/etichetta x viene “spostata” dall’intero 10 alla stringa "Python" , e infine alla lista [1, 2, 3].
In Python è possibile usare il carattere # per aggiungere commenti al codice. Ogni riga di commento deve essere preceduta da un #, ed è anche possibile aggiungere commenti in seguito a istruzioni: **ESEMPIO
a = 3 # questo commento segue un'istruzione** Python ignorerà automaticamente tutto ciò che segue il carattere # fino al termine della riga. NUMERI E OPERATORI LOGICI Abbiamo anche visto che è possibile usare l’interprete interattivo come una calcolatrice, e come convertire diversi tipi di dato. È inoltre possibile definire numeri interi usando la notazione binaria, ottale, ed esadecimale: *ESEMPIO >>> 6 + 4 18 >>> 9 / 2 # la divisione tra due numeri interi restituisce un float
>>> 2j * 2j # moltiplicazione tra numeri complessi (-4+0j) >>> int(10.6) # conversione esplicita dal tipo float al tipo int 10 >>> float(20) # conversione esplicita dal tipo int al tipo float
>>> 0b11111111 # intero in notazione binaria (prefisso 0b) 255 >>> 0o377 # intero in notazione ottale (prefisso 0o) 255 >>> 0xFF # intero in notazione esadecimale (prefisso 0x) 255 Operatori Aritmetici** Le operazioni sui tipi numerici sono le più classiche:
Operatore Descrizione Esempi
x >> n esegue uno shift a destra di n posizioni dei bit di x x & y esegue un and tra i bit di x e di y x | y esegue un or tra i bit di x e di y x ^ y esegue un or esclusivo tra i bit di x e di y ~x inverte i bit di x STRINGHE Abbiamo già visto che per dichiarare una stringa è sufficiente assengare ad una nuova variabile un testo racchiuso tra virgolette: è possibile racchiudere il suo valore indifferentemente tra apici (carattere ') o doppi apici (carattere "). Questo permette di superare facilmente il problema dell’utilizzo dei suddetti caratteri nel valore stesso della stringa, ad esempio "l'acqua" o 'Egli disse: "Acqua"'. È anche possibile usare il carattere di escape \ prima di ' o ": 'Egli disse: "L'acqua"'. Le stringhe, così come le liste o le tuple, sono un tipo particolare di sequenze e perciò supportano tutte le operazioni comuni alle sequenze. Index e Slicing In Python, è possibile accedere agli elementi di una sequenza, usando la sintassi sequenza[indice]. Questo restituirà l’elemento in posizione indice (il primo elemento ha sempre indice 0 ). È inoltre possibile specificare indici negativi che partono dalla fine della sequenza (l’ultimo elemento ha indice - 1 , il penultimo - 2 , ecc.). Questa operazione è chiamata indexing. ESEMPIO >>> s = 'Python' >>> s[0] # elemento in posizione 0 (il primo) 'P' >>> s[5] # elemento in posizione 5 (il sesto)
'n' >>> s[-1] # elemento in posizione - 1 (l'ultimo) 'n' >>> s[-4] # elemento in posizione - 4(il quartultimo) 't' La sintassi sequenza[inizio:fine] ci permette di ottenere una nuova sequenza dello stesso tipo che include tutti gli elementi partendo dall’indice inizio (incluso) all’indice fine (escluso). Se inizio è omesso, gli elementi verranno presi dall’inizio, se fine è omesso, gli elementi verranno presi fino alla fine. Questa operazione è chiamata slicing (letteralmente “affettare”) ESEMPIO >>> s = 'Python' >>> s[0:2] # sottostringa con elementi da 0 (incluso) a 2 (escluso) 'Py' >>> s[:2] # dall'inizio all'elemento con indice 2 (escluso) 'Py' >>> s[3:5] # dall'elemento con indice 3 (incluso) a 5 (escluso) 'ho' >>> s[4:] # dall'elemento con indice 4 (incluso) alla fine 'on' >>> s[-2:] # dall'elemento con indice - 2 (incluso) alla fine 'on' Concatenamento, Ripetizione e Lunghezza È possibile usare l’operatore + per concatenare sequenze, e * per ripetere sequenze: ESEMPIO >>> 'Py' + 'thon' 'Python' >>> 'Py' * 2 'PyPy' >>> 'Ba' + 'na' * 2 'Banana'
I metodi sono simili alle funzioni ma sono legati al tipo dell’oggetto e hanno una sintassi diversa: oggetto.metodo(argomenti). Così come le funzioni, i metodi possono accettare 0 o più argomenti: ESEMPIO >>> s = 'Python' >>> s.upper() # il metodo upper ritorna una nuova stringa tutta uppercase 'PYTHON' >>> s.lower() # il metodo lower ritorna una nuova stringa tutta lowercase 'python' In questo esempio potete vedere due metodi forniti dal tipo str, che non sono disponibili per altri tipi. Help() e Dir() Due strumenti particolarmente utili per lavorare con funzioni e metodi sono le funzioni built-in help() e dir(). help(oggetto) restituisce una breve spiegazione riguardo all’oggetto passato come argomento. dir(oggetto) restituisce una lista di metodi e attributi dell’oggetto: **ESEMPIO >>> len # len è una funzione built-in
>>> help(len) # si può passare len a help() per vedere una breve spiegazione Help on built-in function len in module builtins: len(obj, /) Return the number of items in a container. >>> dir(str) # restituisce una lista di metodi e attributi di str [..., 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper',**
**'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] >>> str.upper # upper è un metodo di str
>>> help(str.upper) # si può passare a help() per vedere una breve spiegazione Help on method_descriptor: upper(...) S.upper() - > str Return a copy of S converted to uppercase.** Questi strumenti vi consentono di esplorare interattivamente funzioni e metodi e capirne il funzionamento: ESEMPIO >>> help(str.replace) # visualizza l'help per il metodo str.replace Help on method_descriptor: replace(...) S.replace(old, new[, count]) - > str Return a copy of S with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced. >>> 'Python'.replace('thon', 'Py') # sostituisce 'thon' con 'Py' in 'Python' 'PyPy' >>> s = 'Python, Python, Python!' >>> s.replace('thon', 'Py', 2) # come sopra, ma massimo 2 sostituzioni 'PyPy, PyPy, Python!' Formattazione delle Stringhe La maggior parte dei metodi delle stringhe sono semplici da capire. C’è tuttavia un metodo che richiede una spiegazione più dettagliata: str.format(). Questo metodo permette di formattare stringhe,
Python fornisce anche un tipo built-in chiamato lista, che viene solitamente usato per rappresentare una sequenza mutabile di oggetti, in genere omogenei. Definire le Liste Le liste vengono definite elencando tra parentesi quadre ([]) una serie di oggetti separati da virgole (,). È possibile creare una lista vuota usando le parentesi quadre senza nessun elemento all’interno. **ESEMPIO >>> nums = [0, 1, 2, 3] # nuova lista di 4 elementi >>> nums [0, 1, 2, 3] >>> type(nums) # verifichiamo che il tipo sia "list"
>>> empty = [] # nuova lista vuota >>> empty [] >>> one = ['Python'] # nuova lista con un elemento >>> one ['Python'] Usare le Liste** Così come le tuple e le stringhe, anche le liste sono un tipo di sequenza, e supportano quindi le operazioni comuni a tutte le sequenze, come indexing, slicing, contenimento, concatenazione, e ripetizione: ESEMPIO >>> letters = ['a', 'b', 'c', 'd', 'e']
>>> letters[0] # le liste supportano indexing 'a' >>> letters[-1] 'e' >>> letters[1:4] # slicing ['b', 'c', 'd'] >>> 'a' in letters # gli operatori di contenimento "in" e "not in" True >>> letters + ['f', 'g', 'h'] # concatenazione (ritorna una nuova lista) ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] >>> [1, 2, 3] * 3 # ripetizione (ritorna una nuova lista) [1, 2, 3, 1, 2, 3, 1, 2, 3] Le liste supportano anche funzioni e metodi comuni alle altre sequenze: len() per contare gli elementi, min() e max() per trovare l’elemento più piccolo/grande (a patto che i tipi degli elementi siano comparabili), .index() per trovare l’indice di un elemento, e .count() per contare quante volte un elemento è presente nella lista: ESEMPIO >>> letters = ['a', 'b', 'c', 'b', 'a'] >>> len(letters) # numero di elementi 5 >>> min(letters) # elemento più piccolo (alfabeticamente nel caso di stringhe) 'a' >>> max(letters) # elemento più grande 'c' >>> letters.index('c') # indice dell'elemento 'c' 2 >>> letters.count('c') # numero di occorrenze di 'c' 1 >>> letters.count('b') # numero di occorrenze di 'b' 2 A differenza di tuple e stringhe che sono immutabili, le liste possono essere mutate. È quindi possibile assegnare un nuovo valore agli
'f' >>> letters.pop(0) # rimuove e ritorna l'elemento in posizione 0 ('a') 'a' >>> letters.remove('d') # rimuove l'elemento 'd' >>> letters ['b', 'c', 'e'] >>> letters.reverse() # inverte l'ordine "sul posto" e non ritorna niente >>> letters # gli elementi sono ora in ordine inverso ['e', 'c', 'b'] >>> letters[1] = 'x' # sostituisce l'elemento in posizione 1 ('c') con 'x' >>> letters ['e', 'x', 'b'] >>> del letters[1] # rimuove l'elemento in posizione 1 ('x') >>> letters ['e', 'b'] >>> letters.clear() # rimuove tutti gli elementi rimasti >>> letters [] Alcuni di questi metodi accettano anche argomenti aggiuntivi che potrete vedere usando help(list.metodo) può essere rappresentata con una lista (es. ['John', 'Jane', 'Jack', ...]]) di lunghezza variabile (persone possono essere aggiunte o tolte) e elementi omogenei (la colonna del nome ha solo stringhe, quella dell’età solo numeri) che vengono accessi tramite iterazione (es. stampare la lista di cognomi usando un loop).
È inoltre possibile combinare i due tipi e rappresentare l’intera tabella come una lista di tuple: ESEMPIO [('John', 'Smith', 20), ('Jane', 'Johnson', 30), ('Jack', 'Williams', 28), ...]
Il costrutto if-elif-else permette di eseguire istruzioni o gruppi di istruzioni diverse a seconda del verificarsi di una o più condizioni. La forma più semplice prevede l’uso di un if seguito da una condizione, dai due punti (:) e da un blocco di codice indentato che viene eseguito solo se la condizione è vera: ESEMPIO if condizione: