我把你的代码改造一下:
def abc(j,move):
if 65 <= j <= 90:
j += move
while j < 65:
j += 26
while j > 90:
j -= 26
elif 97 <= j <= 122:
j += move
while j < 97:
j += 26
while j > 122:
j -= 26
elif 48 <= j <= 57:
j += move
#print(j)
while j < 48:
j += 17
while j > 57:
j -= 17
return chr(j)
def translate(psd,move):
res = ''
for p in psd:
res += abc(ord(p),move)
return res
password = 'ABCDabcd1234'
print(translate(password,1))
print(translate(password,2))
print(translate(password,3))
print(translate(password,10))
print()
print(translate(password,-1))
print(translate(password,-2))
print(translate(password,-3))
print(translate(password,-10))
返回结果:
BCDEbcde2345
CDEFcdef3456
DEFGdefg4567
KLMNklmn*+,-
ZABCzabc0123
YZAByzab/012
XYZAxyza./01
QRSTqrst89)*
就是把一个字符串中的大写、小写字母和数字,同时移动几个位置(move就是移动的位数)
move为正数向后移动,为负数向前移动(把尾部的Z,z反过来接到头上去)