大大的拳头 发表于 2020-5-15 18:07:27

解密游戏

题目: 当字母为小写时 向前跳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)

Twilight6 发表于 2020-5-15 18:07:28

用你的方式帮你改了下代码 , 如果帮助到你了 给个最佳吧{:10_287:}
str1 = input("请输入要解密的内容:")
a = ''
for each in str1:

    if each.islower():
      i = ord(each)
      if i <= 118:
            a += chr(i-4)
      else:
            a += chr(i-22)

    elif each.isupper():
      i = ord(each)
      if i > 66:
            a += chr(i+2)
      else:
            a += chr(i+24)
    elif each == ' ':
      a += each
print(a)

xiaosi4081 发表于 2020-5-15 18:14:36

沙发

Twilight6 发表于 2020-5-15 18:37:34

晚点来做嘿嘿

大大的拳头 发表于 2020-5-15 18:49:16

{:10_266:}

_2_ 发表于 2020-5-15 19:13:58

大大的拳头 发表于 2020-5-15 18:49


a1 a2 a3 a4 是在何处定义的?
请贴代码,不要只发图片,谢谢

永恒的蓝色梦想 发表于 2020-5-15 19:15:02

本帖最后由 永恒的蓝色梦想 于 2020-5-15 19:18 编辑

大大的拳头 发表于 2020-5-15 18:49


全局作用域nonlocal,谁教给你的?
还有不少的问题

jerryxjr1220 发表于 2020-5-15 19:16:54

本帖最后由 jerryxjr1220 于 2020-5-15 20:57 编辑

xiaoxie={'efghijklmnopqrstuvwxyzabcd': 'abcdefghijklmnopqrstuvwxyz'for i in range(26)}
daxie={'YZABCDEFGHIJKLMNOPQRSTUVWX': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'for i in range(26)}

for i in 'Srmgshi Rverwjsvqexmsr Dsvqex':
    if i in xiaoxie:
      print(xiaoxie, end='')
    elif i in daxie:
      print(daxie, end='')
    else:
      print(' ', end='')
{:5_93:}
Unicode Transformation Format

大大的拳头 发表于 2020-5-15 19:19:04

永恒的蓝色梦想 发表于 2020-5-15 19:15
全局作用域nonlocal,谁教给你的?
把那行去了就可以了

拿去后就找不到a1a2 等 变量了照样报错

永恒的蓝色梦想 发表于 2020-5-15 19:24:54

大大的拳头 发表于 2020-5-15 19:19
拿去后就找不到a1a2 等 变量了照样报错

不拿去也找不到

永恒的蓝色梦想 发表于 2020-5-15 19:25:36

jerryxjr1220 发表于 2020-5-15 19:16
xiaoxie={'abcdefghijklmnopqrstuvwxyz': 'efghijklmnopqrstuvwxyzabcd' for i in range(26)}
daxie={'ABC ...

直接一个字典,不好吗{:10_277:}_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
func=lambda x:''.join(_func(i,i)for i in x)

jerryxjr1220 发表于 2020-5-15 19:28:15

永恒的蓝色梦想 发表于 2020-5-15 19:25
直接一个字典,不好吗

写字典太麻烦,懒{:5_92:}

永恒的蓝色梦想 发表于 2020-5-15 19:31:59

jerryxjr1220 发表于 2020-5-15 19:28
写字典太麻烦,懒

让Python去做,我们复制不就好了吗{:10_245:}

大大的拳头 发表于 2020-5-15 19:32:18

_2_ 发表于 2020-5-15 19:13
a1 a2 a3 a4 是在何处定义的?
请贴代码,不要只发图片,谢谢

嗯代码在图片上面

大大的拳头 发表于 2020-5-15 19:51:08

永恒的蓝色梦想 发表于 2020-5-15 19:24
不拿去也找不到

拿去后可否用其他办法让他输出,主要是找到其他变量

大大的拳头 发表于 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 有没有解决办法

Twilight6 发表于 2020-5-15 20:14:00

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
a5 = a1 + a2 + a3 + a4
print(a5)
去掉 nonlocal这个一般都是在函数、方法里面用的

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

如果帮助到你了,给个最佳吧{:10_287:}

大大的拳头 发表于 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
{:5_100:}
这个是班上一个大佬的代码

Twilight6 发表于 2020-5-15 20:18:55

大大的拳头 发表于 2020-5-15 20:18
还是报错
a5 = a1 + a2 + a3 + a4
NameError: name 'a2' is not defined

怎么会 我运行都是正常的

大大的拳头 发表于 2020-5-15 20:20:12

本帖最后由 大大的拳头 于 2020-5-15 20:24 编辑

Twilight6 发表于 2020-5-15 20:18
怎么会 我运行都是正常的

我也不知道怎么回事{:10_245:}
页: [1] 2
查看完整版本: 解密游戏