Guida completa a Python

Guida completa a Python

Capitolo 15 – Progetti Pratici per esercitarti: Livello BASE

ProgettoCosa impari
✅ Calcolatrice CLIinput, condizioni, funzioni
✅ Gestione ToDo listliste, file .txt, cicli
✅ Generatore di passwordstringhe, random, funzioni
✅ Gioco del trislogica, cicli, strutture dati
✅ Contatore parole da filewith 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.")

Pagine: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19