使用python将字符左移

2024-06-17 11:40:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手。 我想根据字符的位置来移动字符。例如

pos=3然后将c替换为z,b替换为y,a替换为x,类似于c替换为z,b替换为y,a替换为x

我试过什么? 我试过硬编码值为

for i in s:
     if ord(i) == 99:
          return z
     if ord(i) == 98:
          return x
     ...
     ...

是否有任何内置函数可用于执行此操作?或者其他更简单的方法来达到这个目的?在

编辑:

如果字符串是"abcdef" 输出将是"xyzabc"

I用户输入"AbCdEf",则输出为"XyZaBc"


Tags: 方法函数字符串inpos目的编辑编码
3条回答

您可以将ordchr结合使用:

ord("e") + 3
   -> 104
chr(ord("e") + 3)
   -> 'h'

如果您正在使用Python2,并且希望转换整个句子,请考虑制作一个字符转换表。https://docs.python.org/2/library/string.html#string.maketrans

import string

def caesar_shift(secret, shift):
    lcase = string.ascii_lowercase
    ucase = string.ascii_uppercase
    shift = shift % len(lcase) # force shift to be between 0 and 25, inclusive
    trans = string.maketrans(
        ''.join([lcase,ucase]),
        ''.join([lcase[shift:], lcase[shift:],
                  ucase[shift:], ucase[:shift]]))
    return string.translate(secret, trans)

请记住字符串.maketrans以及字符串.翻译作为改进Python的Unicode字符串处理的一部分,在python3中被删除。在

使用负值或正值向左/向右移动。 https://en.wikipedia.org/wiki/Caesar_cipher

根据您的需求,我理解您需要演示一个Substitution Cipher。它的实现非常简单。我将给出函数大纲伪代码:

char substitutionCipher(int leftRotateBy, char alphabet) {
    int pos = (int) alphabet - (int) 'a';
    pos -= leftRotateBy;
    if(pos < 0) {
       pos += 26;
    }
    return (char) (pos + (int) 'a');
}

请注意,此大纲仅适用于小写字母。您可以将其修改为也适用于大写字母。谢谢!在

相关问题 更多 >