Menu

13 progetti Python facili per prendere confidenza

Coddy Team

Coddy Team

· 10 min di lettura

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.

Semplici progetti Python per aumentare la tua sicurezza

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)

Cosa imparerai: le f-string, come gestire più input di seguito e come costruire una stringa a partire dalle variabili. Inseguito potrai facilmente estenderlo con storie più lunghe o con un elenco di modelli da scegliere casualmente.

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.

Perdi la motivazione tra un progetto e l'altro?

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.

Inizia con Python ora

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 random a 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 requests e un'API meteo gratuita
  • Un web scraper con BeautifulSoup che 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.

Sei bloccato nella trappola dei tutorial?

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.

Inizia a programmare ora

About the Author

Coddy Team

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.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

Inizia