python凯撒加密之%

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)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值