如何执行多班制的凯撒密码

时间:2017-04-09 00:37:09

标签: python-3.x caesar-cipher

例如,如果我将4个班次应用于" breakzone"比预期的更像:

" B"将被移动2个字符 " R"将被移动3个字符 " E"将被移动4个字符 ""将被移动5个字符 然后我们以2的初始转移量开始回复: " K"将被移动2个字符 等...

这是我到目前为止所拥有的:

statement = input("Enter string: ")
multiple_shifts = input(int("Enter shift amounts: "))
def caesar(word,multiple_shifts):
    for ch in statement:
        if ch = statement[0]:

我知道它并不多,但我绝对迷失了,任何帮助都表示赞赏。不要求你写自己的代码"只是指出我正确的方向,所以我非常欣赏这个主题的任何知识。

1 个答案:

答案 0 :(得分:2)

这是一个非常粗略的实施:

import sys

def caesar(word, shifts):
    word_list = list(word.lower())
    result = []
    s = 0
    for c in word_list:
        next_ord = ord(c) + s + 2
        if next_ord > 122:
            next_ord = 97

        result.append(chr(next_ord))
        s = (s + 1) % shifts
    return "".join(result)

if __name__ == "__main__":
    print(caesar("breakzone", 4))

如果您想知道12297的内容是什么,那么这些是小写za的Unicode值。您可以轻松更改上述内容以支持完整的Unicode(例如,能够编码H3ll0)。 Here是一张可能对您有帮助的Unicode图表。