aggiunge esercizio 30
This commit is contained in:
@@ -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}")
|
||||||
Reference in New Issue
Block a user