Найти - Пользователи
Полная версия: Шифр Цезаря
Начало » Центр помощи » Шифр Цезаря
1 2
alex28746
хм,только есть одно но. При f(3) ключ-значение равны
"A" : "X" 
а должно быть “A” : “Y”
alex28746
то есть и для заглавной буквы при смещении оно должно учитывать ‘ " ’ этот элемент.
py.user.next
alex28746
то есть и для заглавной буквы при смещении оно должно учитывать
Поправил там.
Кавычка отображается и на строчную, и на заглавную. Получается, что туда-сюда нельзя перегонять, так как будет искажаться сообщение.
alex28746
вот у нас весь то и прикол, в том, что эта кавычка должна быть только в малых буквах, в большой ее не должно быть…
alex28746
пардон, спасибо нашим преподам за неправильные обьяснения.
alex28746
Благодарю за помощь!)
alex28746
py.user.next
и опять возвращаясь к этому заданию, вот смотри получается если кавычки поставить и в малых и в заглавных буквах, тогда при ситуации смещения букв назад может получиться два одинаковых ключа, и один из них тупо исчезает. или например
def f(n):
...     alpha = {}
...     lower = 'abcdefghijklmnopqrstuvwxyz'
...     upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
...     ll = len(lower)
...     for i, c in enumerate(lower):
...         alpha[c] = lower[(i + n) % ll]
...     lu = len(upper)
...     for i, c in enumerate(upper):
...         alpha[c] = upper[(i + n) % lu]
...     return alpha
... 
при вызове def(0) в теории должно получится
' " ' : 'a' и ' " ' : 'A'
но два ключа одинаковых не может быть, и второй пропадает и из-за этого все не работает как надо, может подскажешь как это исправить?
alex28746
короче говоря все что нам пояснили так это то, что функция
def dekoder(n):
...     alpha = {}
...     lower = '"abcdefghijklmnopqrstuvwxyz'
...     upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
...     ll = len(lower)
...     for i, c in enumerate(lower):
...         alpha[c] = lower[(i + ll - n) % ll]
...     lu = len(upper)
...     for i, c in enumerate(upper):
...         alpha[c] = upper[(i + lu - n) % lu]
...     return alpha
если ее вызвать
print dekoder(3)
должна вернуть именно такой словарь
{' ': 'x', 'A': 'Y', 'C': ' ', 'B': 'Z', 'E': 'B', 'D': 'A', 'G': 'D',
    'F': 'C', 'I': 'F', 'H': 'E', 'K': 'H', 'J': 'G', 'M': 'J', 'L': 'I',
    'O': 'L', 'N': 'K', 'Q': 'N', 'P': 'M', 'S': 'P', 'R': 'O', 'U': 'R',
    'T': 'Q', 'W': 'T', 'V': 'S', 'Y': 'V', 'X': 'U', 'Z': 'W', 'a': 'y',
    'c': ' ', 'b': 'z', 'e': 'b', 'd': 'a', 'g': 'd', 'f': 'c', 'i': 'f',
    'h': 'e', 'k': 'h', 'j': 'g', 'm': 'j', 'l': 'i', 'o': 'l', 'n': 'k',
    'q': 'n', 'p': 'm', 's': 'p', 'r': 'o', 'u': 'r', 't': 'q', 'w': 't',
    'v': 's', 'y': 'v', 'x': 'u', 'z': 'w'}
и хоть убей не могу понять как это должно получиться, и нет ли вообще случайно ошибки в этом примере.
py.user.next
alex28746
при вызове def(0) в теории должно получится
При f(0) он вообще не должен сдвигать. Должно быть ‘a’ -> ‘a’ .

Ты выясни, при f(1) куда должны отображаться символы a, A, и “ .
Потому что пока что это выглядит так, что со строчными буквами и кавычкой всё понятно, а с заглавными, если там кавычки нет, непонятно.

Если какой-то вызов отображает a на ”, то куда этот же вызов отображает A ?

alex28746
должна вернуть именно такой словарь
Второй код делает то же самое, только кавычку отображает не на строчную букву, а на заглавную.
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