其中英文大小写、数字加密方法是分别循环右移5 位,中文是循环右移100位。加密输出之后并进行反向解密

输入由中文、大小写英文和数字构成的代号
宇符串,运用类恺撒密码加密解密。其中英文大小写、数字加密方法是分别循环右移5
位,中文是循环右移100位。加密输出之后并进行反向解密。
提示:中文字符的Unicode编码范围是10x
4e00,0x9fa5],共20902个字符。请以右移10
0位循环移位数量,编写中文文本的类恺撒密码加解密方法。


def caesar_encrypt(text):
    encrypted_text = ""
    for char in text:
        if 'A' <= char <= 'Z':
            encrypted_text += chr((ord(char) - ord('A') + 5) % 26 + ord('A'))
        elif 'a' <= char <= 'z':
            encrypted_text += chr((ord(char) - ord('a') + 5) % 26 + ord('a'))
        elif '0' <= char <= '9':
            encrypted_text += chr((ord(char) - ord('0') + 5) % 10 + ord('0'))
        elif '\u4e00' <= char <= '\u9fa5':
            encrypted_text += chr((ord(char) - ord('\u4e00') + 100) % 20902 + ord('\u4e00'))
        else:
            encrypted_text += char
    return encrypted_text


def caesar_decrypt(text):
    decrypted_text = ""
    for char in text:
        if 'A' <= char <= 'Z':
            decrypted_text += chr((ord(char) - ord('A') - 5) % 26 + ord('A'))
        elif 'a' <= char <= 'z':
            decrypted_text += chr((ord(char) - ord('a') - 5) % 26 + ord('a'))
        elif '0' <= char <= '9':
            decrypted_text += chr((ord(char) - ord('0') - 5) % 10 + ord('0'))
        elif '\u4e00' <= char <= '\u9fa5':
            decrypted_text += chr((ord(char) - ord('\u4e00') - 100) % 20902 + ord('\u4e00'))
        else:
            decrypted_text += char
    return decrypted_text


text = input("请输入要加密的文本:")
encrypted_text = caesar_encrypt(text)
print("加密后的文本:", encrypted_text)
decrypted_text = caesar_decrypt(encrypted_text)
print("解密后的文本:", decrypted_text)

这个问题, 没看明白详细说说 ?

加密代码如下:

def encrypt(code):
result = ""
for char in code:
if '\u4e00' <= char <= '\u9fa5': # 中文
result += chr((ord(char) - 0x4e00 + 100) % (0x9fa5 - 0x4e00 + 1) + 0x4e00)
elif 'a' <= char <= 'z': # 小写字母
result += chr((ord(char) - ord('a') + 5) % 26 + ord('a'))
elif 'A' <= char <= 'Z': # 大写字母
result += chr((ord(char) - ord('A') + 5) % 26 + ord('A'))
elif '0' <= char <= '9': # 数字
result += chr((ord(char) - ord('0') + 5) % 10 + ord('0'))
else:
result += char # 其他字符不加密
return result

解密代码如下:

def decrypt(code):
result = ""
for char in code:
if '\u4e00' <= char <= '\u9fa5': # 中文
result += chr((ord(char) - 0x4e00 - 100) % (0x9fa5 - 0x4e00 + 1) + 0x4e00)
elif 'a' <= char <= 'z': # 小写字母
result += chr((ord(char) - ord('a') - 5) % 26 + ord('a'))
elif 'A' <= char <= 'Z': # 大写字母
result += chr((ord(char) - ord('A') - 5) % 26 + ord('A'))
elif '0' <= char <= '9': # 数字
result += chr((ord(char) - ord('0') - 5) % 10 + ord('0'))
else:
result += char # 其他字符不解密
return result

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/728708
  • 除此之外, 这篇博客: 电商零售交易数据分析中的 描述指标中购买产品的数量最小值为-8095,单品单价为0,这两个不符合实际情况确认为异常值。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • querySer=salesOR_NoDupNA.loc[:,'Quantity']>0
    salesOR_NoDupNA=salesOR_NoDupNA.loc[querySer,:]
    querySer1=salesOR_NoDupNA.loc[:,'UnitPrice']>0
    salesOR_NoDupNA=salesOR_NoDupNA.loc[querySer1,:]
    print('after delete outlier:',salesOR_NoDupNA.shape)
    
    after delete outlier: (392692, 12)