在Python中减去字母
我在用Python做字母减法,但总是搞不对。
我知道怎么获取字母的ord
值。
比如:
a = "a"
x = ord(a) # -> this will give me 97.
但是当我尝试从这个字母中减去一些值时,结果总是和我想要的完全不同。
比如说,如果我从b
中减去1
,我得到的是97
(这代表a
),但我现在想从b
中减去14
,我希望能得到a
,然后再回到z
,继续减下去。
a = 97
b = 98
...
z = 122
我想在小写字母之间循环,这个范围是97
到122
。
举个例子,如果我从b
中减去14
,我得到的是84
,但我想要的结果是n
。
b - 14 = a - 13 = z - 12 (...) and so on.
希望你能明白我想表达的意思。
;)
有人能帮我一下吗?
祝好,
伊万。
1 个回答
9
我会先把小写字母单独提取出来,然后利用切片的功能来处理。当你在列表的开头往回减的时候,会得到一个负数的索引,这样就会从列表的后面开始计数。这应该能让你得到想要的效果。
>>> s = 'abcdefghijklmnopqrstuvwxyz'
>>> s.find('c')
2
>>> s[s.find('c') - 6]
'w'
注意,为了确保+
仍然能正常工作,你需要使用%
这个运算符,以防你在往前遍历列表的时候超出范围。
>>> s.find('x')
23
>>> s[(s.find('x') + 5) % 26]
'c'
>>> s[(s.find('c') - 6) % 26]
'w'