{"id":2458,"date":"2015-08-02T13:51:00","date_gmt":"2015-08-02T05:51:00","guid":{"rendered":"http:\/\/ixyzero.com\/blog\/?p=2458"},"modified":"2015-08-02T13:51:00","modified_gmt":"2015-08-02T05:51:00","slug":"%e7%94%a8python%e5%ae%9e%e7%8e%b0%e7%9a%84rot13%e7%bc%96%e8%a7%a3%e7%a0%81","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/2458.html","title":{"rendered":"\u7528Python\u5b9e\u73b0\u7684rot13\u7f16\u89e3\u7801"},"content":{"rendered":"<h6>#\u4e00\u76ee\u4e86\u7136\u7248<\/h6>\n<pre class=\"lang:default decode:true\">def rot13(s):\n    result = \"\"\n    for v in s:\n        c = ord(v)\n        if c &gt;= ord('a') and c &lt;= ord('z'):\n            if c &gt; ord('m'):\n                c -= 13\n            else:\n                c += 13\n        elif c &gt;= ord('A') and c &lt;= ord('Z'):\n            if c &gt; ord('M'):\n                c -= 13\n            else:\n                c += 13\n        result += chr(c)\n    return result<\/pre>\n<h6>#\u5c0f\u5199\u5b57\u6bcd(\u4e0d\u5b8c\u5168\u7248)<\/h6>\n<pre class=\"lang:default decode:true \">def rot13(s):\n    chars = \"abcdefghijklmnopqrstuvwxyz\"\n    trans = chars[13:] + chars[:13]\n    rot_char = lambda c: trans[chars.find(c)] if chars.find(c)&gt;-1 else c\n    return ''.join( rot_char(c) for c in s )<\/pre>\n<pre class=\"lang:default decode:true \">import string\ndef make_rot_n(n):\n\tlc = string.lowercase\n\ttrans = string.maketrans(lc, lc[n:] + lc[:n])\n\treturn lambda s: string.translate(s, trans)\nrot13 = make_rot_n(13)\n\nprint rot13('gandalf')<\/pre>\n<pre class=\"lang:default decode:true \">d = {}\nfor c in (65, 97):\n    for i in range(26):\n        d[chr(i+c)] = chr((i+13) % 26 + c)\n\nprint \"\".join([d.get(c, c) for c in s])<\/pre>\n<h6>#\u5927\u5c0f\u5199\u5b57\u6bcd<\/h6>\n<pre class=\"lang:default decode:true \">def rot13(s):\n\trot = lambda x:chr(ord(x)+13) if chr(ord(x.lower())+13).isalpha()==True else chr(ord(x)-13)\n\ts = [rot(i) for i in filter(lambda x:x!=',', map(str,s))]\n\treturn ''.join(s)<\/pre>\n<pre class=\"lang:default decode:true\">def rot13(s):\n    chars = \"AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz\"\n    trans = chars[26:] + chars[:26]\n    rot_char = lambda c: trans[chars.find(c)] if chars.find(c) &gt; -1 else c\n    return ''.join(rot_char(c) for c in s)<\/pre>\n<h6>#zip\/map\/join<\/h6>\n<pre class=\"lang:default decode:true \">def rot13(string):\n    CLEAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'\n    ROT13 = 'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm'\n    TABLE = {x: y for x, y in zip(CLEAR, ROT13)}\n\n    return ''.join(map(lambda x: TABLE.get(x, x), string))<\/pre>\n<h6>#yield<\/h6>\n<pre class=\"lang:default decode:true \">def rot13(clear):\n    CLEAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'\n    ROT13 = 'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm'\n    TABLE = {x: y for x, y in zip(CLEAR, ROT13)}\n\n    for c in clear:\n        yield TABLE.get(c, c)<\/pre>\n<h6>#\u81ea\u5b9a\u4e49Offset<\/h6>\n<pre class=\"lang:default decode:true \">def rot13(s, OffSet=13):\n\tdef encodeCh(ch):\n\t\tf = lambda x: chr((ord(ch)-x+OffSet) % 26 + x)\n\t\treturn f(97) if ch.islower() else (f(65) if ch.isupper() else ch)\n\treturn ''.join(encodeCh(c) for c in s)\n\ns = 'Hello!'\nprint rot13(s)\t\t\t# Uryyb!\nprint rot13(rot13(s))\t# Hello!\nprint rot13(s, 26)\t\t# Hello!<\/pre>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/www.cnblogs.com\/c-hy\/archive\/2012\/08\/04\/2623453.html\" target=\"_blank\">http:\/\/www.cnblogs.com\/c-hy\/archive\/2012\/08\/04\/2623453.html<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/3269686\/short-rot13-function\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/3269686\/short-rot13-function<\/a><\/li>\n<li><a href=\"http:\/\/www.dotnetperls.com\/rot13-python\" target=\"_blank\">http:\/\/www.dotnetperls.com\/rot13-python<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>#\u4e00\u76ee\u4e86\u7136\u7248 def rot13(s): result = &#8220;&#8221; for v in s: c = ord(v) [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,7],"tags":[8,218],"class_list":["post-2458","post","type-post","status-publish","format-standard","hentry","category-knowledgebase-2","category-programing","tag-python","tag-rot13"],"views":4033,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/2458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=2458"}],"version-history":[{"count":0,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/2458\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=2458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=2458"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=2458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}