用Python实现ROT13

来源:互联网 发布:统计查询sql语句 编辑:程序博客网 时间:2024/05/11 04:06

ROT13(回转13位,rotateby13places,有时中间加了个减号称作ROT-13)是一种简易的置换暗码。它是一种在网路论坛用作隐藏八卦、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。

套用ROT13到一段文字上仅仅只需要检查字元字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可[2]。A换成N、B换成O、依此类推到M换成Z,然后序列反转:N换成A、O换成B、最后Z换成M。只有这些出现在英文字母里头的字元受影响;数字、符号、空白字元以及所有其他字元都不变。因为只有在英文字母表里头只有26个,并且26=2×13,ROT13函数是它自己的逆反。

import string




def rotate_letter(letter, n):
    """Rotates a letter by n places.  Does not change other chars.


    letter: single-letter string
    n: int


    Returns: single-letter string
    """
    if letter.isupper():
        start = ord('A')
    elif letter.islower():
        start = ord('a')
    else:
        return letter


    c = ord(letter) - start
    i = (c + n) % 26 + start
    return chr(i)




def rotate_word(word, n):
    """Rotates a word by n places.


    word: string
    n: integer


    Returns: string
    """
    res = ''
    for letter in word:
        res += rotate_letter(letter, n)
    return res




if __name__ == '__main__':
    print rotate_word('cheer', 7)
    print rotate_word('melon', -10)
    print rotate_word('sleep', 9)

0 0
原创粉丝点击