blmnk
Май 15, 2016 19:30:57
Привет, делаю домашнее задание, нужна помощь.
Есть файл с набором зашифрованных слов и ключом к ним.
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)
FishHook
Май 16, 2016 11:59:48
marvellik
Вы не понимаете, как устроены циклы в питоне. Все плохо.
marvellik
Май 16, 2016 12:09:05
FishHook
Вы не понимаете, как устроены циклы в питоне. Все плохо.
ну так объясните в чем плохо? на то он и форум чтоб объясняли то чего нет в учебниках.
если бы в учебниках было все так прекрасно понятно и доступно то люди бы не задавали вопросов на форуме
FishHook
Май 16, 2016 12:11:32
marvellik
на то он и форум чтоб объясняли то чего нет в учебниках
Вы не читали ни одного учебника, не врите.
А если всё-таки читали, перечитайте еще раз.
Не поймете - в третий раз читайте.
marvellik
то люди бы не задавали вопросов на форуме
Вы представить себе не можете, о чем спрашивают люди на форумах.
marvellik
Май 16, 2016 12:18:39
FishHook
Вы не читали ни одного учебника, не врите
вот мой первый учебник
http://pythontutor.ru/visualizer/так же читал Douson_M_-_Programmiruem_na_Python_-_2014, python-3-samoe-neobhodimoe, Лутц М. - Изучаем Python (4-е издание)- 2011 а в чем проблема у меня с циклом так и не узнал. может просвятите лучше чем нотации читать и флуд разводить?
FishHook
Май 16, 2016 12:40:28
Зачем в вашем цикле нужен range?
Vigi
Май 16, 2016 12:41:13
Наверное имелось вот это:
Цикл по списку
Плохо: часто бывшие С программисты пишут так.
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
Май 16, 2016 13:00:23
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
Май 16, 2016 13:11:40
marvellik
а как тогда заменять элемент
А зачем вообще это делать? Проходимся по исходному тексту и создаем новый - зашифрованный.
Но если сильно надо, то делают так
for index, el in emumerate(items):
pass