Qui potete trovare tutte le informazioni riguardo il contenuto delle lezioni del canale 2, ed il relativo materiale.

<2026-11-02 Mon> Lezione 19 - Laboratorio 6

Esercitazione da fare in laboratorio: scarica.

Attenzione: nel video scrivo la funzione ignorando il problema delle cifre decimali. Integratelo con la funzione round.

Esercizio file di test
Somma di liste test_sommaliste.py
Prodotto Scalare tra due vettori test_prodottoscalare.py
Media aritmetica test_media.py
Separa elementi in base alla media test_separaelementi.py
Intersezione test_intersezione.py
Unione test_unione.py

Man mano che lavorate sui vostri esercizi potete testare le vostre soluzioni eseguendo i file di test corrispondenti.

<2026-10-29 Thu> Lezione 18 - Esercizi con il ciclo for

Altre informazioni su liste, sequenze, cicli:

  • conversione tra sequenze
  • esempio: ricerca in una lista
  • esempio: verifica che una lista sia ordinata
  • list comprehension
  • funzioni sum, min, max
  • liste di liste
  • rappresentazioni di matrici

Materiale didattico: slides sul ciclo for: (schermo|stampa)

Compilazione OPIS Lo potete fare anche dal cellulare. Qui ci sono le istruzioni e il codice OPIS di questo corso è 4F9B26UN.

<2026-10-28 Wed> Lezione 17 - Ancora su liste e sequenze

Continuiamo con le liste, e allarghiamo il discorso a quelle che in Python vengono definite "sequenze"

  • liste, stringhe, tuple e range sono sequenze
  • la tupla: una versione immutabile della lista
  • indici di lista negativi
  • metodo extend, e differenza tra append e extend
  • operatore += su liste, e differenze con x=x+a
  • esercizio: leggere una lista di numeri in input
  • esercizio: somma cumulativa
  • metodo clear, insert
  • metodo pop (con argomento e senza) e remove
  • modifiche nel mezzo di una lista
  • cooperazione tra stringhe e liste: join e split

Lavoro assegnato: slides sul ciclo for: (schermo|stampa)

Compilazione OPIS Lo potete fare anche dal cellulare. Qui ci sono le istruzioni e il codice OPIS di questo corso è 4F9B26UN.

<2026-10-26 Mon> Lezione 16 - Laboratorio 5

Esercitazione da fare in laboratorio: scarica.

Esercizio 3: video

È stato pubblicato il video tutorial per i file di test: esercitazione e test: link

Guardatelo prima della lezione

Esercizio file di test
Conteggio delle vocali test_conteggiovocali.py
Buona Password test_buona_password.py
Conteggio delle parole test_conteggioparole.py
Artista tartaruga -
Terne pitagoriche test_ternepitagoriche1.py

Man mano che lavorate sui vostri esercizi potete testare le vostre soluzioni eseguendo i file di test corrispondenti.

Lavoro assegnato: leggere il capitolo 10.

Compilazione OPIS Lo potete fare anche dal cellulare. Qui ci sono le istruzioni e il codice OPIS di questo corso è 4F9B26UN.

<2026-10-22 Thu> Lezione 15 - Liste e ciclo for

Seconda parte di una lezione unica 12:00–16:00

Introduciamo un utilissimo modo di strutturare dati in modo sequenziale, ovvero le liste. Le liste sono uno dei tipi di dati più utilizzati in python.

  • definizione di liste
  • indicizzazione e slicing, funzione len
  • ciclo su lista
  • esempio: somma di numeri
  • ciclare su un contatore con range
  • ciclare sugli indici di una lista
  • esempio: calcolo del minimo
  • operazioni di concatenazione + e ripetizione *
  • operatore in
  • differenza tra in per liste e stringhe
  • funzione sorted e metodo sort
  • metodi append, index, count
  • mutabilità (argomento delicato e importante)
  • variabili come riferimenti a memoria
  • copiare una lista
  • differenza tra copia e assegnamento tra liste

Lavoro assegnato: slides sul ciclo for: (schermo|stampa)

Lavoro assegnato: rileggere il capitolo 10 e fare gli esercizi da 10.2 a 10.5 e il 10.8.

<2026-10-22 Thu> Lezione 14 - Ancora operazioni sulle stringhe

Prima parte di una lezione unica 12:00–16:00

Introduciamo il ciclo for su caratteri di una stringa.

X = 'stringa di prova'

# Ciclo while
i = 0
while i < len(X):
    print(X[i], end='-')
    i += 1

print('')

# Ciclo For su caratteri
for c in X:
    print(c, end='-')
s-t-r-i-n-g-a- -d-i- -p-r-o-v-a-
s-t-r-i-n-g-a- -d-i- -p-r-o-v-a-

Vediamo altre operazioni sulle stringhe

  • operazione di slicing
  • operatore in
  • confronti di stringhe
  • conteggio e ricerca di caratteri
  • metodi delle stringhe upper, lower, find, count, strip
  • metodi isalpha, isdigit, isalnum, …

Lavoro assegnato: guardate TUTTO il video di istruzioni sui test automatici.

Lavoro assegnato: realizzare una versione artigianale dell'operatore in. Ovvero una funzione che date due stringhe testo e chiave, restituisca True se e solo se chiave è un segmento di testo. Naturalmente la vostra versione non deve utilizzare in.

<2026-10-21 Wed> Lezione 13 - Moduli, Bisezione, e operazioni sulle stringhe

Moduli in preparazione dell'esercitazione vediamo come scrivere i file python in modo che siano adatti ad essere importati, usando la clausola

if __name__ == "__main__":
    <codice>

Bisezione: vediamo due modi di scrivere un programma che esegue la ricerca di uno zero in una funzione continua.

Stringhe: Vediamo come le stringhe possano essere considerate delle sequenze di caratteri. Vediamo l'indicizzazione di stringhe.

Algoritmo su stringhe:

  • stringa palindroma

Materiale didattico

Uso dei moduli: (schermo|stampa)

Sezione 2.1 degli Appunti

Lavoro assegnato: guardate TUTTO il video di istruzioni sui test automatici.

<2026-10-19 Mon> Lezione 12 - Laboratorio 4

Esercitazione da fare in laboratorio: scarica.

Esercizi 2, 3 e 4: video

Lavoro assegnato:

  • leggere la sezione 2.1 degli Appunti
  • leggere il capitolo 8 del libro di testo
  • leggere l'appendice A del libro di testo

<2026-10-15 Thu> Lezione 11 - Ancora sul ciclo while

Vediamo altri esempi di come usare il ciclo while, ed esempi di cicli annidati.

Materiale didattico

Ciclo while: (schermo|stampa)

Due loop infiniti: wave.py, wavecolor.py

Lavoro assegnato: leggere l'appendice A del libro di testo.

<2026-10-14 Wed> Lezione 10 - Iterazione

Vediamo come ripetere l'esecuzione di blocchi di codice con il costrutto while. Vediamo degli esempi di come usare il ciclo while.

Materiale didattico

Ciclo while: (schermo|stampa)

Lavoro assegnato: approfondire il Capitolo 7.

Esercizio 7.1 del libro.

<2026-10-12 Mon> Lezione 9 - Laboratorio 3

Esercitazione da fare in laboratorio: scarica.

Esercizio 2: video

Lavoro assegnato: leggere il Capitolo 7.

<2026-10-08 Thu> Lezione 8 - Approfondimento sulle funzioni

Continuiamo ad esercitarci con le funzioni. Mettiamo a punto alcuni dettagli sulle funzioni: funzioni senza return o con return senza espressione.

Vediamo anche come inserire una stringa di documentazione nella funzione. In questo contesto vediamo le stringhe multilinea (ovvero quelle aperte e chiuse da tre apici o virgolette).

Scriviamo insieme funzioni che calcolano:

  • la distanza dall'origine di un punto nel piano
  • la distanza tra due punti del piano cartesiano
  • l'area di un triangolo date le lunghezze dei tre lati (link)
  • l'area di un triangolo date le coordinate dei tre vertici

Potete vederne degli esempi in geom.py

Se avanza tempo vediamo le funzioni

  • random.randint(a,b)
  • random.random()
  • random.gauss()

Materiale didattico

Indentazione: (schermo|stampa)

Lavoro assegnato: rivedere gli esercizi della scorsa esercitazione e provare a completarla scrivendo funzioni per ogni esercizio. Le funzioni dovrebbero

  • ricevere i dati attraverso i parametri
  • restituire il risultato attraverso return

La lettura di parametri da tastiera e la stampa a video dei risultati non deve essere all'interno della funzione che risolve l'esercizio.

Rivedere le sezioni 3.11 e 6.2

Rivedere le sezioni Debug, Glossario, Esercizi dei capitoli 1, 2, e 3 del libro di testo.

<2026-10-07 Wed> Lezione 7 - Scrittura e debug di funzioni

Vediamo come scrivere nuove funzioni. Due ragioni per cui le funzioni sono utili sono la possiblilità di riutilizzare codice, e suddividere la complessità di un problema.

Scriviamo le nostre implementazioni di abs, min, max.

Parliamo di passaggio di parametri, e differenza tra parametri e argomenti. Visibilità delle variabili, fuori e dentro la funzione (anche usando le funzioni di debug di Thonny). Restituzioni di valori usando return.

Le funzioni di debug permettono di eseguire il programma passo passo:

  • Step over esegue interamente le istruzioni
  • Step into entra dentro le istruzioni e le espressioni

Potete provare questi comandi su questo programma

# Esempio: debug funzione
def minmax(x,y):
    if x < y:
        a = x
        b = y
    else:
        a = y
        b = x
    return (a,b)

print(minmax(10,12+30))
print(minmax(10,-3))

o su questo programma

Insieme studiamo il programma:

def hello(nome,età):
    """Produce un saluto personalizzato

    Questa funzione produce un saluto di presentazione
    che include le informazioni di `nome` ed `età`.
    """
    coda = " anni."
    if età == 1:
        coda = " anno."
    return "Ciao, sono "+nome+". Ho "+str(età)+coda

def cornice(testo):
    lunghezza = len(testo) 
    cornice = '*' * (lunghezza + 4) 
    return cornice+"\n* "+testo+' *\n'+cornice

print(cornice(hello('Marcello',23)))
print(cornice("Testo arbitrario."))
print(cornice(hello('Giulia',1)))
************************************
* Ciao, sono Marcello. Ho 23 anni. *
************************************
*********************
* Testo arbitrario. *
*********************
*********************************
* Ciao, sono Giulia. Ho 1 anno. *
*********************************

Lavoro assegnato: scrivere i seguenti programmi

  • Una funzione scontato(prezzo,sconto), che verifichi che lo sconto sia un numero valido (ovvero se sia compreso tra 0 e 100) e che il prezzo sia un numero non negativo. Se queste condizioni sono verificate, il programma restituisca il prezzo scontato. In caso di argomenti errati, il programma non deve stampare nulla.
  • scrivere una funzione eqsecondogrado(A,B,C), che calcoli e restituisca le soluzioni dell'equazione di secondo grado \(Ax^2 + Bx + C =0\). Restituite None in caso di nessuna soluzione, e restituite due copie della soluzione, in caso di soluzione unica.
  • scrivere una funzione ordina(A,B,C) che restituisca in ordine dal più piccolo al più grande i valori (non necessariamente numerici) passati come argomenti. Non vi preoccupate di gestire gli errori dovuti al passaggio di argomenti che non sono confrontabili tra loro.
  • scrivere una funzione massimodicinque(A,B,C,D,E) che restituisca il più grande tra i cinque valori passati come argomenti.

Lavoro assegnato: leggere i paragrafi da 6.1 a 6.4 inclusi.

<2026-10-05 Mon> Lezione 6 - Laboratorio 2

Esercitazione da fare in laboratorio: scarica.

Esercizi 3 e 6: video

Lavoro assegnato: leggere il resto del capitolo 3 del libro di testo.

<2026-10-01 Thu> Lezione 5 - Uso di funzioni, tuple, il modulo math

Introduciamo il concetto di tupla di valori, cioè un espressione il cui valore è una sequenza di valori elementari. Ad esempio:

  • le coordinate di un punto in un piano cartesiano (12.5, 5.4)
  • una quintupla come ("Leopardi","Giacomo",29,6,1837)

A proposito di tuple cosa succede in questi quattro assegnamenti? Questo fenomeno è lo spacchettamento di tuple.

t = (-121,"ciao","posizione 2",293)

x0 = t                     # valido, ma è quello che volevi?
x0,x1 =  t                 # non valido
x0,x1,x2 = t               # non valido  
x0,x1,x2,x3 = t            # si

Spieghiamo cos'è una funzione. A che servono, come si usano, come si inseriscono all'interno di un'espressione? Esistono funzione chi restituiscono un valore, e funzioni che non ne restituiscono nessuno (convenzionalmente restituiscono un valore speciale None).

Vediamo delle funzioni: ci sono quelle già usate a lezione, come int, print, len, input, e altre incluse nel modulo math. Come si importano funzioni da moduli?

import math

print(math.pi)
print(math.cos(0))
print(math.cos(math.pi/2)) # quasi zero
print(math.cos(math.pi))
3.141592653589793
1.0
6.123233995736766e-17
-1.0

In python è possibile che una funzione restituisca più valori insieme (ad esempio restituisca una coppia o una tripla di valori).

t = divmod(12,7)
x,y = t
print(x,y)

a,b = divmod(21,5)
print(a,b)
1 5
4 1

L'espressione divresto(21,5) per esempio restituisce la coppia di numeri 4 e 1. Il numero 4 viene assegnato ad a, mentre il numero 1 viene assegnato a b.

Se avanza tempo, iniziamo a vedere come scrivere una nuova funzione con il comando def.

Materiale didattico

Il valore None: (schermo|stampa) Le prime 9 slides di Uso/Scrittura di moduli: (schermo|stampa)

<2026-09-30 Wed> Lezione 4 - Esecuzione condizionale

Vediamo come fare in modo che il programma faccia delle scelte. In primo luogo introduciamo il tipo booleano che rappresenta la scelta vero/falso. Vediamo poi come costruire espressioni booleane usando operatori logici e di confronto.

L'uso principale di queste espressioni logiche è quello di definire condizioni in base alle quali eseguire o meno pezzi di codice. Introduciamo le clausole if, else, elif per l'esecuzione codizionale di blocchi di istruzioni.

Materiale didattico

Il vero e il falso: (schermo|stampa)

Lavoro assegnato

  1. Leggete i paragrafi da 3.1 a 3.3 (incluso) del libro di testo.
  2. Scrivete un programma che, letti 3 numeri in input, li stampi in ordine crescente utilizzando catene di if/then/else
  3. Valutare a mano, e poi verificare in Python, il valore della seguente espressione python.
not -5 // 2**4 < -1 and 3**2**(5 + -3) >= 2 * 4

<2026-09-28 Mon> Lezione 3 - Laboratorio 1

Esercitazione da fare in laboratorio: scarica.

Esercizio 7: video

Materiale didattico

Tutorial del laboratorio: (schermo|stampa)

Lavoro assegnato:

  • leggere i paragrafi da 5.1 a 5.7 (incluso) del libro di testo.

<2026-09-24 Thu> Lezione 2 - Cos'è la programmazione

Discutiamo brevemente la struttura di un calcolatore e alcune delle persone coinvolte nel suo sviluppo. Spieghiamo la differenza tra linguaggi naturali e artificiali, linguaggi di alto e basso livello, linguaggi compilati e interpretati.

Poi continuamo con la pratica. Vediamo delle funzioni per l'input e l'output. In particolare

  • print per stampare in output il valore di un'espressione
  • input per leggere una stringa in input

In questo contesto vediamo come convertire dati da un tipo all'altro, quando possibile. Vediamo l'errore TypeError e ValueError.

Materiale didattico

Cos'è la programmazione: (schermo|stampa)

Lavoro assegnato

  1. Usate l'interprete interattivo python nella finestra in basso di Thonny, e poi quello da terminale.
  2. Scrivete dei file python con delle istruzioni, salvateli ed eseguiteli sia in Thonny (cliccando sull'icona "Play" oppure con il tasto F5) che usando il comando python3 dal terminale.

Leggere il capitolo 2 del libro di testo.

<2026-09-23 Wed> Lezione 1 - Introduzione

Introduciamo il corso, fornendo le informazioni logistiche di base. Poi cominciamo a interagire con python, utilizzando l'ambiente di programmazione Thonny. In questo contesto discutiamo il concetto di valore e tipo del dato, e vediamo come costruire espressioni utilizzando operazioni (aritmetiche e non) tra dati. Notiamo come tra gli operatori aritmetici ci sia un ordine di precedenza (PEMDAS). Descriviamo il funzionamento di variabili e assegnamenti, e come funziona a grandi linee il modello di associazione nome/valore in python.

Materiale didattico

Introduzione: (schermo|stampa)

Ambienti di lavoro python: (schermo|stampa)

Lavoro assegnato:

  • leggere i capitolo 1 e 2 del libro di testo.
  • installare Thonny sul vostro PC (https://thonny.org/)