鱼C论坛

 找回密码
 立即注册
查看: 2361|回复: 4

[已解决]求大佬解决(要源代码)(有赏)

[复制链接]
发表于 2021-1-9 20:38:19 | 显示全部楼层 |阅读模式
42鱼币
最佳答案
2021-1-9 20:38:20
第一题
key = int(input("请输入秘钥:"))
clear_text = input("请输入明文:")


def translate(clear_text: str, key: int) -> str:
    key = key % 26
    j: str = ""
    for s in clear_text:
        letter_number = ord(s)

        if (
            letter_number + key <= 90
            or letter_number >= 97
            and letter_number + key <= 122
        ):
            j += chr(letter_number + key)
        else:
            j += chr(letter_number + key - 26)

    return j


cipher = translate(clear_text, key)

第二题
import re
import string
import random

c = string.ascii_letters + string.digits + string.punctuation
t = [random.choice(c) for i in range(10)]
s = "".join(t)

print(s)

letters = "".join(re.findall(r"\d", s))
digits = "".join(re.findall(r"[a-zA-Z]", s))
punctuation = "".join(re.findall(r"[\W_]", s))

print(letters)
print(digits)
print(punctuation)
BCBFB86D-26F0-4ADA-9397-3DB464445A9D.jpeg

最佳答案

查看完整内容

第一题 第二题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-9 20:38:20 | 显示全部楼层    本楼为最佳答案   
第一题
key = int(input("请输入秘钥:"))
clear_text = input("请输入明文:")


def translate(clear_text: str, key: int) -> str:
    key = key % 26
    j: str = ""
    for s in clear_text:
        letter_number = ord(s)

        if (
            letter_number + key <= 90
            or letter_number >= 97
            and letter_number + key <= 122
        ):
            j += chr(letter_number + key)
        else:
            j += chr(letter_number + key - 26)

    return j


cipher = translate(clear_text, key)

第二题
import re
import string
import random

c = string.ascii_letters + string.digits + string.punctuation
t = [random.choice(c) for i in range(10)]
s = "".join(t)

print(s)

letters = "".join(re.findall(r"\d", s))
digits = "".join(re.findall(r"[a-zA-Z]", s))
punctuation = "".join(re.findall(r"[\W_]", s))

print(letters)
print(digits)
print(punctuation)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-9 21:17:18 | 显示全部楼层
key=int(input('请输入秘钥:'))
s=input('请输入明文:')
a='abcdefghijklmnopqrstuvwxyz'
b=a[key:]+a[:key]
a+=a.upper()
b+=b.upper()
result=s.translate(str.maketrans(a,b))
print('密文为:',result)

第二个我还没学到正则表达式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-9 23:02:15 | 显示全部楼层
第一题用判断:明文 + 密钥 - 32 >= 'Z' ,令其等于: 明文 + 密钥 - 32 - ’Z' +  ‘A' 即可

第二题用一个判断自然就将字符分开了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-10 01:29:48 | 显示全部楼层

大佬我个人主页还有两道题有悬赏,您可以帮我看看嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 21:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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