3

我想和我的一个朋友玩得开心,我们是特工,但是如果没有绝密的消息代码来相互交流,我们怎么能成为特工呢?

# txt = the secret message to convert!
# n = number of times to jump from original position of letter in ASCII code

def spy_code(txt,n):
    result = ''
    for i in txt:
        c = ord(i)+n
        if ord(i) != c:
            b = chr(c)
            result += b
    print result

spy_code('abord mission, dont atk teacher!',5)

在将消息转换为秘密消息后,我们得到一行文本......

fgtwi%rnxxnts1%itsy%fyp%yjfhmjw&

问题是,我们想达到这样的结果:

fgtwi rnxxnts, itsy fyp yjfhmjw!

只考虑字母。

仅使用间谍代码转换字母,不要转换空格或特殊符号。

4

2 回答 2

2

一个简单的方法,使用 GP89 ​​给你的提示。

只需检查您当前的字符是否在字母列表中;否则就按原样返回

import string

vals = string.letters
def spy_code(txt,n):
    result = ''
    for i in txt:
        if i in vals:
            c = ord(i)+n
            if ord(i) != c:
                b = chr(c)
                result += b
        else:
            result += i
    print result

spy_code('abord mission, dont atk teacher!',5)

返回

fgtwi rnxxnts, itsy fyp yjfhmjw!
于 2012-11-03T16:22:37.013 回答
1

我知道这是旧的,但你可以使用str.isalpha()

s = 'Impending doom approaches!'
n = 6
result = ''

for c in s:
    result += chr(ord(c) + n) if c.isalpha() else c

print(result)
>>> Osvktjotm juus gvvxuginky!
于 2017-09-22T03:34:24.613 回答