在字母表中向右移动字母多次的功能

时间:2014-03-05 07:18:42

标签: python

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]

如果我输入character_shift(A,2)我希望程序返回'C'..或character_shift(z,1)返回'a'...但我不太确定如何让它移位..或者一旦它到达字母表的末尾就会回绕。

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

是否可以使用最基本的方法/函数/运算符来帮助我解释它,或者至少让我开始如何解决它而不为我编写函数。要不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以使用

str.maketrans() #for python 3
string.maketrans() #For python 2

这需要两个字符串参数或一个字典。左边的参数是起始字母,右边的参数是它将被改变的内容。

table = str.maketrans('abc','def')
print('abc'.translate(table)

根据您的需要,如果您输入字符串'abcdefghijjlmnopqrstuvwxyz'(借口输入我在电话上)和逗号右边的'cdefghijklmnopqrstuvwxyzab',这会将它们移动到两个地方。

答案 1 :(得分:0)

>>> 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.'

您当然可以只发送一个字母到函数而不是整个字符串,它仍然可以正常工作。