在Python中减去字母

2 投票
1 回答
27873 浏览
提问于 2025-04-18 17:55

我在用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

我想在小写字母之间循环,这个范围是97122

举个例子,如果我从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'

撰写回答