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
是否可以使用最基本的方法/函数/运算符来帮助我解释它,或者至少让我开始如何解决它而不为我编写函数。要不胜感激。
答案 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.'
您当然可以只发送一个字母到函数而不是整个字符串,它仍然可以正常工作。