鱼C论坛

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

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

[复制链接]
发表于 2021-1-9 20:38:19 | 显示全部楼层 |阅读模式
42鱼币
最佳答案
2021-1-9 20:38:20
第一题

  1. key = int(input("请输入秘钥:"))
  2. clear_text = input("请输入明文:")


  3. def translate(clear_text: str, key: int) -> str:
  4.     key = key % 26
  5.     j: str = ""
  6.     for s in clear_text:
  7.         letter_number = ord(s)

  8.         if (
  9.             letter_number + key <= 90
  10.             or letter_number >= 97
  11.             and letter_number + key <= 122
  12.         ):
  13.             j += chr(letter_number + key)
  14.         else:
  15.             j += chr(letter_number + key - 26)

  16.     return j


  17. cipher = translate(clear_text, key)
复制代码


第二题

  1. import re
  2. import string
  3. import random

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

  7. print(s)

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

  11. print(letters)
  12. print(digits)
  13. print(punctuation)
复制代码
BCBFB86D-26F0-4ADA-9397-3DB464445A9D.jpeg

最佳答案

查看完整内容

第一题 第二题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-9 20:38:20 | 显示全部楼层    本楼为最佳答案   
第一题

  1. key = int(input("请输入秘钥:"))
  2. clear_text = input("请输入明文:")


  3. def translate(clear_text: str, key: int) -> str:
  4.     key = key % 26
  5.     j: str = ""
  6.     for s in clear_text:
  7.         letter_number = ord(s)

  8.         if (
  9.             letter_number + key <= 90
  10.             or letter_number >= 97
  11.             and letter_number + key <= 122
  12.         ):
  13.             j += chr(letter_number + key)
  14.         else:
  15.             j += chr(letter_number + key - 26)

  16.     return j


  17. cipher = translate(clear_text, key)
复制代码


第二题

  1. import re
  2. import string
  3. import random

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

  7. print(s)

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

  11. print(letters)
  12. print(digits)
  13. print(punctuation)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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


第二个我还没学到正则表达式
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

第二题用一个判断自然就将字符分开了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

大佬我个人主页还有两道题有悬赏,您可以帮我看看嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 06:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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