鱼C论坛

 找回密码
 立即注册
查看: 2655|回复: 26

[已解决]解密游戏

[复制链接]
发表于 2020-5-15 18:07:27 | 显示全部楼层 |阅读模式
3鱼币
题目: 当字母为小写时 向前跳4位数 如:
a---> e
当字母为大写时 向后跳2位数 如
A---> Y
解密:aA--->eY
请把Srmgshi Rverwjsvqexmsr Dsvqex解密
---------------------------------------------------------------------------
下面是我自己写的然后疯狂报错求大佬解答
# 闭环小写减一轮加4  大写加一轮减2
str1 = input("请输入要解密的内容:")
for each in str1:
    # 小写
    if each.islower():
        i = ord(each)
        if i <= 118:
            a1 = chr(i+4)
        else:
            a2 = chr(i-22)
# 大写
    else:
        a = ord(each)
        if a > 66:
            a3 = chr(a-2)
        else:
            a4 = chr(a+24)
# 向上查找a1 a2 a3 a4
nonlocal a1, a2, a3, a4
a5 = a1 + a2 + a3 + a4
print(a5)
最佳答案
2020-5-15 18:07:28
用你的方式帮你改了下代码 , 如果帮助到你了 给个最佳吧
  1. str1 = input("请输入要解密的内容:")
  2. a = ''
  3. for each in str1:

  4.     if each.islower():
  5.         i = ord(each)
  6.         if i <= 118:
  7.             a += chr(i-4)
  8.         else:
  9.             a += chr(i-22)

  10.     elif each.isupper():
  11.         i = ord(each)
  12.         if i > 66:
  13.             a += chr(i+2)
  14.         else:
  15.             a += chr(i+24)
  16.     elif each == ' ':
  17.         a += each
  18. print(a)
复制代码
4NG~QPYX09K7_~_31{NWP(W.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-16 16:18:39 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 21:39:42 From FishC Mobile | 显示全部楼层
本帖最后由 _2_ 于 2020-5-15 21:41 编辑
大大的拳头 发表于 2020-5-15 20:21


首先在外部声明 a1 a2 a3 a4:
  1. str1 = input("请输入要解密的内容:")
  2. a1, a2, a3, a4 = None
  3. for each in str1:
  4.     # 小写
  5.     if each.islower():
  6.         i = ord(each)
  7.         if i <= 118:
  8.             a1 = chr(i+4)
  9.         else:
  10.             a2 = chr(i-22)
  11. # 大写
  12.     else:
  13.         a = ord(each)
  14.         if a > 66:
  15.             a3 = chr(a-2)
  16.         else:
  17.             a4 = chr(a+24)

  18. a5 = a1 + a2 + a3 + a4
  19. print(a5)
复制代码

评分

参与人数 1鱼币 +2 收起 理由
大大的拳头 + 2 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

发表于 2020-5-15 21:37:36 | 显示全部楼层
成功了 Screenshot 2020_5_15 21_20_11.jpeg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 20:59:10 | 显示全部楼层
jerryxjr1220 发表于 2020-5-15 19:16
Unicode Transformation Format

你的题目讲反了吧。应该小写的e-->a,大写的A-->C
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 20:40:10 | 显示全部楼层
Twilight6 发表于 2020-5-15 20:22
你把整个运行后的截图发下上来

如何正确地发代码、上传图片和附件?

很明显是因为他输入的字符串里没有 wxyz 这几个字符
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 20:22:46 | 显示全部楼层

你把整个运行后的截图发下上来

如何正确地发代码、上传图片和附件?
https://fishc.com.cn/thread-52272-1-1.html
(出处: 鱼C论坛)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-15 20:21:46 | 显示全部楼层
本帖最后由 大大的拳头 于 2020-5-15 20:23 编辑

i.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-15 20:20:12 | 显示全部楼层
本帖最后由 大大的拳头 于 2020-5-15 20:24 编辑
Twilight6 发表于 2020-5-15 20:18
怎么会 我运行都是正常的


我也不知道怎么回事
i.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 20:18:55 | 显示全部楼层
大大的拳头 发表于 2020-5-15 20:18
还是报错  
a5 = a1 + a2 + a3 + a4
NameError: name 'a2' is not defined


怎么会 我运行都是正常的

213213.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-15 20:18:26 | 显示全部楼层
本帖最后由 大大的拳头 于 2020-5-15 20:29 编辑
Twilight6 发表于 2020-5-15 20:14
去掉 nonlocal  这个一般都是在函数、方法里面用的  

用于声明该变量为当前与全局的命名空间


还是报错  
a5 = a1 + a2 + a3 + a4
NameError: name 'a2' is not defined

这个是班上一个大佬的代码
14.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 20:14:00 | 显示全部楼层
  1. str1 = input("请输入要解密的内容:")
  2. for each in str1:
  3.     # 小写
  4.     if each.islower():
  5.         i = ord(each)
  6.         if i <= 118:
  7.             a1 = chr(i+4)
  8.         else:
  9.             a2 = chr(i-22)
  10. # 大写
  11.     else:
  12.         a = ord(each)
  13.         if a > 66:
  14.             a3 = chr(a-2)
  15.         else:
  16.             a4 = chr(a+24)
  17. # 向上查找a1 a2 a3 a4
  18. a5 = a1 + a2 + a3 + a4
  19. print(a5)
复制代码

去掉 nonlocal  这个一般都是在函数、方法里面用的  

用于声明该变量为当前与全局的命名空间

如果帮助到你了,给个最佳吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-15 19:52:39 | 显示全部楼层
本帖最后由 大大的拳头 于 2020-5-15 20:04 编辑

str1 = input("请输入要解密的内容:")
for each in str1:
    # 小写
    if each.islower():
        i = ord(each)
        if i <= 118:
            a1 = 0
            a1 = chr(i+4)
        else:
            a2 = chr(i-22)
# 大写
    else:
        a = ord(each)
        if a > 66:
            a3 = 0
            a3 = chr(a-2)
        else:
            a4 = 0
            a4 = chr(a+24)
a5 = a1 + a2 + a3 + a4
print(a5)
拿去nonloal后 找不到a1 a2 a3 a4 有没有解决办法
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-15 19:51:08 | 显示全部楼层

拿去后可否用其他办法让他输出,主要是找到其他变量
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-15 19:32:18 | 显示全部楼层
_2_ 发表于 2020-5-15 19:13
a1 a2 a3 a4 是在何处定义的?
请贴代码,不要只发图片,谢谢

嗯代码在图片上面
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 19:31:59 | 显示全部楼层

让Python去做,我们复制不就好了吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 19:28:15 | 显示全部楼层

写字典太麻烦,懒
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 19:25:36 | 显示全部楼层
jerryxjr1220 发表于 2020-5-15 19:16
xiaoxie={'abcdefghijklmnopqrstuvwxyz': 'efghijklmnopqrstuvwxyzabcd' for i in range(26)}
daxie={'ABC ...


直接一个字典,不好吗
  1. _func={'A': 'Y', 'B': 'Z', 'C': 'A', 'D': 'B', 'E': 'C', 'F': 'D', 'G': 'E', 'H': 'F', 'I': 'G', 'J': 'H', 'K': 'I', 'L': 'J', 'M': 'K', 'N': 'L', 'O': 'M', 'P': 'N', 'Q': 'O', 'R': 'P', 'S': 'Q', 'T': 'R', 'U': 'S', 'V': 'T', 'W': 'U', 'X': 'V', 'Y': 'W', 'Z': 'X', 'a': 'e', 'b': 'f', 'c': 'g', 'd': 'h', 'e': 'i', 'f': 'j', 'g': 'k', 'h': 'l', 'i': 'm', 'j': 'n', 'k': 'o', 'l': 'p', 'm': 'q', 'n': 'r', 'o': 's', 'p': 't', 'q': 'u', 'r': 'v', 's': 'w', 't': 'x', 'u': 'y', 'v': 'z', 'w': 'a', 'x': 'b', 'y': 'c', 'z': 'd'}.get
  2. func=lambda x:''.join(_func(i,i)for i in x)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 19:24:54 | 显示全部楼层
大大的拳头 发表于 2020-5-15 19:19
拿去后就找不到a1a2 等 变量了照样报错

不拿去也找不到
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-15 19:19:04 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-15 19:15
全局作用域nonlocal,谁教给你的?
把那行去了就可以了

拿去后就找不到a1a2 等 变量了照样报错
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 19:16:54 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2020-5-15 20:57 编辑
  1. xiaoxie={'efghijklmnopqrstuvwxyzabcd'[i]: 'abcdefghijklmnopqrstuvwxyz'[i]  for i in range(26)}
  2. daxie={'YZABCDEFGHIJKLMNOPQRSTUVWX'[i]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[i]  for i in range(26)}

  3. for i in 'Srmgshi Rverwjsvqexmsr Dsvqex':
  4.     if i in xiaoxie:
  5.         print(xiaoxie[i], end='')
  6.     elif i in daxie:
  7.         print(daxie[i], end='')
  8.     else:
  9.         print(' ', end='')
复制代码


Unicode Transformation Format

评分

参与人数 1鱼币 +2 收起 理由
大大的拳头 + 2 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-26 04:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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