Nadesłany przez Marek Madejski, 22 maja 2015 14:56
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
szyfrowanie.py:
# -*- coding: UTF-8 -*- # Szyfrowanie tekstu z dowolnym przesunieciem # # Szyforwanie tekstu algorytmem ROT13 (dla wartosci przesuniecia 13, # deszyfrowanie użyciem drugi raz wartosci 13 lub -13) # # Szyforwanie tekstu algorytmem Cezara (dla wartosci przesuniecia 3, # deszyfrowanie użyciem wartości -3) # # Dziala dla duzych i malych liter # www.algoyrmt.org import string def przesunLitere(c, n, alf): if c in alf: oldIdx = alf.index(c) #znajdz indeks newIdx = (oldIdx + n) % len(alf) #przesun indeks z dzieleniem modulo o dlugosc alfabetu (aby nie wyjsc poza zakres) return alf[newIdx] def przesun(word, n=0, alf = string.ascii_lowercase): #zwraca wynik z małymi literami word = word.lower() result = "" for c in word: if c in alf: result += przesunLitere(c, n, alf) else: result += c return result def przesun2(word, n=0, alf = string.ascii_lowercase): #zwraca wynik, zachowujac wielkosc liter alfLower = alf.lower() alfUpper = alf.upper() result = "" for c in word: if c in alfLower: result += przesunLitere(c, n, alfLower) elif c in alfUpper: result += przesunLitere(c, n, alfUpper) else: result += c return result #Szyfr Cezara def przesunCezar(word): return przesun2(word, 3) #Szyfr ROT-13 def przesunRot13(word): return przesun2(word, 13) def main(): word = raw_input("Wpisz tekst\n") n = int(raw_input("Wpisz przesuniecie\n")) word = przesun2(word, n) print(word) if __name__ == "__main__": main()