字符为+1或-1的函数

时间:2011-01-27 02:50:24

标签: python

实现一个函数crypto(),其中字母表中奇数位置i的每个字符都将使用位置i + 1处的字符进行加密,而位于偶数位置的每个字符将使用位置i-1处的字符进行加密。或者说,'a'用'b'加密,'b'加'a','c'加'd','d'加'c','e'加'f','f'加' e'等。

这应该出现:

>>>>crypto('abc')

bad

>>>>crypto('OOZ')

PPY

*** ATTEMPT

def crypto():
    return [ord(c) in s]
s = 'cat'
alist = ascii_list(s)
print alist

alist[0] +=1
alist[1] +=14

我几乎是肯定的,我正在解决这个问题。

2 个答案:

答案 0 :(得分:5)

将此问题分为两部分:

  1. 鉴于一个角色,它应加密哪个角色?您可以在此处使用ord功能,从而走上正轨。你可以编写一个简单的函数,它接收一个字母并返回它应加密的字母,如果它应该被改变的话。
  2. 你如何通过字符串并将每个字母写入该函数?

答案 1 :(得分:3)

这是你想要的:

def crypto(s):
    return ''.join(chr(ord(c)+(1 if ord(c)%2 else -1)) for c in s)

说明:

  1. 获取字符串c中每个字符s的序号(即for c in s部分)
  2. 请注意,ord('a')ord('A')都是奇数(非常有用!),所以......
  3. ... (1 if ord(c)%2 else -1)部分评估为1为奇ord(c)-1为偶数
  4. 将上面获得的值添加到ord(c)并使用chr获取“加密”字符
  5. 使用''.join()
  6. 将所有内容粘合在一起