Guida completa a Python
Capitolo 15 – Progetti Pratici per esercitarti: Livello BASE
Progetto | Cosa impari |
---|---|
✅ Calcolatrice CLI | input, condizioni, funzioni |
✅ Gestione ToDo list | liste, file .txt , cicli |
✅ Generatore di password | stringhe, random, funzioni |
✅ Gioco del tris | logica, cicli, strutture dati |
✅ Contatore parole da file | with open , split , dizionari |
1. Calcolatrice CLI
def calcolatrice():
print("🧮 Calcolatrice CLI")
print("Operazioni disponibili: +, -, *, /")
a = float(input("Primo numero: "))
operazione = input("Operazione (+ - * /): ")
b = float(input("Secondo numero: "))
if operazione == "+":
print("Risultato:", a + b)
elif operazione == "-":
print("Risultato:", a - b)
elif operazione == "*":
print("Risultato:", a * b)
elif operazione == "/":
if b == 0:
print("❌ Divisione per zero!")
else:
print("Risultato:", a / b)
else:
print("❌ Operazione non valida")
calcolatrice()
2. ToDo List con salvataggio su file
def mostra_menu():
print("\n📋 MENU ToDo")
print("1. Aggiungi task")
print("2. Mostra tasks")
print("3. Esci")
def carica_tasks():
try:
with open("todo.txt", "r") as file:
return file.read().splitlines()
except FileNotFoundError:
return []
def salva_tasks(tasks):
with open("todo.txt", "w") as file:
for task in tasks:
file.write(task + "\n")
tasks = carica_tasks()
while True:
mostra_menu()
scelta = input("Scelta: ")
if scelta == "1":
task = input("Nuovo task: ")
tasks.append(task)
salva_tasks(tasks)
elif scelta == "2":
print("\n📌 Tasks:")
for i, task in enumerate(tasks, 1):
print(f"{i}. {task}")
elif scelta == "3":
print("👋 Ciao!")
break
else:
print("❌ Scelta non valida")
3. Generatore di Password
import random
import string
def genera_password(lunghezza=12):
caratteri = string.ascii_letters + string.digits + string.punctuation
return ''.join(random.choices(caratteri, k=lunghezza))
lunghezza = int(input("🔐 Lunghezza password: "))
print("💡 Password generata:", genera_password(lunghezza))
4. Gioco del Tris (Player vs Player)
def stampa_griglia(griglia):
for riga in griglia:
print(" | ".join(riga))
print("-" * 5)
def controlla_vittoria(g, s):
for r in g:
if all([x == s for x in r]):
return True
for c in range(3):
if all([g[r][c] == s for r in range(3)]):
return True
if all([g[i][i] == s for i in range(3)]) or all([g[i][2-i] == s for i in range(3)]):
return True
return False
griglia = [[" "]*3 for _ in range(3)]
turno = "X"
for turno_num in range(9):
stampa_griglia(griglia)
print(f"🎮 Turno {turno}")
r = int(input("Riga (0-2): "))
c = int(input("Colonna (0-2): "))
if griglia[r][c] != " ":
print("❌ Casella già occupata.")
continue
griglia[r][c] = turno
if controlla_vittoria(griglia, turno):
stampa_griglia(griglia)
print(f"🏆 Vittoria di {turno}!")
break
turno = "O" if turno == "X" else "X"
else:
stampa_griglia(griglia)
print("🤝 Pareggio!")
5. Contatore parole da file
from collections import Counter
file = input("📄 Nome del file da analizzare (es. testo.txt): ")
try:
with open(file, "r", encoding="utf-8") as f:
testo = f.read().lower().split()
parole = Counter(testo)
print("\n🧠 Parole più frequenti:")
for parola, conteggio in parole.most_common(10):
print(f"{parola}: {conteggio}")
except FileNotFoundError:
print("❌ File non trovato.")