Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Teoria ed esercizi linguaggio Python, Esercizi di Fondamenti di informatica

Appunti relativi all'esame di "Fondamenti di Informatica" sul linguaggio Python. Gli appunti vertono SOLO sulla spiegazione della teoria del linguaggio di programmazione e sulla sua applicazione agli esercizi. I macro argomenti trattati sono: -- Principali tipi di dato -- Istruzioni principali -- Strutturazione dei programmi -- Accesso ai file Maggiori informazioni sul contenuto al seguente disponibili cercando Giorgio Fumera Unica, nella sezione insegnamenti Fondamenti di Informatica.

Tipologia: Esercizi

2018/2019

In vendita dal 29/01/2023

Francesca19899
Francesca19899 🇮🇹

5

(4)

14 documenti

1 / 35

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
FONDAMENTI DI INFORMATICA
Sintassi:
Per commentare un codice si usa “#”. Si usano per mandare a schermo un qualsiasi qualcosa.
Indentazione:
“Indentare” significa avere il codice strutturato con spazi (rientri). Fondamentalmente si usa per rendere
più leggibile un codice.
Variabili
Una variabile possiamo definirla come un contenitore di un valore (o collezioni di valori) variabile. Ad
esempio, la variabile “X” può essere utilizzata per indicare il peso di un individuo, senza doverlo andare a
ripescare ogni volta durante la scrittura del codice.
Nota: una variabile può essere creata solo nel momento in cui si abbia almeno un valore da assegnargli.
Nomi legali per le variabili:
pesopersona
_peso_persona
PESOPERSONA
Nomi illegali per variabili:
peso-persona
peso persona
2pesopersona
Nota: Python è case sensitive!
Si può assegnare il valore a più variabili assieme:
Che è uguale a scrivere i singoli valori uno ad uno.
Si può anche assegnare lo stesso valore per più variabili nel seguente modo:
Tipi di dati in Python
Se non sappiamo che tipo di dato contenga una variabile possiamo usare la funzione “type” nel seguente
modo:
In questo caso la risposta di Python sarà “int”.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23

Anteprima parziale del testo

Scarica Teoria ed esercizi linguaggio Python e più Esercizi in PDF di Fondamenti di informatica solo su Docsity!

FONDAMENTI DI INFORMATICA

Sintassi: Per commentare un codice si usa “#”. Si usano per mandare a schermo un qualsiasi qualcosa. Indentazione: “Indentare” significa avere il codice strutturato con spazi (rientri). Fondamentalmente si usa per rendere più leggibile un codice.

Variabili

Una variabile possiamo definirla come un contenitore di un valore (o collezioni di valori) variabile. Ad esempio, la variabile “X” può essere utilizzata per indicare il peso di un individuo, senza doverlo andare a ripescare ogni volta durante la scrittura del codice. Nota: una variabile può essere creata solo nel momento in cui si abbia almeno un valore da assegnargli. Nomi legali per le variabili: pesopersona _peso_persona PESOPERSONA Nomi illegali per variabili: peso-persona peso persona 2pesopersona Nota: Python è case sensitive! Si può assegnare il valore a più variabili assieme: Che è uguale a scrivere i singoli valori uno ad uno. Si può anche assegnare lo stesso valore per più variabili nel seguente modo:

Tipi di dati in Python

Se non sappiamo che tipo di dato contenga una variabile possiamo usare la funzione “type” nel seguente modo: In questo caso la risposta di Python sarà “int”.

Infatti, i tipi di dato che possiamo avere con Python sono:

  • Interi (int)
  • Numeri con virgola (float)
  • Stringa (str)
  • Booleani (bool)
  • Liste (list)
  • Tuple (tuple)
  • Dictionary (dict)
  • Set (set)
  • Range Il “casting” viene utilizzato per convertire il valore di una variabile in un altro (es. da float a int). Se provassimo a fare la seguente operazione: Python darebbe un segnale di errore; è infatti impossibile fare operazioni del genere con valori di tipo diverso. Di fatti il primo valore è una stringa, mentre il secondo un intero. Per poter concatenare valori di tipo diverso dobbiamo fare il casting, come nel seguente esempio: Abbiamo imposto che il valore relativo alla variabile y, ovvero il 5, sia visto come una stringa. Stessa cosa al contrario: Stringhe: Le stringhe nei codici di Python sono introdotte dagli apici o dai doppi apici: I precedenti esempi sono detti a “singola linea”, ciò significa che se andassi a capo e continuassi a scrivere dell’altro testo, questo non sarebbe conteggiato. Questo problema può essere risolto tramite l’utilizzo di tripli doppi apici (o apici): Le stringhe vengono trattate come degli Array. Si intende che ogni stringa può essere vista come un insieme di caratteri; quindi, possiamo accedere ad ognuno di essi tramite indicizzazione. Testo Numeri (positivi o negativi), ma sempre interi Numeri (positivi o negativi), ma sempre decimali Valori booleani (vero o falso) Collezioni di dati

Con la funzione “replace” possiamo andare a sostituire qualcosa nella nostra stringa: Con la precedente funzione siamo andati infatti a sostituire tutte le “o” presenti in x con delle “w”, per cui Python stamperà “Ciao ho fame”. Abbiamo già detto che non vi è la possibilità di concatenare tipi di dati diversi, se volessimo fare una cosa del genere dovremmo utilizzare la funzione “format”: In questo modo verrebbe stampato “Ciao sono Luca e sono nato il 15”. Questo può essere anche fatto come variabile nel seguente modo: Possiamo fare lo stesso ragionamento nel caso di più valori e anche tramite indicizzazione: E quello che otterremmo sarebbe “Ciao sono Luca e sono nato il 1.70, peso 15 e altezza 65”. Poniamo il caso noi scriviamo una stringa tra i doppi apici e dobbiamo usare le virgolette. Per fare una cosa del genere usiamo l’”escape” dei caratteri, ovvero il back slace (): Così che venga stampato “Ciao sono luca e sono “figo””. La stessa cosa viene fatta nel caso di singoli apici: E in questo modo sarà stampato “Sono alla ricerca dell’amore”. La funzione eval: La funzione “eval” può quindi essere usata per “convertire” in valori numerici i dati acquisiti mediante la funzione input. Nelle istruzioni di assegnamento che hanno lo scopo di acquisire valori numerici tramite input, la funzione eval può essere usata in combinazione con input, in un’unica espressione come nel seguente esempio: (Il discorso verrà ripreso in seguito).

Boolean: I valori booleani altro non sono che vero o falso, e sono essenziali nelle condizioni if. Nel precedente esempio si è chiesto al programma se realmente 5 sia minore di 10, e Python per tutta risposta ha stampato “True”. Ma vediamo un altro esempio con gli if (che verranno ripresi dopo): La precedente condizione ha riportato come valore booleano True, per cui Python stamperà “Sono minore di 10”. È possibile anche valutare i valori delle variabili: Attenzione perché non è molto intuitivo, in questo caso Python stamperà “True”, mentre nel caso di 0 stamperà “False”. Ci sono una serie di valori che Python valuterebbe con “False”, questa viene di seguito riportata: False: bool(False) bool(0) bool(None) bool(“”) bool([]) bool(()) bool({}) Ma ritorniamo agli if: In questo caso, essendo il valore 0 associato a “False”, Python stamperà “Bisogna andare a prendere il pane”; infatti la condizione è: se pane è vero stampa “Non c’è bisogno…”, sennò stampa “Bisogna andare…”. Operazioni aritmetiche Come operatori aritmetici abbiamo:

  • Somma (+) Classica operazione, non si dovrebbe riscontrare alcun problema: Il cui ovvio risultato è 11.
  • Sottrazione (-) Risultato – 1.

Abs; restituire il valore assoluto di un numero: Per cui il valore che restituirà sarà 7. Pow; che sta per potenza e ne restituisce il risultato: Il cui ovvio risultato è 25. In particolare, nel caso di un confronto tra due valori di tipo stringa, gli operatori <=, >= e > si riferiscono all’ordinamento alfabetico, con la convenzione che le cifre precedono le (sono “minori” delle) lettere maiuscole, le quali a loro volta precedono le lettere minuscole.

Condizioni con if, elif, else

Parliamo dell’espressione condizionale if , è utilizzato come a dire “se la condizione è verificata esegui questa operazione, sennò quest’altra operazione”. Nel caso di esito negativo sarebbe stata stampata solo la seconda frase, in quanto fuori dall’if. Operatori di comparazione:

  • Uguale (==); viene utilizzato per dire che, ad esempio, una variabile è uguale ad un dato valore: Il programma stamperà “Condizione verificata”.
  • Diverso (!=); viene utilizzata per dire che, ad esempio, una variabile è diversa ad un dato valore: Il programma stamperà “Condizione verificata”.
  • Minore (<); viene utilizzato per dire che, ad esempio, una variabile è minore ad un dato valore: Il programma stamperà “Condizione verificata”.
  • Minore o uguale (<=); viene utilizzato per dire che, ad esempio, una variabile è minore o uguale ad un dato valore: Il programma stamperà “Condizione verificata”.
  • Maggiore (>); viene utilizzato per dire che, ad esempio, una variabile è maggiore ad un dato valore: Il programma stamperà “Condizione verificata”.
  • Maggiore o uguale (>=); viene utilizzato per dire che, ad esempio, una variabile è maggiore o uguale ad un dato valore: Il programma stamperà “Condizione verificata”. Parliamo adesso della condizione else, è utilizzato come a dire “se la condizione non è verificata esegui questo, sennò quest’altra operazione”. Per cui il programma stamperà “Condizione NON verificata”. Possiamo però voler avere più condizioni, quindi voler valutare più cose; per questo viene utilizzato elif che non è altro che un “else if” in forma contratta: Nell’ultimo esempio si ha una prima condizione con l’istruzione if, non essendo verificata si passa alla seconda condizione con l’istruzione elif, anche questa non è verificata per cui si passa all’ultima condizione con l’istruzione else e verrà stampato “Maggiore di 10”. Utilizziamo adesso l’istruzione and , che viene utilizzata per legare due condizioni che devono essere verificate per dare risultato positivo: Nel precedente esempio la prima condizione è verificata (x > 10), mentre la seconda no (y > 10), per cui verrà stampata soltanto la stringa dell’istruzione else, ovvero “Non verificata”. Utilizzando invece l’istruzione or , che viene utilizzata per legare due condizioni per cui almeno una deve essere verificata per dare risultato positivo:

La prossima istruzione è continue , che viene usata come a dire “se questa condizione è verificata passo oltre”, ovvero per passare alla prossima iterazione: Per cui verranno stampati tutti i numeri da 1 a 6 escluso il 3. Anche in questo caso viene utilizzata l’istruzione else a fine di una condizione: Per cui verranno stampati tutti i numeri da 1 a 5 ed infine “Ho finito”.

Ciclo for

Il for viene utilizzato per iterare una sequenza, avendo già una lista di valori: E in questo modo verrebbero stampati “Milano, Roma, Napoli”. In questo esempio, nella seconda riga la parola “città” viene utilizzata ad indicare gli elementi della “lista_città”, in questo senso avremmo potuto utilizzare qualsiasi termine. Altro esempio: In questo caso abbiamo preso una stringa, composta da una sola parola “Anguria” e abbiamo mandato in stampa le singole lettere; il risultato per cui saranno le lettere “A n g u r i a”. Altro esempio: In questo caso non esiste un insieme di elementi, ma viene creato automaticamente; si tratta di sei valori che partono da zero (0, 1, 2, 3, 4, 5). Esattamente come nel ciclo while, anche nel for possono essere utilizzate le funzioni else, continue, break:

Collezioni di dati

Parliamo ora delle collezioni di dati che abbiamo già introdotto precedentemente: liste, tuple, set e dictionary. Una collezione di dati è ciò che distingue questi tipi di dati dai dati delle variabili normali, le quali possono avere un singolo valore; per fare ciò dobbiamo trasformare questi valori in queste collezioni. Liste: Le liste sono collezioni di dati ordinata (quindi indicizzate) e modificabili; inoltre permettono duplicati. Gli elementi che compongono una lista sono contenuti all’interno di parentesi quadre, e possono essere elementi di tipo diverso. Tramite l’istruzione “type”, come abbiamo già detto viene riportato il tipo di collezione, in questo caso una lista: Allo stesso modo, con l’istruzione ”len” viene riportata la lunghezza (quantità di elementi) della lista, in questo caso 3: Infine, tramite l’istruzione “list” è possibile creare una lista, per cui verrà stampato [‘Milano’, 98, 0.8]: Per accedere agli elementi si userà lo stesso metodo delle stringhe, per cui volendo stampare il primo elemento dovremmo fare come segue: Stessa cosa per i range, per cui volendo stampare solo un determinato numero di elementi di una lista, ad esempio i primi due dovremmo fare come segue: Nota: l’estremo finale non è mai incluso! È possibile anche modificare gli elementi presenti in una lista, ad esempio se volessimo avere come primo elemento Roma, e non più Milano, dovremmo fare nel seguente modo: In questo modo, la lista che verrà stampata sarà [‘Roma’, 98, 0.8]. Allo stesso modo si può fare utilizzando i range:

Un altro metodo, più complesso, per mandare a schermi gli elementi di una lista potrebbe essere: Modificare l’ordine

  • Con l’istruzione “sort” andiamo ad ordinare in modo alfanumerico la lista. In questo modo, la lista che verrà stampata sarà [‘Ancona’, ’Bari’, ’Milano’, ’Napoli’]. Copiare una lista
  • Se io imponessi che una lista sia uguale ad un’altra già esistente, e ne modificassi un elemento nella prima, essendo presente un collegamento fra le due liste andrei a modificare lo stesso elemento anche nella seconda lista, come segue: Per cui la lista che verrà stampata sarà [‘New York’, ‘Bari’, ‘Napoli’, ‘Milano’]. Se volessimo evitare ciò, dovremmo utilizzare l’istruzione “copy” come segue: In questo modo, la lista che verrà stampata sarà [‘Ancona’, ‘Bari’, ‘Napoli’, ‘Milano’] poiché la lista viene prima copiata e poi modificata. Unire più liste
  • Una delle vie più semplici per questo scopo è semplicemente sommare due liste tramite +. Per cui la lista che verrà stampata sarà [‘Ancona’, ‘Bari’, ‘Napoli’, ‘Milano’, ‘Venezia’, ‘Parma’].
  • Con l’istruzione “append” già vista è possibile ottenere lo stesso effetto. La lista che verrà stampata sarà di nuovo [‘Ancona’, ‘Bari’, ‘Napoli’, ‘Milano’, ‘Venezia’, ‘Parma’].
  • Stesso fine si ottiene con l’istruzione “extend”, anche lei già vista. La lista che verrà stampata sarà sempre [‘Ancona’, ‘Bari’, ‘Napoli’, ‘Milano’, ‘Venezia’, ‘Parma’].

La funzione predefinita “split” suddivide una stringa in corrispondenza dei caratteri di spaziatura (incluso il newline) e restituisce una lista contenente le corrispondenti sottostringhe, nelle quali non vendono inclusi i caratteri di spaziatura: Se si desidera suddividere una stringa in corrispondenza di una sequenza di uno o più caratteri qualsiasi, tale sequenza dovrà essere indicata (sotto forma di stringa) come argomento di split: Nota: i caratteri di separazione non vengono inclusi nel risultato. Tuple: Le tuple sono collezioni di dati ordinate (quindi indicizzate) ma immutabili; inoltre permettono duplicati. Quindi, differentemente, dalle liste queste non possono essere modificate. Gli elementi che compongono una tupla sono contenuti all’interno di parentesi tonde, e possono essere elementi di tipo diverso. Tramite l’istruzione “type”, come abbiamo già detto viene riportato il tipo di collezione, in questo caso una tuple: Nota: una tupla per esistere deve presentare più di un elemento, sennò diventerebbe una semplice assegnazione ad una variabile. In particolar modo, è necessaria la presenza di una virgola! Allo stesso modo, con l’istruzione ”len” viene riportata la lunghezza (quantità di elementi) della tupla, in questo caso 3: Infine, tramite l’istruzione “tuple” è possibile creare una tupla, per cui verrà stampato (‘Milano’, True, 8). Per accedere agli elementi si userà lo stesso metodo delle stringhe, per cui volendo stampare il primo elemento dovremmo fare come segue: Stessa cosa per i range, per cui volendo stampare solo un determinato numero di elementi di una tupla, ad esempio i primi due dovremmo fare come segue: Nota: l’estremo finale non è mai incluso! Se volessimo verificare che un elemento sia presente all’interno di una tupla dovremmo fare come segue invece:

Aggiungere elementi

  • La funzione “add” permette di aggiungere elementi in ordine casuale ad un set già esistente: Per cui il programma potrebbe stampare ad esempio {“Roma”, “Napoli”, “Venezia”, “Milano”}.
  • L’istruzione “update” invece permette di unire due set esistenti: Per cui uno dei possibili set che verrebbe stampato potrebbe essere {‘Milano’, ‘Napoli’, ‘Parma’, ‘Roma’, ‘Venezia’}. Rimuovere elementi
  • L’istruzione “remove” permette di eliminare un elemento che viene specificato: Così facendo il set che verrà stampato potrebbe essere ad esempio {‘Parma’, ‘Milano’, ‘Roma’}.
  • L’istruzione “discard” funziona esattamente come la precedente funzione, ovvero andando a specificare l’elemento lo elimina dal set. La differenza fondamentale è che l’istruzione “discord”, nel caso si cerchi di eliminare un elemento che non è presente all’interno del set riporterà il set intero, non andando a togliere nulla ovviamente; mentre l’istruzione “remove” riporterà un segnale di errore.
  • L’istruzione “pop” rimuove l’ultimo elemento del set, ma essendo questi non ordinati la scelta risulta essere casuale: In questo caso il programma, infatti, ha stampato {‘Milano’, ‘Roma’, ‘Parma’}.
  • L’istruzione “clear” elimina tutti gli elementi del set: Per cui verrà stampato “set()”.
  • Infine, l’istruzione “del” verrà eliminato tutto il set, per cui mandando in stampa il precedente set, il programma riporterà un messaggio di errore: Unione di più set
  • Con l’istruzione “union” si andrà a creare un nuovo set, dato dall’unione (sempre in ordine casuale), di due set esistenti: Per cui, in questo caso verranno stampati {‘Milano’, ‘Parma’, ‘Venezia’, ‘Roma’, ‘Genova’, ‘Napoli’}.
  • La funzione “update” di cui abbiamo parlato col fine di aggiungere elementi può essere utilizzata anche in questo caso. Nota: sia la funzione “update” che “union” escludono gli elementi dupplicati. Dictionary: Sono collezioni ordinate e modificabili, ma non permettono duplicabili. Gli elementi che compongono un dictionary sono contenuti all’interno di parentesi graffe, come nel caso dei set, ma a differenza di questi andiamo a definire una chiave ed un valore. Nota: due dizionari sono considerati identici se contengono le stesse coppie chiave/valore, indipendentemente dal loro ordine. Creare un dictionary Se volessimo creare un dict, con i dati relativi ad una persona, ad esempio, una delle possibili vie sarebbe la seguente: Dove “Nome”, “Cognome” e “Età” rappresentano le chiavi, mentre “Gianraffaele”, “Rossi” e 25 rappresentano i valori. Quello che verrà stampato da Python sarà {‘Nome’ : ‘Gianraffaele’, ‘Cognome’ : ‘Rossi’, ‘Età’ : 25}. Tramite l’istruzione “type”, come abbiamo già detto viene riportato il tipo di collezione, in questo caso un dict: Allo stesso modo, con l’istruzione ”len” viene riportata la lunghezza (quantità di elementi) del dictionary, in questo caso 3: Accedere agli elementi
  • Se volessimo accedere agli elementi dovremmo farlo tramite la chiave, come in questo caso: Per cui il programma stamperà “Gianraffaele”.

Rimuovere elementi

  • Tramite l’istruzione “pop” possiamo andare a rimuovere un elemento specifico: Così facendo il programma stamperà {‘Nome’ : ‘Gianraffaele’, ‘Cognome’ : ‘Rossi’}.
  • L’istruzione “clear” elimina tutti gli elementi del dict: Per cui verrà stampato “{}”.
  • Infine, l’istruzione “del” verrà eliminato tutto il dict, per cui mandando in stampa il precedente dict, il programma riporterà un messaggio di errore: Ciclare elementi
  • Se volessimo mandare a schermo gli elementi presenti all’interno di un dict esistente potremmo fare come segue: In questo modo verranno mandate a schermo solo le chiavi, ovvero “Nome Cognome Età”.
  • Se volessimo mandare a schermo le coppie di valori del dict esistente invece potremmo fare come segue: Così facendo il programma stamperà “Gianraffaele Rossi 25”. Copiare dict Se volessimo copiare un dict esistente potremmo utilizzre l’istruzione “copy”: Per cui ciò che verrà mandato a schermo sarà {‘Nome’ : ‘Gianraffaele’, ‘Cognome’ : ‘Rossi’, ‘Età’ : 25}.

Dict annidati È possibile anche avere dei dict all’interno di altri dict (dict annidati) un esempio è il seguente: Per cui ciò che verrà mandato a schermo sarà {‘Nome’ : ‘Gianraffaele’, ‘Cognome’ : ‘Rossi’, ‘Età’ : 25, ‘Indirizzo’ : {‘Città’ : ‘Cagliari’, ‘CAP’ : ‘09121’, ‘Civico’ : 5}}. Altro esempio:

Le funzioni

Le funzioni disponibili in un linguaggio di programmazione sono dette predefinite e l’insieme di tali funzioni viene detto libreria. Tutti i linguaggi di programmazione consentono inoltre ai programmatori di definire nuove funzioni. In questo corso si utilizzeranno due librerie:

  • Funzioni matematiche (libreria math); Nota: tutte le funzioni di questa libreria restituiscono un numero frazionario. Oltre alle varie funzioni, nella libreria math sono definite due variabili che contengono il valore (approssimato) delle costanti matematiche 𝜋 (3,14) ed ℯ (la base dei logaritmi naturali: 2,71).