FishHookсогласен можно и так но я сделал замену в списке и в чем тут была проблема с циклом?
Проходимся по исходному тексту и создаем новый - зашифрованный
FishHookсогласен можно и так но я сделал замену в списке и в чем тут была проблема с циклом?
Проходимся по исходному тексту и создаем новый - зашифрованный
marvellikВ том, что так не делают.
согласен можно и так но я сделал замену в списке и в чем тут была проблема с циклом?
def decode(word,key): decode_word = '' for i in word: register = 65 if i == i.upper() else 97 letter = chr(register + (ord(i) - register - int(key)) % 26) decode_word += letter return decode_word with open('input.txt','r') as file: text = file.read().split() word_key = iter(text) for word,key in (zip(word_key ,word_key )): print(decode(word,key))
marvellikТеперь лучше
теперь скажете
# -*- coding:utf-8 -*- import string def get_alphabet(offset): keys = list(string.ascii_lowercase) values = list(keys[offset:] + keys[:offset]) keys += [l.upper() for l in keys] + [" "] values += [l.upper() for l in values] + [" "] return dict(zip(keys, values)) def encode(text, alphabet): return "".join(alphabet[w] for w in text) def decode(text, alphabet): reverse_alphabet = {v: k for k, v in alphabet.items()} return encode(text, reverse_alphabet) alphabet = get_alphabet(5) text = "Hellow word" encoded = encode(text, alphabet) print(encoded) decoded = decode(encoded, alphabet) print(decoded)
FishHookможет быть кроме всего прочего он еще и работать должен а ваш при ключе свыше 25 перестает работать. а при получении данных из файла неправильно дешифрует.
Я не претендую на истину в последней инстанции, но мне кажется, что pythonic код должен выглядеть как-то так
import string def get_alphabet(offset): keys = list(string.ascii_lowercase) values = list(keys[offset:] + keys[:offset]) keys += [l.upper() for l in keys] + [" "] values += [l.upper() for l in values] + [" "] return dict(zip(keys, values)) def encode(word, alphabet): return "".join(alphabet[w] for w in word) with open('input.txt') as file: text = file.read().split() word_key = iter(text) for word,key in (zip(word_key ,word_key )): alphabet = get_alphabet(int(key)) print(encode(word, alphabet))
word_key = iter(text) for word,key in (zip(word_key ,word_key )):
marvellikдопиливайте сами, я не собирался давать вам готовое решение какой-то частной задачи. Я вам показал, как пишут программы на питоне.
а ваш при ключе свыше 25 перестает работать
FishHook
Я не понимаю, что вы вообще делаете.
Суть вот этих телодвижений я осознать не могу.
text = ['Udymts', '5', 'Pula', '22', 'sefohywxj', '16', 'kzmlqba', '8', 'khbdmrd', '25']
blmnkя под вопрос автора писал код.допиливает пусть автор а мне больше нужно понять и вникнуть во все нюансы
Как мне брать слова и ключи из листа, который получается при разбиении строк исходного файла