Scarica Programmazione Python Completa: teoria, esercizi, quiz e progetti svolti e più Dispense in PDF di Programmazione Avanzata solo su Docsity!
Materiale indipendente di supporto allo studio - non ufficiale del Politecnico di Torino
PROGRAMMAZIONE PYTHON
COMPLETA
Teoria, esercizi svolti, programmazione a oggetti, quiz, domande d'esame e
progetti pratici
Corso di laurea: Informatica - Livello: Laurea Triennale
Universita' di riferimento: Politecnico di Torino
Manuale premium indipendente per preparazione d'esame
Avvertenza e metodo d'uso
Questo documento e' un manuale indipendente di supporto allo studio: non e' materiale ufficiale del Politecnico di Torino e non sostituisce programma, dispense, lezioni o indicazioni dei docenti. E' progettato come prodotto premium per studenti che vogliono una preparazione completa e progressiva di Python, con teoria, esempi, esercizi risolti, quiz, domande d'esame e progetti.
Il percorso consigliato e' lineare: leggere il capitolo, riscrivere a mano o in editor l'esempio, risolvere gli
esercizi senza guardare subito la soluzione, controllare i quiz e infine svolgere almeno un progetto. La
programmazione si impara eseguendo codice: ogni blocco va copiato, modificato e testato.
Indice dettagliato
- Introduzione a Python: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Installazione e ambiente di sviluppo: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Variabili e tipi di dato: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Operatori: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Input e output: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Strutture condizionali: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Cicli: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Liste: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Tuple: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Dizionari: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Set: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Stringhe: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Funzioni: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Scope delle variabili: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Moduli: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Librerie: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Gestione degli errori: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- File: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Programmazione orientata agli oggetti: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Strutture dati fondamentali: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Algoritmi di ricerca: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Algoritmi di ordinamento: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Complessita' computazionale: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Introduzione a NumPy: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Introduzione a Pandas: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Introduzione a Matplotlib: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Gestione dei dati: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Debugging: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Buone pratiche di programmazione: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Testing: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Introduzione alle API: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Introduzione al Web Scraping: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Introduzione all'analisi dati: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame.
- Introduzione all'intelligenza artificiale con Python: teoria, esempio guidato, errori frequenti, tabella riassuntiva, quiz e domande d'esame. Sezione esercizi svolti: 100 esercizi ordinati per difficolta' crescente, con soluzione commentata.
Sezione progetti completi: calcolatrice, rubrica, biblioteca, studenti, CSV, videogioco testuale, prenotazioni, magazzino. Glossario finale e fonti consigliate: termini essenziali e riferimenti per approfondire.
1. Introduzione a Python
Questo capitolo affronta il ruolo di Python come linguaggio interpretato, leggibile e adatto sia alla didattica
sia allo sviluppo applicativo. L'obiettivo e' costruire una comprensione operativa: non basta conoscere la
definizione, bisogna saper usare il concetto in un programma reale, leggere il codice di altri e riconoscere
gli errori tipici che compaiono in un compito d'esame.
Obiettivi di apprendimento
- spiegare perche' Python e' usato nei corsi introduttivi
- distinguere interprete, script e programma
- capire il ciclo scrivi-esegui-correggi
Spiegazione teorica essenziale
In Python il concetto centrale di questo argomento e' la relazione tra dato, istruzione e risultato. Ogni
istruzione viene interpretata dall'ambiente di esecuzione e produce un effetto: un valore calcolato, una
modifica dello stato del programma, una stampa su schermo, un accesso a memoria o un'interazione con
risorse esterne. Per preparare bene l'esame e' importante distinguere sempre tre livelli: sintassi, semantica
e comportamento a runtime. La sintassi stabilisce come si scrive il codice; la semantica stabilisce cosa
significa; il runtime mostra cosa succede davvero quando il programma viene eseguito.
Un buon metodo di studio consiste nel leggere un esempio riga per riga e chiedersi: quali variabili esistono
in questo punto? che tipo hanno? quale valore contengono? quale istruzione viene eseguita dopo? quale
caso limite potrebbe rompere il programma? Questo approccio e' lo stesso richiesto nelle prove scritte,
negli esercizi di laboratorio e nei progetti pratici.
Esempio guidato
Primo programma: dal codice all'output
messaggio = "Ciao, Python!" print(messaggio)
L'interprete esegue le istruzioni dall'alto verso il basso
nome = "studente" print("Benvenuto", nome)
L'esempio va studiato seguendo il flusso di esecuzione. Prima si identificano gli input, poi si osservano le
trasformazioni e infine si controlla l'output. Le righe commentate non servono solo a descrivere il codice:
aiutano a fissare il ragionamento algoritmico e a rendere il programma leggibile anche a distanza di
tempo.
Collegamento con l'esame
In una prova universitaria questo argomento puo' comparire sia come domanda teorica sia come parte di
un esercizio piu' ampio. Per ottenere il punteggio pieno non basta produrre un output corretto sull'esempio
fornito: bisogna dimostrare che il codice funziona anche su casi limite, che i nomi sono comprensibili e che
la soluzione non contiene passaggi inutilmente complicati. Quando la traccia chiede di 'commentare' o
'motivare', occorre spiegare perche' e' stato scelto quel costrutto e quali alternative sarebbero meno
adatte.
Mini-esercizio guidato
Prendi l'esempio del capitolo e modificalo in tre modi: cambia i dati iniziali, aggiungi un controllo sul caso
limite e sposta la logica principale dentro una funzione. Questo esercizio obbliga a capire davvero il codice,
perche' una modifica superficiale produce spesso errori di tipo, di indentazione o di flusso.
Errori frequenti dei principianti
- confondere Python con un editor: Python esegue codice, l'editor lo scrive
- saltare l'indentazione: in Python e' parte della sintassi
- copiare codice senza eseguirlo passo per passo
Tabella riassuntiva
Concetto Significato
Script File .py contenente istruzioni eseguibili
Interprete Programma che legge ed esegue istruzioni Python
Runtime Momento in cui il codice produce effetti e risultati
Quiz di fine capitolo - 10 domande a risposta multipla
- Nel capitolo '1. Introduzione a Python', qual e' l'obiettivo principale? A) memorizzare definizioni isolate B) collegare teoria e codice eseguibile C) evitare gli esempi D) scrivere codice senza provarlo Soluzione: B. Il manuale privilegia sempre il collegamento tra concetto ed esecuzione.
- Quale abitudine riduce maggiormente gli errori? A) scrivere tutto in una riga B) testare spesso piccoli pezzi C) non usare nomi descrittivi D) ignorare i messaggi d'errore Soluzione: B. Il controllo frequente rende i bug piu' facili da isolare.
- In un esercizio d'esame, prima di programmare conviene A) scrivere subito codice casuale B) capire input, output e casi limite C) saltare la progettazione D) copiare una soluzione simile Soluzione: B. La progettazione evita soluzioni non coerenti con la traccia.
- Un commento utile dovrebbe A) ripetere ogni riga B) spiegare una scelta non ovvia C) sostituire nomi chiari D) nascondere codice confuso Soluzione: B. I commenti chiariscono motivazioni, non devono coprire cattivo stile.
- Quando una funzione diventa troppo lunga e' meglio A) aggiungere variabili globali B) dividerla in funzioni piu' piccole C) rimuovere i test D) usare solo print Soluzione: B. Funzioni piccole sono piu' leggibili e testabili.
- Un caso limite tipico e' A) un input medio B) una lista vuota C) un nome lungo ma valido D) un commento Soluzione: B. Lista vuota, zero e valori mancanti sono spesso casi critici.
- La soluzione piu' robusta e' quella che A) funziona solo sull'esempio B) gestisce anche errori prevedibili C) non usa funzioni D) non stampa risultati Soluzione: B. Un programma d'esame deve gestire i casi richiesti dalla traccia.
- La leggibilita' del codice serve per A) farlo sembrare piu' lungo B) ridurre manutenzione e bug C) evitare l'esecuzione D) nascondere la logica Soluzione: B. Codice leggibile e' piu' facile da correggere e valutare.
- Una tabella riassuntiva e' utile per A) sostituire tutta la pratica B) confrontare concetti simili C) eliminare gli esercizi D) evitare esempi Soluzione: B. Il confronto aiuta a scegliere lo strumento corretto.
- Durante il debug conviene modificare A) molte righe insieme B) una cosa alla volta C) solo i commenti D) il nome del file a caso Soluzione: B. Modifiche isolate rendono verificabile la causa del bug.
Domande d'esame - 5 tracce con risposta ideale
- Spiega il concetto principale del capitolo e costruisci un esempio minimale. Traccia della risposta ideale: La risposta deve definire il concetto, indicare quando si usa e mostrare un frammento di codice coerente.
- Individua due errori frequenti e proponi una correzione. Traccia della risposta ideale: La risposta ideale collega l'errore al comportamento a runtime e mostra la versione corretta.
- Confronta questo argomento con un concetto gia' studiato. Traccia della risposta ideale: Bisogna evidenziare somiglianze, differenze e criteri di scelta in un problema pratico.
- Scrivi una funzione o un mini-script che risolva una traccia semplice. Traccia della risposta ideale: La soluzione deve essere leggibile, testabile e commentata nei passaggi essenziali.
- Commenta la complessita' o la robustezza della soluzione proposta. Traccia della risposta ideale: La risposta deve citare input, casi limite, eventuali controlli e costo computazionale quando pertinente.
Tabella riassuntiva
Strumento Uso
Terminale Esecuzione di script e installazione pacchetti
IDE/editor Scrittura, completamento e debugging
venv Isola le dipendenze del progetto
Quiz di fine capitolo - 10 domande a risposta multipla
- Nel capitolo '2. Installazione e ambiente di sviluppo', qual e' l'obiettivo principale? A) memorizzare definizioni isolate B) collegare teoria e codice eseguibile C) evitare gli esempi D) scrivere codice senza provarlo Soluzione: B. Il manuale privilegia sempre il collegamento tra concetto ed esecuzione.
- Quale abitudine riduce maggiormente gli errori? A) scrivere tutto in una riga B) testare spesso piccoli pezzi C) non usare nomi descrittivi D) ignorare i messaggi d'errore Soluzione: B. Il controllo frequente rende i bug piu' facili da isolare.
- In un esercizio d'esame, prima di programmare conviene A) scrivere subito codice casuale B) capire input, output e casi limite C) saltare la progettazione D) copiare una soluzione simile Soluzione: B. La progettazione evita soluzioni non coerenti con la traccia.
- Un commento utile dovrebbe A) ripetere ogni riga B) spiegare una scelta non ovvia C) sostituire nomi chiari D) nascondere codice confuso Soluzione: B. I commenti chiariscono motivazioni, non devono coprire cattivo stile.
- Quando una funzione diventa troppo lunga e' meglio A) aggiungere variabili globali B) dividerla in funzioni piu' piccole C) rimuovere i test D) usare solo print Soluzione: B. Funzioni piccole sono piu' leggibili e testabili.
- Un caso limite tipico e' A) un input medio B) una lista vuota C) un nome lungo ma valido D) un commento Soluzione: B. Lista vuota, zero e valori mancanti sono spesso casi critici.
- La soluzione piu' robusta e' quella che A) funziona solo sull'esempio B) gestisce anche errori prevedibili C) non usa funzioni D) non stampa risultati Soluzione: B. Un programma d'esame deve gestire i casi richiesti dalla traccia.
- La leggibilita' del codice serve per A) farlo sembrare piu' lungo B) ridurre manutenzione e bug C) evitare l'esecuzione D) nascondere la logica Soluzione: B. Codice leggibile e' piu' facile da correggere e valutare.
- Una tabella riassuntiva e' utile per A) sostituire tutta la pratica B) confrontare concetti simili C) eliminare gli esercizi D) evitare esempi Soluzione: B. Il confronto aiuta a scegliere lo strumento corretto.
- Durante il debug conviene modificare A) molte righe insieme B) una cosa alla volta C) solo i commenti D) il nome del file a caso Soluzione: B. Modifiche isolate rendono verificabile la causa del bug.
Domande d'esame - 5 tracce con risposta ideale
- Spiega il concetto principale del capitolo e costruisci un esempio minimale. Traccia della risposta ideale: La risposta deve definire il concetto, indicare quando si usa e mostrare un frammento di codice coerente.
- Individua due errori frequenti e proponi una correzione. Traccia della risposta ideale: La risposta ideale collega l'errore al comportamento a runtime e mostra la versione corretta.
- Confronta questo argomento con un concetto gia' studiato. Traccia della risposta ideale: Bisogna evidenziare somiglianze, differenze e criteri di scelta in un problema pratico.
- Scrivi una funzione o un mini-script che risolva una traccia semplice. Traccia della risposta ideale: La soluzione deve essere leggibile, testabile e commentata nei passaggi essenziali.
- Commenta la complessita' o la robustezza della soluzione proposta. Traccia della risposta ideale: La risposta deve citare input, casi limite, eventuali controlli e costo computazionale quando pertinente.
3. Variabili e tipi di dato
Questo capitolo affronta variabili, assegnazione e tipi fondamentali int, float, string e bool. L'obiettivo e'
costruire una comprensione operativa: non basta conoscere la definizione, bisogna saper usare il concetto
in un programma reale, leggere il codice di altri e riconoscere gli errori tipici che compaiono in un compito
d'esame.
Obiettivi di apprendimento
- assegnare valori a variabili
- riconoscere il tipo di un valore
- scegliere il tipo adatto al problema
Spiegazione teorica essenziale
In Python il concetto centrale di questo argomento e' la relazione tra dato, istruzione e risultato. Ogni
istruzione viene interpretata dall'ambiente di esecuzione e produce un effetto: un valore calcolato, una
modifica dello stato del programma, una stampa su schermo, un accesso a memoria o un'interazione con
risorse esterne. Per preparare bene l'esame e' importante distinguere sempre tre livelli: sintassi, semantica
e comportamento a runtime. La sintassi stabilisce come si scrive il codice; la semantica stabilisce cosa
significa; il runtime mostra cosa succede davvero quando il programma viene eseguito.
Un buon metodo di studio consiste nel leggere un esempio riga per riga e chiedersi: quali variabili esistono
in questo punto? che tipo hanno? quale valore contengono? quale istruzione viene eseguita dopo? quale
caso limite potrebbe rompere il programma? Questo approccio e' lo stesso richiesto nelle prove scritte,
negli esercizi di laboratorio e nei progetti pratici.
Esempio guidato
eta = 20 # int media = 27.5 # float corso = "Python" # string superato = True # bool
print(type(eta), type(media), type(corso), type(superato))
L'esempio va studiato seguendo il flusso di esecuzione. Prima si identificano gli input, poi si osservano le
trasformazioni e infine si controlla l'output. Le righe commentate non servono solo a descrivere il codice:
aiutano a fissare il ragionamento algoritmico e a rendere il programma leggibile anche a distanza di
tempo.
Collegamento con l'esame
In una prova universitaria questo argomento puo' comparire sia come domanda teorica sia come parte di
un esercizio piu' ampio. Per ottenere il punteggio pieno non basta produrre un output corretto sull'esempio
fornito: bisogna dimostrare che il codice funziona anche su casi limite, che i nomi sono comprensibili e che
la soluzione non contiene passaggi inutilmente complicati. Quando la traccia chiede di 'commentare' o
'motivare', occorre spiegare perche' e' stato scelto quel costrutto e quali alternative sarebbero meno
adatte.
Mini-esercizio guidato
Prendi l'esempio del capitolo e modificalo in tre modi: cambia i dati iniziali, aggiungi un controllo sul caso
limite e sposta la logica principale dentro una funzione. Questo esercizio obbliga a capire davvero il codice,
perche' una modifica superficiale produce spesso errori di tipo, di indentazione o di flusso.
Errori frequenti dei principianti
- scrivere numeri con la virgola invece del punto decimale
- confondere '3' con 3
- usare nomi di variabili poco chiari o uguali a parole riservate
4. Operatori
Questo capitolo affronta operatori aritmetici, logici, relazionali, di appartenenza e precedenza. L'obiettivo
e' costruire una comprensione operativa: non basta conoscere la definizione, bisogna saper usare il
concetto in un programma reale, leggere il codice di altri e riconoscere gli errori tipici che compaiono in un
compito d'esame.
Obiettivi di apprendimento
- calcolare espressioni
- usare confronti e operatori logici
- prevedere il risultato di un'espressione
Spiegazione teorica essenziale
In Python il concetto centrale di questo argomento e' la relazione tra dato, istruzione e risultato. Ogni
istruzione viene interpretata dall'ambiente di esecuzione e produce un effetto: un valore calcolato, una
modifica dello stato del programma, una stampa su schermo, un accesso a memoria o un'interazione con
risorse esterne. Per preparare bene l'esame e' importante distinguere sempre tre livelli: sintassi, semantica
e comportamento a runtime. La sintassi stabilisce come si scrive il codice; la semantica stabilisce cosa
significa; il runtime mostra cosa succede davvero quando il programma viene eseguito.
Un buon metodo di studio consiste nel leggere un esempio riga per riga e chiedersi: quali variabili esistono
in questo punto? che tipo hanno? quale valore contengono? quale istruzione viene eseguita dopo? quale
caso limite potrebbe rompere il programma? Questo approccio e' lo stesso richiesto nelle prove scritte,
negli esercizi di laboratorio e nei progetti pratici.
Esempio guidato
prezzo = 120 sconto = 0. finale = prezzo * (1 - sconto)
valido = finale < 100 or prezzo >= 120 print(finale, valido)
L'esempio va studiato seguendo il flusso di esecuzione. Prima si identificano gli input, poi si osservano le
trasformazioni e infine si controlla l'output. Le righe commentate non servono solo a descrivere il codice:
aiutano a fissare il ragionamento algoritmico e a rendere il programma leggibile anche a distanza di
tempo.
Collegamento con l'esame
In una prova universitaria questo argomento puo' comparire sia come domanda teorica sia come parte di
un esercizio piu' ampio. Per ottenere il punteggio pieno non basta produrre un output corretto sull'esempio
fornito: bisogna dimostrare che il codice funziona anche su casi limite, che i nomi sono comprensibili e che
la soluzione non contiene passaggi inutilmente complicati. Quando la traccia chiede di 'commentare' o
'motivare', occorre spiegare perche' e' stato scelto quel costrutto e quali alternative sarebbero meno
adatte.
Mini-esercizio guidato
Prendi l'esempio del capitolo e modificalo in tre modi: cambia i dati iniziali, aggiungi un controllo sul caso
limite e sposta la logica principale dentro una funzione. Questo esercizio obbliga a capire davvero il codice,
perche' una modifica superficiale produce spesso errori di tipo, di indentazione o di flusso.
Errori frequenti dei principianti
- usare = al posto di == nei confronti
- dimenticare la precedenza degli operatori
- confondere / con //
Tabella riassuntiva
Operatore Significato
// % ** Divisione intera, resto, potenza
== != < > Confronto and or not Logica booleana
Quiz di fine capitolo - 10 domande a risposta multipla
- Nel capitolo '4. Operatori', qual e' l'obiettivo principale? A) memorizzare definizioni isolate B) collegare teoria e codice eseguibile C) evitare gli esempi D) scrivere codice senza provarlo Soluzione: B. Il manuale privilegia sempre il collegamento tra concetto ed esecuzione.
- Quale abitudine riduce maggiormente gli errori? A) scrivere tutto in una riga B) testare spesso piccoli pezzi C) non usare nomi descrittivi D) ignorare i messaggi d'errore Soluzione: B. Il controllo frequente rende i bug piu' facili da isolare.
- In un esercizio d'esame, prima di programmare conviene A) scrivere subito codice casuale B) capire input, output e casi limite C) saltare la progettazione D) copiare una soluzione simile Soluzione: B. La progettazione evita soluzioni non coerenti con la traccia.
- Un commento utile dovrebbe A) ripetere ogni riga B) spiegare una scelta non ovvia C) sostituire nomi chiari D) nascondere codice confuso Soluzione: B. I commenti chiariscono motivazioni, non devono coprire cattivo stile.
- Quando una funzione diventa troppo lunga e' meglio A) aggiungere variabili globali B) dividerla in funzioni piu' piccole C) rimuovere i test D) usare solo print Soluzione: B. Funzioni piccole sono piu' leggibili e testabili.
- Un caso limite tipico e' A) un input medio B) una lista vuota C) un nome lungo ma valido D) un commento Soluzione: B. Lista vuota, zero e valori mancanti sono spesso casi critici.
- La soluzione piu' robusta e' quella che A) funziona solo sull'esempio B) gestisce anche errori prevedibili C) non usa funzioni D) non stampa risultati Soluzione: B. Un programma d'esame deve gestire i casi richiesti dalla traccia.
- La leggibilita' del codice serve per A) farlo sembrare piu' lungo B) ridurre manutenzione e bug C) evitare l'esecuzione D) nascondere la logica Soluzione: B. Codice leggibile e' piu' facile da correggere e valutare.
- Una tabella riassuntiva e' utile per A) sostituire tutta la pratica B) confrontare concetti simili C) eliminare gli esercizi D) evitare esempi Soluzione: B. Il confronto aiuta a scegliere lo strumento corretto.
- Durante il debug conviene modificare A) molte righe insieme B) una cosa alla volta C) solo i commenti D) il nome del file a caso Soluzione: B. Modifiche isolate rendono verificabile la causa del bug.
Domande d'esame - 5 tracce con risposta ideale
- Spiega il concetto principale del capitolo e costruisci un esempio minimale. Traccia della risposta ideale: La risposta deve definire il concetto, indicare quando si usa e mostrare un frammento di codice coerente.
- Individua due errori frequenti e proponi una correzione. Traccia della risposta ideale: La risposta ideale collega l'errore al comportamento a runtime e mostra la versione corretta.
- Confronta questo argomento con un concetto gia' studiato. Traccia della risposta ideale: Bisogna evidenziare somiglianze, differenze e criteri di scelta in un problema pratico.
- Scrivi una funzione o un mini-script che risolva una traccia semplice. Traccia della risposta ideale: La soluzione deve essere leggibile, testabile e commentata nei passaggi essenziali.
- Commenta la complessita' o la robustezza della soluzione proposta. Traccia della risposta ideale: La risposta deve citare input, casi limite, eventuali controlli e costo computazionale quando pertinente.
Tabella riassuntiva
Funzione Uso
input() Legge testo da tastiera
print() Mostra dati a schermo
f-string Inserisce valori dentro una stringa
Quiz di fine capitolo - 10 domande a risposta multipla
- Nel capitolo '5. Input e output', qual e' l'obiettivo principale? A) memorizzare definizioni isolate B) collegare teoria e codice eseguibile C) evitare gli esempi D) scrivere codice senza provarlo Soluzione: B. Il manuale privilegia sempre il collegamento tra concetto ed esecuzione.
- Quale abitudine riduce maggiormente gli errori? A) scrivere tutto in una riga B) testare spesso piccoli pezzi C) non usare nomi descrittivi D) ignorare i messaggi d'errore Soluzione: B. Il controllo frequente rende i bug piu' facili da isolare.
- In un esercizio d'esame, prima di programmare conviene A) scrivere subito codice casuale B) capire input, output e casi limite C) saltare la progettazione D) copiare una soluzione simile Soluzione: B. La progettazione evita soluzioni non coerenti con la traccia.
- Un commento utile dovrebbe A) ripetere ogni riga B) spiegare una scelta non ovvia C) sostituire nomi chiari D) nascondere codice confuso Soluzione: B. I commenti chiariscono motivazioni, non devono coprire cattivo stile.
- Quando una funzione diventa troppo lunga e' meglio A) aggiungere variabili globali B) dividerla in funzioni piu' piccole C) rimuovere i test D) usare solo print Soluzione: B. Funzioni piccole sono piu' leggibili e testabili.
- Un caso limite tipico e' A) un input medio B) una lista vuota C) un nome lungo ma valido D) un commento Soluzione: B. Lista vuota, zero e valori mancanti sono spesso casi critici.
- La soluzione piu' robusta e' quella che A) funziona solo sull'esempio B) gestisce anche errori prevedibili C) non usa funzioni D) non stampa risultati Soluzione: B. Un programma d'esame deve gestire i casi richiesti dalla traccia.
- La leggibilita' del codice serve per A) farlo sembrare piu' lungo B) ridurre manutenzione e bug C) evitare l'esecuzione D) nascondere la logica Soluzione: B. Codice leggibile e' piu' facile da correggere e valutare.
- Una tabella riassuntiva e' utile per A) sostituire tutta la pratica B) confrontare concetti simili C) eliminare gli esercizi D) evitare esempi Soluzione: B. Il confronto aiuta a scegliere lo strumento corretto.
- Durante il debug conviene modificare A) molte righe insieme B) una cosa alla volta C) solo i commenti D) il nome del file a caso Soluzione: B. Modifiche isolate rendono verificabile la causa del bug.
Domande d'esame - 5 tracce con risposta ideale
- Spiega il concetto principale del capitolo e costruisci un esempio minimale. Traccia della risposta ideale: La risposta deve definire il concetto, indicare quando si usa e mostrare un frammento di codice coerente.
- Individua due errori frequenti e proponi una correzione. Traccia della risposta ideale: La risposta ideale collega l'errore al comportamento a runtime e mostra la versione corretta.
- Confronta questo argomento con un concetto gia' studiato. Traccia della risposta ideale: Bisogna evidenziare somiglianze, differenze e criteri di scelta in un problema pratico.
- Scrivi una funzione o un mini-script che risolva una traccia semplice. Traccia della risposta ideale: La soluzione deve essere leggibile, testabile e commentata nei passaggi essenziali.
- Commenta la complessita' o la robustezza della soluzione proposta. Traccia della risposta ideale: La risposta deve citare input, casi limite, eventuali controlli e costo computazionale quando pertinente.
6. Strutture condizionali
Questo capitolo affronta if, elif, else e costruzione di decisioni corrette. L'obiettivo e' costruire una
comprensione operativa: non basta conoscere la definizione, bisogna saper usare il concetto in un
programma reale, leggere il codice di altri e riconoscere gli errori tipici che compaiono in un compito
d'esame.
Obiettivi di apprendimento
- modellare scelte alternative
- ordinare condizioni dalla piu' specifica alla piu' generale
- evitare rami irraggiungibili
Spiegazione teorica essenziale
In Python il concetto centrale di questo argomento e' la relazione tra dato, istruzione e risultato. Ogni
istruzione viene interpretata dall'ambiente di esecuzione e produce un effetto: un valore calcolato, una
modifica dello stato del programma, una stampa su schermo, un accesso a memoria o un'interazione con
risorse esterne. Per preparare bene l'esame e' importante distinguere sempre tre livelli: sintassi, semantica
e comportamento a runtime. La sintassi stabilisce come si scrive il codice; la semantica stabilisce cosa
significa; il runtime mostra cosa succede davvero quando il programma viene eseguito.
Un buon metodo di studio consiste nel leggere un esempio riga per riga e chiedersi: quali variabili esistono
in questo punto? che tipo hanno? quale valore contengono? quale istruzione viene eseguita dopo? quale
caso limite potrebbe rompere il programma? Questo approccio e' lo stesso richiesto nelle prove scritte,
negli esercizi di laboratorio e nei progetti pratici.
Esempio guidato
voto = 28 if voto >= 30: esito = "eccellente" elif voto >= 18: esito = "superato" else: esito = "non superato" print(esito)
L'esempio va studiato seguendo il flusso di esecuzione. Prima si identificano gli input, poi si osservano le
trasformazioni e infine si controlla l'output. Le righe commentate non servono solo a descrivere il codice:
aiutano a fissare il ragionamento algoritmico e a rendere il programma leggibile anche a distanza di
tempo.
Collegamento con l'esame
In una prova universitaria questo argomento puo' comparire sia come domanda teorica sia come parte di
un esercizio piu' ampio. Per ottenere il punteggio pieno non basta produrre un output corretto sull'esempio
fornito: bisogna dimostrare che il codice funziona anche su casi limite, che i nomi sono comprensibili e che
la soluzione non contiene passaggi inutilmente complicati. Quando la traccia chiede di 'commentare' o
'motivare', occorre spiegare perche' e' stato scelto quel costrutto e quali alternative sarebbero meno
adatte.
Mini-esercizio guidato
Prendi l'esempio del capitolo e modificalo in tre modi: cambia i dati iniziali, aggiungi un controllo sul caso
limite e sposta la logica principale dentro una funzione. Questo esercizio obbliga a capire davvero il codice,
perche' una modifica superficiale produce spesso errori di tipo, di indentazione o di flusso.
Errori frequenti dei principianti
- mettere condizioni sovrapposte nell'ordine sbagliato
- dimenticare i due punti
- usare elif quando servirebbero if indipendenti
7. Cicli
Questo capitolo affronta for, while, range, break, continue e iterazione controllata. L'obiettivo e' costruire
una comprensione operativa: non basta conoscere la definizione, bisogna saper usare il concetto in un
programma reale, leggere il codice di altri e riconoscere gli errori tipici che compaiono in un compito
d'esame.
Obiettivi di apprendimento
- ripetere istruzioni su sequenze
- scegliere tra for e while
- evitare cicli infiniti
Spiegazione teorica essenziale
In Python il concetto centrale di questo argomento e' la relazione tra dato, istruzione e risultato. Ogni
istruzione viene interpretata dall'ambiente di esecuzione e produce un effetto: un valore calcolato, una
modifica dello stato del programma, una stampa su schermo, un accesso a memoria o un'interazione con
risorse esterne. Per preparare bene l'esame e' importante distinguere sempre tre livelli: sintassi, semantica
e comportamento a runtime. La sintassi stabilisce come si scrive il codice; la semantica stabilisce cosa
significa; il runtime mostra cosa succede davvero quando il programma viene eseguito.
Un buon metodo di studio consiste nel leggere un esempio riga per riga e chiedersi: quali variabili esistono
in questo punto? che tipo hanno? quale valore contengono? quale istruzione viene eseguita dopo? quale
caso limite potrebbe rompere il programma? Questo approccio e' lo stesso richiesto nelle prove scritte,
negli esercizi di laboratorio e nei progetti pratici.
Esempio guidato
totale = 0 for numero in range(1, 6): totale += numero print(totale)
n = 3 while n > 0: print(n) n -= 1
L'esempio va studiato seguendo il flusso di esecuzione. Prima si identificano gli input, poi si osservano le
trasformazioni e infine si controlla l'output. Le righe commentate non servono solo a descrivere il codice:
aiutano a fissare il ragionamento algoritmico e a rendere il programma leggibile anche a distanza di
tempo.
Collegamento con l'esame
In una prova universitaria questo argomento puo' comparire sia come domanda teorica sia come parte di
un esercizio piu' ampio. Per ottenere il punteggio pieno non basta produrre un output corretto sull'esempio
fornito: bisogna dimostrare che il codice funziona anche su casi limite, che i nomi sono comprensibili e che
la soluzione non contiene passaggi inutilmente complicati. Quando la traccia chiede di 'commentare' o
'motivare', occorre spiegare perche' e' stato scelto quel costrutto e quali alternative sarebbero meno
adatte.
Mini-esercizio guidato
Prendi l'esempio del capitolo e modificalo in tre modi: cambia i dati iniziali, aggiungi un controllo sul caso
limite e sposta la logica principale dentro una funzione. Questo esercizio obbliga a capire davvero il codice,
perche' una modifica superficiale produce spesso errori di tipo, di indentazione o di flusso.
Errori frequenti dei principianti
- modificare male la variabile di controllo del while
- confondere range(5) con 1..
- usare break per mascherare una condizione progettata male
Tabella riassuntiva
Ciclo Uso tipico
for Iterare su range, liste, stringhe
while Ripetere finche' una condizione resta vera
break/continue Controllo esplicito del flusso
Quiz di fine capitolo - 10 domande a risposta multipla
- Nel capitolo '7. Cicli', qual e' l'obiettivo principale? A) memorizzare definizioni isolate B) collegare teoria e codice eseguibile C) evitare gli esempi D) scrivere codice senza provarlo Soluzione: B. Il manuale privilegia sempre il collegamento tra concetto ed esecuzione.
- Quale abitudine riduce maggiormente gli errori? A) scrivere tutto in una riga B) testare spesso piccoli pezzi C) non usare nomi descrittivi D) ignorare i messaggi d'errore Soluzione: B. Il controllo frequente rende i bug piu' facili da isolare.
- In un esercizio d'esame, prima di programmare conviene A) scrivere subito codice casuale B) capire input, output e casi limite C) saltare la progettazione D) copiare una soluzione simile Soluzione: B. La progettazione evita soluzioni non coerenti con la traccia.
- Un commento utile dovrebbe A) ripetere ogni riga B) spiegare una scelta non ovvia C) sostituire nomi chiari D) nascondere codice confuso Soluzione: B. I commenti chiariscono motivazioni, non devono coprire cattivo stile.
- Quando una funzione diventa troppo lunga e' meglio A) aggiungere variabili globali B) dividerla in funzioni piu' piccole C) rimuovere i test D) usare solo print Soluzione: B. Funzioni piccole sono piu' leggibili e testabili.
- Un caso limite tipico e' A) un input medio B) una lista vuota C) un nome lungo ma valido D) un commento Soluzione: B. Lista vuota, zero e valori mancanti sono spesso casi critici.
- La soluzione piu' robusta e' quella che A) funziona solo sull'esempio B) gestisce anche errori prevedibili C) non usa funzioni D) non stampa risultati Soluzione: B. Un programma d'esame deve gestire i casi richiesti dalla traccia.
- La leggibilita' del codice serve per A) farlo sembrare piu' lungo B) ridurre manutenzione e bug C) evitare l'esecuzione D) nascondere la logica Soluzione: B. Codice leggibile e' piu' facile da correggere e valutare.
- Una tabella riassuntiva e' utile per A) sostituire tutta la pratica B) confrontare concetti simili C) eliminare gli esercizi D) evitare esempi Soluzione: B. Il confronto aiuta a scegliere lo strumento corretto.
- Durante il debug conviene modificare A) molte righe insieme B) una cosa alla volta C) solo i commenti D) il nome del file a caso Soluzione: B. Modifiche isolate rendono verificabile la causa del bug.
Domande d'esame - 5 tracce con risposta ideale
- Spiega il concetto principale del capitolo e costruisci un esempio minimale. Traccia della risposta ideale: La risposta deve definire il concetto, indicare quando si usa e mostrare un frammento di codice coerente.
- Individua due errori frequenti e proponi una correzione. Traccia della risposta ideale: La risposta ideale collega l'errore al comportamento a runtime e mostra la versione corretta.
- Confronta questo argomento con un concetto gia' studiato. Traccia della risposta ideale: Bisogna evidenziare somiglianze, differenze e criteri di scelta in un problema pratico.
- Scrivi una funzione o un mini-script che risolva una traccia semplice. Traccia della risposta ideale: La soluzione deve essere leggibile, testabile e commentata nei passaggi essenziali.
- Commenta la complessita' o la robustezza della soluzione proposta. Traccia della risposta ideale: La risposta deve citare input, casi limite, eventuali controlli e costo computazionale quando pertinente.
Tabella riassuntiva
Operazione Esempio
append Aggiunge un elemento
slicing lista[inizio:fine]
comprehension Crea liste filtrando o trasformando
Quiz di fine capitolo - 10 domande a risposta multipla
- Nel capitolo '8. Liste', qual e' l'obiettivo principale? A) memorizzare definizioni isolate B) collegare teoria e codice eseguibile C) evitare gli esempi D) scrivere codice senza provarlo Soluzione: B. Il manuale privilegia sempre il collegamento tra concetto ed esecuzione.
- Quale abitudine riduce maggiormente gli errori? A) scrivere tutto in una riga B) testare spesso piccoli pezzi C) non usare nomi descrittivi D) ignorare i messaggi d'errore Soluzione: B. Il controllo frequente rende i bug piu' facili da isolare.
- In un esercizio d'esame, prima di programmare conviene A) scrivere subito codice casuale B) capire input, output e casi limite C) saltare la progettazione D) copiare una soluzione simile Soluzione: B. La progettazione evita soluzioni non coerenti con la traccia.
- Un commento utile dovrebbe A) ripetere ogni riga B) spiegare una scelta non ovvia C) sostituire nomi chiari D) nascondere codice confuso Soluzione: B. I commenti chiariscono motivazioni, non devono coprire cattivo stile.
- Quando una funzione diventa troppo lunga e' meglio A) aggiungere variabili globali B) dividerla in funzioni piu' piccole C) rimuovere i test D) usare solo print Soluzione: B. Funzioni piccole sono piu' leggibili e testabili.
- Un caso limite tipico e' A) un input medio B) una lista vuota C) un nome lungo ma valido D) un commento Soluzione: B. Lista vuota, zero e valori mancanti sono spesso casi critici.
- La soluzione piu' robusta e' quella che A) funziona solo sull'esempio B) gestisce anche errori prevedibili C) non usa funzioni D) non stampa risultati Soluzione: B. Un programma d'esame deve gestire i casi richiesti dalla traccia.
- La leggibilita' del codice serve per A) farlo sembrare piu' lungo B) ridurre manutenzione e bug C) evitare l'esecuzione D) nascondere la logica Soluzione: B. Codice leggibile e' piu' facile da correggere e valutare.
- Una tabella riassuntiva e' utile per A) sostituire tutta la pratica B) confrontare concetti simili C) eliminare gli esercizi D) evitare esempi Soluzione: B. Il confronto aiuta a scegliere lo strumento corretto.
- Durante il debug conviene modificare A) molte righe insieme B) una cosa alla volta C) solo i commenti D) il nome del file a caso Soluzione: B. Modifiche isolate rendono verificabile la causa del bug.
Domande d'esame - 5 tracce con risposta ideale
- Spiega il concetto principale del capitolo e costruisci un esempio minimale. Traccia della risposta ideale: La risposta deve definire il concetto, indicare quando si usa e mostrare un frammento di codice coerente.
- Individua due errori frequenti e proponi una correzione. Traccia della risposta ideale: La risposta ideale collega l'errore al comportamento a runtime e mostra la versione corretta.
- Confronta questo argomento con un concetto gia' studiato. Traccia della risposta ideale: Bisogna evidenziare somiglianze, differenze e criteri di scelta in un problema pratico.
- Scrivi una funzione o un mini-script che risolva una traccia semplice. Traccia della risposta ideale: La soluzione deve essere leggibile, testabile e commentata nei passaggi essenziali.
- Commenta la complessita' o la robustezza della soluzione proposta. Traccia della risposta ideale: La risposta deve citare input, casi limite, eventuali controlli e costo computazionale quando pertinente.
9. Tuple
Questo capitolo affronta tuple immutabili e uso per record, coordinate e ritorni multipli. L'obiettivo e'
costruire una comprensione operativa: non basta conoscere la definizione, bisogna saper usare il concetto
in un programma reale, leggere il codice di altri e riconoscere gli errori tipici che compaiono in un compito
d'esame.
Obiettivi di apprendimento
- capire l'immutabilita'
- usare tuple per dati correlati
- sfruttare unpacking
Spiegazione teorica essenziale
In Python il concetto centrale di questo argomento e' la relazione tra dato, istruzione e risultato. Ogni
istruzione viene interpretata dall'ambiente di esecuzione e produce un effetto: un valore calcolato, una
modifica dello stato del programma, una stampa su schermo, un accesso a memoria o un'interazione con
risorse esterne. Per preparare bene l'esame e' importante distinguere sempre tre livelli: sintassi, semantica
e comportamento a runtime. La sintassi stabilisce come si scrive il codice; la semantica stabilisce cosa
significa; il runtime mostra cosa succede davvero quando il programma viene eseguito.
Un buon metodo di studio consiste nel leggere un esempio riga per riga e chiedersi: quali variabili esistono
in questo punto? che tipo hanno? quale valore contengono? quale istruzione viene eseguita dopo? quale
caso limite potrebbe rompere il programma? Questo approccio e' lo stesso richiesto nelle prove scritte,
negli esercizi di laboratorio e nei progetti pratici.
Esempio guidato
punto = (3, 5) x, y = punto print(x + y)
def min_max(valori): return min(valori), max(valori)
L'esempio va studiato seguendo il flusso di esecuzione. Prima si identificano gli input, poi si osservano le
trasformazioni e infine si controlla l'output. Le righe commentate non servono solo a descrivere il codice:
aiutano a fissare il ragionamento algoritmico e a rendere il programma leggibile anche a distanza di
tempo.
Collegamento con l'esame
In una prova universitaria questo argomento puo' comparire sia come domanda teorica sia come parte di
un esercizio piu' ampio. Per ottenere il punteggio pieno non basta produrre un output corretto sull'esempio
fornito: bisogna dimostrare che il codice funziona anche su casi limite, che i nomi sono comprensibili e che
la soluzione non contiene passaggi inutilmente complicati. Quando la traccia chiede di 'commentare' o
'motivare', occorre spiegare perche' e' stato scelto quel costrutto e quali alternative sarebbero meno
adatte.
Mini-esercizio guidato
Prendi l'esempio del capitolo e modificalo in tre modi: cambia i dati iniziali, aggiungi un controllo sul caso
limite e sposta la logica principale dentro una funzione. Questo esercizio obbliga a capire davvero il codice,
perche' una modifica superficiale produce spesso errori di tipo, di indentazione o di flusso.
Errori frequenti dei principianti
- provare a modificare una tupla come una lista
- creare una tupla singola senza virgola
- usare tuple per dati che devono cambiare spesso