python - str.replace() python程序加密问题
问题描述
我有这个程序,我想将普通消息转换为加密消息。在程序中,它将每个字母替换为相反的字母。当它
c = c.replace('n','m')
从那时开始发生变化时,它会替换它之前替换的所有内容。
def convert(c):
c = c.replace('a', 'z')
c = c.replace('b', 'y')
c = c.replace('c', 'x')
c = c.replace('d', 'w')
c = c.replace('e', 'v')
c = c.replace('f', 'u')
c = c.replace('g', 't')
c = c.replace('h', 's')
c = c.replace('i', 'r')
c = c.replace('j', 'q')
c = c.replace('k', 'p')
c = c.replace('l', 'o')
c = c.replace('m', 'n')
c = c.replace('n', 'm')
c = c.replace('o', 'l')
c = c.replace('p', 'k')
c = c.replace('q', 'j')
c = c.replace('r', 'i')
c = c.replace('s', 'h')
c = c.replace('t', 'g')
c = c.replace('u', 'f')
c = c.replace('v', 'e')
c = c.replace('w', 'd')
c = c.replace('x', 'c')
c = c.replace('y', 'b')
c = c.replace('z', 'a')
return c
print(convert('the quick brown fox jumps over the lazy dog'))
输出是:
ghe jfick bildm flc jfmkh leei ghe laab dlg
它不会转换所有字母。有人可以帮忙吗?
解决方案
您应该使用str.translate()
它,因为它接受映射并一次应用所有字符:
def convert(c):
return c.translate(mapping)
您可以像这样进行映射:
mapping = {
ord('a'): 'z',
ord('b'): 'y',
...
}
但幸运的是,python 也有maketrans()
帮助您进行此映射的功能:
mapping = str.maketrans(string.ascii_lowercase, string.ascii_lowercase[::-1])
推荐阅读
- python-3.x - 网址错误:
- python - 为什么用 Tkinter 打开另一个文件会导致另一个 Tkinter 菜单弹出?
- rest - Restfull api设计
- python-3.x - Python3 time.sleep() 行为异常
- javascript - 使用 X 按钮关闭模式时的窗口返回值
- java - 如何使用 Spring Boot 将 log4j.xml、应用程序属性和 jar 外部化?
- python - Python:使用 matplotlib.animation 为两个线条列表设置动画,但一次只显示一组线条
- javascript - 如何为 AMP-HTML 创建 CSS 新闻代码?
- sql - 将一部分数据从远程数据库复制到本地 SQL Server
- python - 通过 EMR 笔记本上的 Pyspark 访问 delta Lake