Finisci il tutorial. Scrivi ogni riga, esegui ogni esempio, vedi che tutto funziona. Poi apri un editor vuoto per creare qualcosa di tuo... e il vuoto. Nemmeno un'idea.
Quasi tutti i principianti cadono nella trappola dei tutorial (di solito subito dopo il loro primo corso di Python). Puoi leggere guide sui cicli for tutto il giorno, ma nel momento in cui nessuno ti dice cosa scrivere, il cervello si blocca.
Sapere come appare il codice e scriverlo da soli sono due competenze completamente diverse. L'unico modo per passare dalla prima alla seconda è iniziare a creare qualcosa. Da soli.
E no, non deve per forza essere qualcosa di utile. Non devi lanciare un'app sul mercato o contribuire a un progetto open source. Ti servono solo piccoli programmi, anche banali, che funzionino — uno dopo l'altro — finché il tuo cervello non smetterà di bloccarsi.
Questo articolo serve proprio a questo. Qui sotto troverai 13 semplici progetti in Python, ognuno dei quali può essere completato in un tempo compreso tra i 10 minuti e un'ora. Ognuno ti insegnerà una o due cose, non di più. E ognuno si concluderà con un file funzionante sul tuo computer, scritto interamente da te.
Non ti senti ancora pronto per iniziare a creare? Nessun problema! Ogni grande viaggio inizia dalle basi. Impara i concetti informatici fondamentali e costruisci fondamenta solide come una roccia prima di fare il passo successivo.
Perché creare progetti invece di guardare tutorial?
Perché i tutorial ti danno l'illusione di imparare, ma in realtà pensano al posto tuo. Creare qualcosa, invece, costringe te a prendere le decisioni. Devi dare un nome alle variabili, scegliere il ciclo giusto e capire perché il tuo codice ha stampato None invece del numero che ti aspettavi.
Inoltre, i piccoli progetti risolvono il problema della motivazione. Un progetto da due settimane sembra fantastico sulla carta, finché non ti blocchi e lo abbandoni per sempre. Un progetto da 30 minuti, invece, lo finisci oggi stesso. Ottieni un file funzionante e una piccola vittoria, ed è proprio quella vittoria che ti spingerà a riaprire l'editor domani.

1. Gioco dell'indovina numero
Un grande classico. Il computer sceglie un numero da 1 a 100, tu provi a indovinare e lui ti dice se il tuo tentativo è "troppo alto" o "troppo basso" finché non trovi quello giusto. È il primo vero programma di quasi tutti i programmatori, e per ottime ragioni.
import random
secret = random.randint(1, 100)
guesses = 0
while True:
guess = int(input("Guess a number (1-100): "))
guesses += 1
if guess < secret:
print("Too low")
elif guess > secret:
print("Too high")
else:
print(f"Got it in {guesses} guesses")
break
Cosa imparerai: i cicli while, le istruzioni condizionali, il modulo random e come convertire un input in un numero. Una volta che funziona, aggiungi un limite massimo di tentativi per rendere il gioco più avvincente.
2. Generatore di Mad Libs
Chiedi all'utente di inserire alcune parole — un sostantivo, un verbo, un aggettivo — inseriscile in una frase bizzarra e stampa il risultato. Dieci minuti dall'inizio alla fine.
noun = input("Noun: ")
verb = input("Verb: ")
adjective = input("Adjective: ")
place = input("A place: ")
story = f"Yesterday I went to the {place} and saw a {adjective} {noun} that started to {verb}."
print(story)
3. Simulatore di lancio dei dadi
Lancia un dado. Lanciane due. Lancia un dado a 20 facce per la serata giochi. Due righe di logica e tutto ciò che vuoi costruirci attorno.
import random
def roll(sides=6, count=1):
return [random.randint(1, sides) for _ in range(count)]
print(roll(6, 2)) # rolls two six-sided dice
print(roll(20)) # rolls one d20
Cosa imparerai: funzioni con valori predefiniti, list comprehension e come chiamare la stessa funzione con input diversi. Una volta che funziona, aggiungi un piccolo menu per consentire all'utente di scegliere il numero di facce e di dadi da lanciare.
4. Calcolatrice semplice
Addizione, sottrazione, moltiplicazione, divisione. Due numeri, un operatore. Sì, le calcolatrici esistono già. Ma non è questo il punto. Il punto è collegare i pezzi da solo e accorgerti di cosa hai dimenticato al primo tentativo.
def calc(a, b, op):
if op == "+": return a + b
if op == "-": return a - b
if op == "*": return a * b
if op == "/":
if b == 0:
return "Can't divide by zero"
return a / b
a = float(input("First number: "))
op = input("Operator (+, -, *, /): ")
b = float(input("Second number: "))
print(calc(a, b, op))
Cosa imparerai: a scrivere una funzione, a gestire le ramificazioni con if e a gestire quel caso limite insidioso (la divisione per zero). Vuoi una sfida? Aggiungi le operazioni concatenate.
5. Morra cinese (Sasso, Carta, Forbice)
Tu fai una scelta, il computer ne fa un'altra, le regole decidono chi vince. Ottimo per fare pratica con un piccolo ciclo di gioco e per prendere confidenza con l'uso di un dizionario come tabella di consultazione (lookup table).
import random
options = ["rock", "paper", "scissors"]
wins_against = {"rock": "scissors", "paper": "rock", "scissors": "paper"}
you = input("Pick rock, paper, or scissors: ").lower()
cpu = random.choice(options)
print(f"Computer picked {cpu}.")
if you == cpu:
print("Tie")
elif wins_against[you] == cpu:
print("You win")
else:
print("Computer wins")
Cosa imparerai: i dizionari per ricerche rapide, random.choice e il confronto tra stringhe. Inserisci il tutto in un ciclo while e tieni traccia del punteggio tra i vari round: avrai creato un piccolo gioco in un pomeriggio.
6. Generatore di password
Crea una password casuale di N caratteri usando lettere, numeri e simboli. Utile, semplice, si fa in 15 minuti. Il classico programmino che potresti effettivamente conservare e usare.
import random
import string
def make_password(length=12):
pool = string.ascii_letters + string.digits + string.punctuation
return "".join(random.choice(pool) for _ in range(length))
print(make_password(16))
Cosa imparerai: il modulo string, come unire i caratteri in un'unica stringa e come estrarre caratteri casuali da un insieme. Aggiungi un'opzione per escludere i simboli, utile per quei sistemi che non digeriscono la punteggiatura (e sono più di quanti pensi).
7. Lista delle cose da fare (To-Do List) nel terminale
Un semplice menu per aggiungere, visualizzare e rimuovere elementi, direttamente nel terminale. Nessun database, nessuna configurazione complessa, solo una lista Python che esiste finché non chiudi il programma. È più che sufficiente per imparare.
todos = []
while True:
cmd = input("Command (add/list/remove/quit): ")
if cmd == "add":
todos.append(input("Task: "))
elif cmd == "list":
for i, t in enumerate(todos, 1):
print(f"{i}. {t}")
elif cmd == "remove":
idx = int(input("Index to remove: ")) - 1
if 0 <= idx < len(todos):
todos.pop(idx)
elif cmd == "quit":
break
Cosa imparerai: a creare un programma guidato da menu, a modificare una lista, a usare enumerate e il piccolo trucco per iniziare la numerazione da 1 invece che da 0. Nella versione successiva potrai salvare le attività in un file di testo in modo che non vadano perse alla chiusura. È lì che inizierà a sembrare un'app vera e propria.
Coddy trasforma la pratica di Python in un'abitudine quotidiana grazie a serie consecutive (streak) gamificate, punti XP e brevi lezioni che ti spingono ad aprire l'app anche quando la motivazione scarseggia.
8. Contatore di parole e caratteri
Incolla un testo e ottieni il numero di parole, di caratteri e la parola più frequente. Comodo quando devi scrivere rispettando limiti di parole rigidi (e ce ne sono molti più di quanto pensi, una volta che inizi a farci caso).
from collections import Counter
text = input("Paste your text: ")
words = text.split()
chars = len(text)
most_common = Counter(words).most_common(1)
print(f"Words: {len(words)}")
print(f"Characters: {chars}")
print(f"Most common word: {most_common[0][0]} ({most_common[0][1]} times)")
Cosa imparerai: il modulo collections, il metodo .split() e come leggere i valori restituiti da Counter. Prova a escludere le parole corte (come le congiunzioni o gli articoli) per ottenere risultati migliori; altrimenti, la tua parola più frequente sarà sempre un articolo, il che non ti dice nulla di utile.
9. Calcolatore di mance
Totale del conto, percentuale di mancia, divisione tra i presenti. Il classico piccolo strumento che ti ritroverai a usare anche tra qualche anno, molto tempo dopo esserti dimenticato di averlo scritto.
bill = float(input("Bill total: "))
tip_pct = float(input("Tip percentage (e.g., 18): "))
people = int(input("How many people: "))
tip = bill * (tip_pct / 100)
total = bill + tip
per_person = total / people
print(f"Tip: {tip:.2f}")
print(f"Total: {total:.2f}")
print(f"Per person: {per_person:.2f}")
Cosa imparerai: gli operatori matematici, la conversione degli input in numeri e l'arrotondamento a due cifre decimali con :.2f. Estendilo arrotondando per eccesso la quota a persona, così nessuno al tavolo ci rimetterà un centesimo.
10. Timer per il conto alla rovescia
Inserisci il numero di secondi e il programma avvia il conto alla rovescia fino a zero. Piccolo, soddisfacente e davvero utile come timer per le pause o per la tecnica Pomodoro una volta completato.
import time
seconds = int(input("Seconds: "))
while seconds >= 0:
mins, secs = divmod(seconds, 60)
print(f"{mins:02d}:{secs:02d}", end="\r")
time.sleep(1)
seconds -= 1
print("Time's up ")
Cosa imparerai: il modulo time, la funzione divmod per dividere i numeri in minuti e secondi, e il trucco di \r per aggiornare la stessa riga sul terminale. Quel parametro end="\r" è ciò che rende il timer realistico, evitando di riempire il terminale con un muro di testo continuo.
11. Generatore di citazioni casuali
Una lista di citazioni — motivazionali, divertenti, sul mondo della programmazione, vedi tu — e il programma ne stampa una a caso ogni volta che lo esegui. Quasi fin troppo semplice. Fallo comunque.
import random
quotes = [
"The only way to learn a new programming language is by writing programs in it.",
"Programs must be written for people to read, and only incidentally for machines to execute.",
"Premature optimization is the root of all evil.",
"Simplicity is the soul of efficiency.",
"Code is like humor. When you have to explain it, it's bad.",
]
print(random.choice(quotes))
Cosa imparerai: le basi delle liste, random.choice e come creare il programma utile più piccolo dell'intero linguaggio. Collegalo all'avvio del tuo terminale per ricevere una nuova citazione ogni volta che apri una shell: una di quelle piccole sciocchezze che rendono la programmazione molto più divertente.
12. Il gioco dell'impiccato (semplificato)
Scegli una parola segreta, mostra i trattini, lascia che l'utente indovini le lettere e termina il gioco dopo sei tentativi errati. Più impegnativo rispetto agli altri progetti di questa lista, ma comunque fattibile in circa un'ora se lo mantieni semplice.
import random
words = ["python", "syntax", "variable", "function", "module"]
secret = random.choice(words)
guessed = set()
wrong = 0
while wrong < 6:
display = "".join(c if c in guessed else "_" for c in secret)
print(display)
if "_" not in display:
print("You won")
break
letter = input("Guess a letter: ").lower()
if letter in secret:
guessed.add(letter)
else:
wrong += 1
print(f"Wrong. {6 - wrong} tries left.")
else:
print(f"You lost. The word was {secret}.")
Cosa imparerai: i set (insiemi), come costruire una stringa con una condizione al suo interno e il meno noto costrutto while-else (dove il blocco else viene eseguito solo se il ciclo termina senza un'istruzione break). Ti sei stancato di usare sempre le stesse cinque parole? Leggile da un file esterno. (Ti stancherai presto, fidati).
13. Convertitore di unità di misura
Converti tra le unità di misura più comuni: da Celsius a Fahrenheit, da chilometri a miglia, da chilogrammi a libbre. Pratico, veloce da completare e utilissimo anche in futuro.
def c_to_f(c):
return c * 9/5 + 32
def km_to_mi(km):
return km * 0.621371
def kg_to_lb(kg):
return kg * 2.20462
print("1. Celsius to Fahrenheit")
print("2. Kilometers to miles")
print("3. Kilograms to pounds")
choice = input("Pick a converter: ")
value = float(input("Value: "))
if choice == "1":
print(c_to_f(value))
elif choice == "2":
print(km_to_mi(value))
elif choice == "3":
print(kg_to_lb(value))
Cosa imparerai: a gestire diverse piccole funzioni in un unico file, a creare un menu di base e a gestire le ramificazioni in base a ciò che digita l'utente. Una volta che le conversioni dirette funzionano, aggiungi quelle inverse (da Fahrenheit a Celsius, da miglia a chilometri). Stessa logica, metà dello sforzo, il doppio della pratica.
Come assimilare davvero questi progetti
Creare un singolo progetto è un attimo. Crearne uno al giorno per due settimane è un'abitudine. E la differenza tra chi supera la fase da principiante in Python e chi no non sta nel talento o nel tempo a disposizione. Sta nella costanza con cui si fa pratica.
Ecco alcune cose che possono aiutarti, in ordine di importanza:
-
Scrivi il codice a mano, non fare copia-incolla! Noioso e ripetitivo, certo. Ma è anche l'unico modo per far sì che i pattern passino dalle dita e non solo dagli occhi. La prima volta che scriverai
import randoma memoria, scatterà qualcosa nella tua testa. -
Rompi il codice di proposito. Una volta che il programma funziona, cancella una riga, commenta una funzione o rinomina una variabile e osserva cosa succede. Risolvere l'errore ti insegnerà molto più di quanto non abbia fatto la scrittura del codice stesso. (Non ci si crede finché non si prova).
-
Crea lo stesso progetto due volte. Una settimana dopo, prova a rifare da zero il gioco dell'indovina numero. La seconda volta ti mostrerà cosa hai effettivamente assimilato, che potrebbe essere meno di quanto sperassi. E va benissimo così!
-
Aggiungi una funzionalità. Prendi uno qualsiasi dei progetti sopra elencati e aggiungi una piccola modifica. Salva la lista delle cose da fare in un file. Fai in modo che il simulatore di dadi stampi i risultati uno alla volta. È proprio in questa aggiunta che avviene il vero apprendimento, perché nessuno ha scritto una guida esatta per la tua versione personalizzata.
Se la pratica quotidiana è lo scoglio su cui continui a scontrarti, Coddy esiste proprio per questo. Brevi lezioni di Python da cinque minuti, un sistema di serie consecutive (streak) che ti stimola quando la motivazione cala, e i suggerimenti dell'IA di Bugsy direttamente all'interno della lezione quando ti blocchi.
Tutti i corsi sono gratuiti all'inizio, incluso quello di Python. Lo abbiamo progettato pensando esattamente alla situazione in cui ti trovi ora: hai finito i tutorial, non ti senti ancora del tutto sicuro e cerchi un modo per fare pratica senza che questo ti assorba l'intera serata.
Cosa dovresti creare dopo?
Quando i progetti qui sopra inizieranno a sembrarti troppo semplici, avrai già superato il confine che cercavi di valicare. Ottimo lavoro! La tappa successiva sono i progetti di livello intermedio, quelli che richiedono l'uso di una o due librerie e un po' di input/output di file o di rete.
Ecco alcune idee per fare un salto di qualità:
- Un'app meteo che utilizza la libreria
requestse un'API meteo gratuita - Un web scraper con
BeautifulSoupche estrae i titoli principali da un sito che leggi abitualmente - Un gioco d'avventura testuale con diverse stanze e una lista di inventario
- Un timer Pomodoro che registra le tue sessioni in un file CSV
- Una semplice app Flask che mostra una pagina web con una barzelletta casuale
Nessuno di questi è un progetto avanzato. Combinano semplicemente due o tre cose che già conosci con un nuovo modulo. Scegli quello che ti sembra più divertente, perché sarà quello che porterai a termine con maggiore probabilità.
I tutorial mostrano i loro limiti nel momento in cui ti lasciano da solo e ti chiedono di pensare con la tua testa. I progetti, anche quelli più semplici, ti costringono a ragionare. Fanne abbastanza e la trappola dei tutorial smetterà di essere un ostacolo.
Coddy ti porta oltre la visione passiva per farti programmare sul serio, grazie a lezioni di Python da cinque minuti, serie quotidiane e Bugsy, un assistente IA che ti dà indizi senza svelarti subito la soluzione.
Share this article
About the Author
Coddy Team
Editorial Team
Frequently Asked Questions
Qual è il progetto Python più semplice per un principiante?
Il gioco dell'indovina numero è la risposta classica. È breve, utilizza input, cicli e condizionali in un unico programma, e sembra un vero e proprio gioco quando viene eseguito. La maggior parte delle persone riesce a completarlo in 20 minuti, anche se ha appena imparato a cosa serve un ciclo while.
Quanto tempo dovrebbero richiedere i progetti Python semplici?
Da dieci minuti a un'ora. Se ci stai dedicando tre ore, o è troppo difficile per il tuo livello attuale, oppure sei finito in un tunnel di debugging da cui ti conviene uscire. Scegline uno più piccolo, completalo e poi ritorna su questo.
Devo installare qualcosa per realizzare questi progetti?
Sì se vuoi eseguirli in locale, no se non vuoi. Installare Python da python.org richiede circa cinque minuti. Oppure puoi saltare del tutto l'installazione ed eseguirli in un playground direttamente nel browser, come quello all'interno di Coddy, che è l'opzione senza configurazione.
Questi progetti Python vanno bene per un curriculum?
Non da soli, no. Un progetto da inserire nel curriculum di solito richiede maggiore profondità, come una piccola web app, uno script utilizzato per automatizzare qualcosa di reale al lavoro o un contributo a un progetto open-source. I 13 progetti qui presentati sono tappe intermedie per acquisire sicurezza, non elementi da portfolio. Ti preparano a creare in seguito progetti degni di essere inseriti nel curriculum.
Quali concetti di Python imparerò da questi progetti?
Attraverso questi 13 progetti, toccherai con mano variabili, input e output, condizionali, cicli, funzioni, liste, dizionari, set, il modulo random, il modulo time, le f-string, le list comprehension e un paio di moduli della libreria standard come collections e string. Si tratta di una solida base pratica del linguaggio.
Cosa succede se il mio codice non funziona?
Leggi il messaggio di errore. La maggior parte degli errori per principianti dice quasi esattamente cosa è andato storto, di solito nella riga subito sopra quella in cui hai iniziato a farti prendere dal panico. Cerca il messaggio di errore su Google, chiedi a un assistente IA come Bugsy di spiegartelo o incollalo in un forum. Il debugging è un'abilità che si sviluppa nello stesso modo in cui si impara a programmare: facendo pratica.
Posso realizzare questi progetti su un telefono?
Sì. Python funziona negli ambienti di programmazione mobile, inclusa l'app Coddy, che ha un playground di codice integrato. Non scriverai software aziendali su uno schermo grande quanto il palmo della tua mano, ma i piccoli progetti di pratica funzionano benissimo in questo modo, e molte persone fanno più pratica su un telefono di quanta ne farebbero mai su un laptop.
Qual è il passo successivo dopo i progetti Python semplici?
Progetti di livello intermedio che combinano più concetti: un piccolo web scraper, un client API, un'app Flask o Django che serve una pagina, uno script che elabora i file in una cartella. Qualsiasi cosa che introduca una nuova libreria e si colleghi a qualcosa di esterno è un ottimo livello successivo. Scegline uno che risolva un piccolo problema della tua vita quotidiana. Sarà quello che porterai a termine.



