Python 在字母表中多次向右移动字母的函数

Python 在字母表中多次向右移动字母的函数,python,Python,如果我输入character\u shift(A,2)我希望程序返回“C”。。或字符_移位(z,1)以返回“a”。。。但我不太确定如何改变它。。或者当它到达字母表的末尾时再绕回来 我在考虑将每个字母分配给一个变量,即var1=(a,a),然后执行大量的ifs,elifs。。。但我不太确定 是否可以使用最基本的方法/函数/运算符来帮助我解释它,或者至少给我一个如何开始的开始,而不必为我写出函数。任何一个都将不胜感激。您可以使用 def character_shift(letter, number)

如果我输入
character\u shift(A,2)
我希望程序返回“C”。。或字符_移位(z,1)以返回“a”。。。但我不太确定如何改变它。。或者当它到达字母表的末尾时再绕回来

我在考虑将每个字母分配给一个变量,即var1=(a,a),然后执行大量的ifs,elifs。。。但我不太确定

是否可以使用最基本的方法/函数/运算符来帮助我解释它,或者至少给我一个如何开始的开始,而不必为我写出函数。任何一个都将不胜感激。

您可以使用

def character_shift(letter, number)
    letter = [A,a,B,b,C,c,D,d,E,e,F,f,G,g,H,h,I,i,J,j,K,k,L,l,M,m,N,n,O,o,P,p,Q,q,R,r,S,s,T,t,U,u,V,v,X,x,Y,y,Z,z]
这需要两个字符串参数或一个字典。左边的参数是起始字母,右边的参数是它将被更改为的

str.maketrans() #for python 3
string.maketrans() #For python 2
出于您的需要,如果您将字符串“abcdefghijjlmnopqrstuvxyz”(请原谅,键入我在电话上)放在逗号的右侧,您使用了“cdefghijklmnopqrstuvxyzab”,这会将它们全部移到两个位置

table = str.maketrans('abc','def')
print('abc'.translate(table)
当然,您可以只向函数发送一个字母,而不是整个字符串,它仍然可以正常工作。

看看如何实现这一点。
>>> UPPER, LOWER = ord('A'), ord('a')
>>> def character_shift(text, shift):
    ... data = list(text)
    ... for i, c in enumerate(data):
    ...     if c.isalpha():
    ...         base = UPPER if c.isupper() else LOWER
    ...         data[i] = chr((ord(c) - base + shift) % 26 + base)
    ... return ''.join(data)

>>> character_shift('This is a test.', 0)
'This is a test.'
>>> character_shift('This is a test.', 1)
'Uijt jt b uftu.'
>>> character_shift('This is a test.', 2)
'Vjku ku c vguv.'
>>> character_shift('This is a test.', 26)
'This is a test.'
>>> character_shift('This is a test.', 3)
'Wklv lv d whvw.'