鱼C论坛

 找回密码
 立即注册
查看: 2334|回复: 0

[学习笔记] 速查Python课后第028讲:字符串(II) 版本号甄别,明文加密思路与技巧

[复制链接]
发表于 2021-10-30 20:58:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小蜂队 于 2021-11-24 17:56 编辑

0.虽然学过了,但是让我从新写一遍我可能都还写不出。
  1. v1 = input("请输入第一个版本号,v1 = ")
  2. v2 = input("请输入第二个版本号,v2 = ")
  3.    
  4. n, m = len(v1), len(v2)
  5. i, j = 0, 0
  6.    
  7. while i < n or j < m:
  8.     x = 0
  9.     while i < n and v1[i] != '.':
  10.         x = x * 10 + int(v1[i])
  11.         i += 1
  12.     i += 1
  13.     y = 0
  14.     while j < m and v2[j] != '.':
  15.         y = y * 10 + int(v2[j])
  16.         j += 1
  17.     j += 1
  18.     if x > y:
  19.         print("v1")
  20.         break
  21.     elif x < y:
  22.         print("v2")
  23.         break
  24.    
  25. if x == y:
  26.     print("v1 = v2")
复制代码

1.每一步都看着懂的差不多,要自己写,即使写出来也和小甲鱼老师的代码有所差别。
  1. plain = input("请输入需要加密的明文:")
  2. x = input("请输入需要替换的字符:")
  3. y = input("请输入将要替换的字符:")
  4.    
  5. # 加密的代码
  6. if len(x) != len(y):
  7.     print("需要替换的字符数量必须跟将要替换的字符数量一致!")
  8. else:
  9.     cipher = plain.translate(str.maketrans(x, y))
  10.     print("加密后的密文是:" + cipher)
  11.    
  12. # 检测冲突的代码
  13. # flag 变量标志是否退出检测(只要找到一个冲突,就可以直接退出)
  14. flag = 0
  15.    
  16. # 如果 x 中存在相同的字符,那么 y 对应下标的字符也应该是相同的
  17. for each in x:
  18.     if x.count(each) > 1 and flag == 0:
  19.         i = x.find(each)
  20.         last = y[i]
  21.         while i != -1:
  22.             if last != y[i]:
  23.                 print("由于替换字符出现冲突,该密文无法解密!")
  24.                 flag = -1
  25.                 break
  26.    
  27.             i = x.find(each, i+1)
  28.    
  29. # 如果 y 中存在相同的字符,那么 x 对应下标的字符也应该是相同的
  30. for each in y:
  31.     if y.count(each) > 1 and flag == 0:
  32.         i = y.find(each)
  33.         last = x[i]
  34.         while i != -1:
  35.             if last != x[i]:
  36.                 print("由于替换字符出现冲突,该密文无法解密!")
  37.                 flag = -1
  38.                 break
  39.    
  40.             i = y.find(each, i+1)
复制代码

本帖被以下淘专辑推荐:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 13:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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