鱼C论坛

 找回密码
 立即注册
查看: 1370|回复: 2

python学习30讲的一个题目不太懂

[复制链接]
发表于 2022-7-27 19:15:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:凯撒密码是一种通过位移加密的方法,对 26 个(大小写)字母进行位移加密,比如下方是正向位移 6 位的字母对比表:
明文字母表如下
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
密文字母表如下版权属于:
GHIJKLMNOPQRSTUVWXYZABCDEFghijklmnopqrstuvwxyzabcdef
所以,如果给定加密的明文是:
I love FishC?
那么程序加密后输出的密文便是:
O rubk LoynI&H


text = input("请输入需要加密的密文(只支持英文字母):")
number = int(input("请输入移动的位数:"))
dz = 0 #当与位数相加时 >z
DZ = 0
secret = ""

if number > 0 :
    for i in text:
        if i != " ":
            if ord(i) + number > ord('z'):
                dz = ord('a') + ((ord(i) + number) - ord('z'))
                secret = secret + chr(dz)
            elif ord(i) + number > ord('z'):
                DZ = ord('A') + ((ord(i) + number) - ord('Z'))
                secret = secret + chr(DZ)
            else:
                secret = secret + chr(ord(i) + number)
        else:
            secret = secret + " "
else:
    for i in text:
        if i != " ":
            if ord(i) + number < ord('a'):
                dz = ord('z') - (ord('a') - (ord(i) + number) ) + 1
                secret = secret + chr(dz)
            elif ord(i) + number < ord('A'):
                DZ = ord('Z') - (ord('A') - (ord(i) + number) ) + 1
                secret = secret + chr(DZ)
            else:
                secret = secret + chr(ord(i) + number)
        else:
            secret = secret + " "
print(secret)


想请各位大佬帮忙看一下 为什么我这串代码输入:I love FishC 和 -6
得到的是:] fipy ZcmbW
而不是:C fipy ZcmbW
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-27 20:08:48 | 显示全部楼层
本帖最后由 jackz007 于 2022-7-27 20:21 编辑
text = input("请输入需要加密的密文(只支持英文字母):")
number = int(input("请输入移动的位数:")) % 26
secret = ""
for c in text:
    if c >= 'A' and c < 'Z':
        secret += chr(ord('A') + (ord(c) - ord('A') + number) % 26)
    elif c >= 'a' and c < 'z':
        secret += chr(ord('a') + (ord(c) - ord('a') + number) % 26)
    else:
        secret += c
print(secret)
        运行实况:
D:\[00.Exerciese.2022]\Python>python x.py
请输入需要加密的密文(只支持英文字母):I love FishC
请输入移动的位数:-6
C fipy ZcmbW

D:\[00.Exerciese.2022]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-2 11:13:33 | 显示全部楼层
再运行一次试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 20:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表