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