Уведомления

Группа в Telegram: @pythonsu

#1 Май 4, 2015 18:35:55

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Шифр Цезаря

хм,только есть одно но. При f(3) ключ-значение равны

"A" : "X" 
а должно быть “A” : “Y”

Офлайн

#2 Май 4, 2015 18:42:43

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Шифр Цезаря

то есть и для заглавной буквы при смещении оно должно учитывать ‘ " ’ этот элемент.

Отредактировано alex28746 (Май 4, 2015 18:46:26)

Офлайн

#3 Май 4, 2015 23:54:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Шифр Цезаря

alex28746
то есть и для заглавной буквы при смещении оно должно учитывать
Поправил там.
Кавычка отображается и на строчную, и на заглавную. Получается, что туда-сюда нельзя перегонять, так как будет искажаться сообщение.



Отредактировано py.user.next (Май 4, 2015 23:57:27)

Офлайн

#4 Май 5, 2015 00:28:27

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Шифр Цезаря

вот у нас весь то и прикол, в том, что эта кавычка должна быть только в малых буквах, в большой ее не должно быть…

Офлайн

#5 Май 5, 2015 00:32:36

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Шифр Цезаря

пардон, спасибо нашим преподам за неправильные обьяснения.

Офлайн

#6 Май 5, 2015 00:35:06

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Шифр Цезаря

Благодарю за помощь!)

Офлайн

#7 Май 5, 2015 21:45:40

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Шифр Цезаря

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 (Май 5, 2015 21:46:44)

Офлайн

#8 Май 5, 2015 22:01:52

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Шифр Цезаря

короче говоря все что нам пояснили так это то, что функция

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'}
и хоть убей не могу понять как это должно получиться, и нет ли вообще случайно ошибки в этом примере.

Офлайн

#9 Май 6, 2015 00:02:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Шифр Цезаря

alex28746
при вызове def(0) в теории должно получится
При f(0) он вообще не должен сдвигать. Должно быть ‘a’ -> ‘a’ .

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

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

alex28746
должна вернуть именно такой словарь
Второй код делает то же самое, только кавычку отображает не на строчную букву, а на заглавную.



Отредактировано py.user.next (Май 6, 2015 00:10:07)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version