如何在python中移动和循环字符

问题描述 投票:0回答:1

我想增加每个字符的ASCII值,如果值> z,则循环(环绕)。

#small chars:
for char in string.ascii_lowercase:
    print factName + '(' + char + ', ' + chr(((ord(char)+key) % ord('z'))) + ').'

如果key = 3 >> a成为dwxy不正确!

python string mod
1个回答
2
投票

好吧,你减少了所有mod ord('z'),好像字母表的内部值是从零开始的。正如您所发现的,事实并非如此。相反,您需要进行溢出检查,然后减去数据集的宽度。基本逻辑是

if ord(chr) + key > ord('z'):
    result = ord(chr) + key - 26

这足以让你感动吗?

你也可以用一个简单的翻译表来做这个,从旧的字母表中构建一个新的字母表:剪切前3个字符并将它们附加到翻译字符串的后面:

blank_code = 'abcdefghijklmnopqrstuvwxyz'
new_code = blank_code[-n:] + blank_code[:n]

这为您提供了相应的“字母”。另请参阅translate方法以快速使用这些方法。

© www.soinside.com 2019 - 2024. All rights reserved.