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}")