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()

