original = str(input('give one: '))
K = int(input('move ahead K letters: '))
for i in original:
if (ord(i)+K)< ord('z'):
j = chr(ord(i)+K)
print(j,end = '')
else:
b = chr(ord(i)-ord('z')+ord('a')+K)
print(b,end = '')只有小写时这个是很简单易懂的。但是有了大写就不可以了,加多重elif出来的结果不对。
original = str(input('give one: '))
K = int(input('move ahead K letters: '))
for i in original:
if i>='A' and i <= 'Z':
j = chr(ord('A')+(ord(i)-ord('A')+K)%26)#注意整除符号%的运用。
print(j,end='')
elif i >='a' and i <= 'z':
j = chr(ord('a')+(ord(i)-ord('a')+K)%26)
print(j,end='')
小于26的数%26,商为0,余数还是原数。
大于26的数%26,商为1,相当于原数减去了26。
仔细体会%的用法。
另有一例,也是利用%进行了“减法”
#求三位数的逆序数 倒过来 不是线性代数相关
a = int(input('give: '))
d1 = a//100
d2 = a%100//10
d3 = a%10
print(d3*100+d2*10+d1)
#四位数
a = int(input('give: '))
d1 = a//1000
d2 = a%1000//100
d3 = a%100//10
d4 = a%10
print(d4*1000+d3*100+d2*10+d1)