From 2b0f8a20d0e6aaa4003c95abda4d93456865370c Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Thu, 9 Apr 2026 09:57:20 +0200 Subject: [PATCH] aggiunge esercizio 30 --- lab30.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lab30.py diff --git a/lab30.py b/lab30.py new file mode 100644 index 0000000..a3a56fb --- /dev/null +++ b/lab30.py @@ -0,0 +1,47 @@ +def cifra(messaggio, shift): + """ + Cifra il messaggio usando il cifrario di Cesare con lo spostamento dato. + - Lettere minuscole rimangono minuscole + - Lettere maiuscole rimangono maiuscole + - Caratteri non alfabetici (spazi, numeri, punteggiatura) rimangono invariati + """ + risultato = "" + + for c in messaggio: + if c.islower(): + base = ord('a') + codice = ord(c) + nuovo_codice = (codice - base + shift) % 26 + base + cifrato = chr(nuovo_codice) + calcolo = f"({codice} - {base} + {shift}) % 26 + {base} = {nuovo_codice}" + + elif c.isupper(): + base = ord('A') + codice = ord(c) + nuovo_codice = (codice - base + shift) % 26 + base + cifrato = chr(nuovo_codice) + calcolo = f"({codice} - {base} + {shift}) % 26 + {base} = {nuovo_codice}" + + else: + cifrato = c + + risultato += cifrato + + return risultato + + + +messaggio = input("Inserire un messaggio da cifrare: ") + +shift = 0 +while shift < 1 or shift > 25: + try: + shift = int(input("Inserire il valore di spostamento (1-25): ")) + if shift < 1 or shift > 25: + print("Valore fuori intervallo. Inserire un numero tra 1 e 25.") + except ValueError: + print("Input non valido. Inserire un numero intero.") + +testo_cifrato = cifra(messaggio, shift) + +print(f"Messaggio cifrato: {testo_cifrato}")