#!/usr/bin/env python # encoding: utf-8 from string import ascii_uppercase as maiuscole def decifra(testo, rotazione = 5): """Decifra una stringa cifrata con algoritmo ROTx.""" # Preparo una variabile vuota per riportare il risultato risultato = '' # Eseguo tante istruzioni per ciascuna lettera del testo criptato for i in testo.upper(): if not i in maiuscole: # Se non è una lettera, riporto il risultato tale e quale risultato = risultato + i # Poi passo alla prossima lettera continue # Trovo l'indice della singola lettera indice_c = maiuscole.index(i) # Inverto la cifratura: se ho spostato in avanti di x, ora sposto # indietro di x parziale = indice_c - rotazione # Se però l'indice parziale è meno di zero, correggo per farlo # diventare un numero positivo. if parziale < 0: parziale = parziale + len(maiuscole) # Infine, riporto la lettera spostata indietro risultato = risultato + maiuscole[parziale] # Riporto il risultato return risultato # Usare in questa maniera: if __name__ == '__main__': testo = 'HNFT F YZYYN!' print(decifra(testo, 6))