Obiettivi di apprendimento:
ord() e chr() per lavorare con i codici dei caratteri.Programma Esempio (Cifrario di Cesare):
def cifra_cesare(testo, chiave_spostamento):
risultato = ""
for carattere in testo:
if carattere.isalpha(): # Se è una lettera (A-Z, a-z)
# Determina la base ASCII (65 per 'A', 97 per 'a')
base = ord('A') if carattere.isupper() else ord('a')
# 1. Converte la lettera in un numero (0-25)
# Esempio: 'C' (67) -> 67 - 65 = 2
indice_originale = ord(carattere) - base
# 2. Applica lo spostamento (mod 26 per ciclicità)
# Esempio: 2 + 3 = 5 -> 5 % 26 = 5
indice_cifrato = (indice_originale + chiave_spostamento) % 26
# 3. Riconverte il numero cifrato (0-25) in carattere
# Esempio: 5 + 65 = 70 -> 'F'
carattere_cifrato = chr(base + indice_cifrato)
risultato += carattere_cifrato
else:
# Lascia inalterati spazi, numeri o simboli
risultato += carattere
return risultato
def encryption_program():
print("🔐 CIFRARIO DI CESARE (CRITTOGRAFIA) 🔐")
try:
messaggio = input("Inserisci il messaggio da cifrare: ")
chiave = int(input("Inserisci la chiave di spostamento (es. 3): "))
# Cifratura
testo_cifrato = cifra_cesare(messaggio, chiave)
print(f"\nTESTO CIFRATO: {testo_cifrato}")
# Decifratura (spostamento all'indietro)
testo_decifrato = cifra_cesare(testo_cifrato, -chiave)
print(f"TESTO DECIFRATO (Verifica): {testo_decifrato}")
except ValueError:
print("❌ La chiave di spostamento deve essere un numero intero.")
# encryption_program()