Найти - Пользователи
Полная версия: Простая версия дешифровщика
Начало » Центр помощи » Простая версия дешифровщика
1 2 3
blmnk
Привет, делаю домашнее задание, нужна помощь.

Есть файл с набором зашифрованных слов и ключом к ним.

CLGUBA 13
JGNNQ 7

нужно написать приложение, которое открывает файл, использует ключ, и дешифрует слово.
Как мне брать слова и ключи из листа, который получается при разбиении строк исходного файла, и прогонять их через дешифровку? Как лучше, словарем, листом, набором? Пробовал составлять nested loop, но каша получается.

def codebreaker(filename):
#filename = input('Enter the input filename:')
filedata = open(filename, ‘r’)
cypertext = filedata.read()
text = cypertext.splitlines()

alphabet = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’
word = ‘CLGUBA’
key = 13
set1 =

код для дешифрования (если символы совпадают берет индекс символа в alphabet отнимает ключ, и возвращает букву с новым индексом

for letter in word:
for i_alphabet in alphabet:
if letter == i_alphabet:
set1.append(alphabet)

вывод дешифрованного слова
ev_word = ''.join(set1)
print(ev_word)
marvellik
дешифровка шифра Цезаря.
мой вариант таков
def decode(word,key,alphabet): 
    word = list(word)
    for i in range (len(word)):
        index=alphabet.find(word[i].lower())-int(key) # тут наверно правильней циклический сдвиг реализовать
        word[i] = alphabet[index] if word[i]==word[i].lower() else alphabet[index].upper()
        
    return ''.join(word)
with open('input.txt','r') as file:
    text = file.read().split()
alphabet = ''.join(chr(x) for x in range(ord('a'),ord('z')+1))
word_key = iter(text)
for word,key in (zip(word_key ,word_key )):
    print(decode(word,key,alphabet))
FishHook
marvellik
Вы не понимаете, как устроены циклы в питоне. Все плохо.
marvellik
FishHook
Вы не понимаете, как устроены циклы в питоне. Все плохо.
ну так объясните в чем плохо? на то он и форум чтоб объясняли то чего нет в учебниках.
если бы в учебниках было все так прекрасно понятно и доступно то люди бы не задавали вопросов на форуме
FishHook
marvellik
на то он и форум чтоб объясняли то чего нет в учебниках
Вы не читали ни одного учебника, не врите.
А если всё-таки читали, перечитайте еще раз.
Не поймете - в третий раз читайте.
marvellik
то люди бы не задавали вопросов на форуме
Вы представить себе не можете, о чем спрашивают люди на форумах.
marvellik
FishHook
Вы не читали ни одного учебника, не врите
вот мой первый учебник http://pythontutor.ru/visualizer/
так же читал Douson_M_-_Programmiruem_na_Python_-_2014, python-3-samoe-neobhodimoe, Лутц М. - Изучаем Python (4-е издание)- 2011 а в чем проблема у меня с циклом так и не узнал. может просвятите лучше чем нотации читать и флуд разводить?
FishHook
Зачем в вашем цикле нужен range?
Vigi
Наверное имелось вот это:
Цикл по списку

Плохо: часто бывшие С программисты пишут так.
colors = ['red', 'green', 'blue', 'yellow']
for i in range(len(colors)):
    print colors[i]

Хорошо: лучший вариант.
colors = ['red', 'green', 'blue', 'yellow']
for color in colors:
    print color

источник: Тут

Да и с отступами в коде тоже не все так гладко…
marvellik
FishHook
Зачем в вашем цикле нужен range?
а как тогда заменять элемент в списке на декодированный?
если напрямую получать элемент а не по индексу
 for i in word:
        index=alphabet.find(word.lower())-int(key) # тут наверно правильней циклический сдвиг реализовать
        word[i] = alphabet[index] if word[i]==word[i].lower() else alphabet[index].upper() # тут как поступать?
FishHook
marvellik
а как тогда заменять элемент
А зачем вообще это делать? Проходимся по исходному тексту и создаем новый - зашифрованный.
Но если сильно надо, то делают так
for index, el in emumerate(items):
     pass
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB