было дано задание, и оно почти завершено. Просто борюсь с последним битом. Программе дается текст шифра Цезаря, затем она определяет, какая буква является наиболее частой, и печатает ее обратно на терминал. (Там, где я работаю.) Затем он предложит смещение клавиш на основе наиболее часто встречающейся буквы, и затем пользователь может вручную ввести это смещение клавиш или свое собственное смещение клавиш, и текст будет расшифрован.
Мне нужно, чтобы программа взяла наиболее часто встречающуюся букву в тексте Цезаря и сравнила ее с буквой «Е», которая является наиболее часто встречающейся буквой в английском языке, а затем вычислила, на сколько клавиш она уходит...
например если самая распространенная буква цезаря в тексте — n, то n-e = 9.
Код пока:
import sys
def decrypt(plain, key):
"returns a Caesar cipher text given plain text and a key"
cipher = ""
for index in range(len(plain)):
if plain[index].isalpha():
if plain[index].islower():
cipher = cipher + chr((ord(plain[index]) -101- key+26) % 26+ 101)
else:
cipher = cipher + chr((ord(plain[index]) -65- key+26) % 26+ 65)
else:
cipher = cipher + plain[index]
return cipher #do nothing here
#main program
key = int(sys.argv[4])
action = sys.argv[2]
try:
in_file = open(sys.argv[1], "r")
except:
sys.exit("There was an error opening the file: {}".format(sys.argv[1]))
try:
out_file = open(sys.argv[3], "w")
except:
sys.exit("There was an error opening the file: {}".format(sys.argv[3]))
line = in_file.readline()
freq_dict = { }#letter : 0 for letter in LETTERS }
while len(line) != 0:
for letter in line.replace(" ",""):
if letter in freq_dict:
freq_dict[letter] += 1
else:
freq_dict[letter] = 1
line = in_file.readline()
cipher = decrypt(line, key)
out_file.write(cipher)
in_file.close()
out_file.close()
for letter in freq_dict:
print(letter, "times", freq_dict[letter])
Заранее спасибо.