python - 修改字符串中的字符
问题描述
我正在尝试编写一个简单的程序来解码一个简单的移位密码。文本移动了多个字符。所以编码文本中的“c”=解码文本中的“a”。偏移量 2 等因此,从文本文件中读取一个字符或字符串,然后从该字符中减去偏移量,然后放入一个新的“解码”字符串。用 C 语言很简单——用 Python 把我的头发拉出来!有人可以指出我正确的方向吗?代码越简单越好——我不是 Python 专家。谢谢!
解决方案
你可以试试这段代码
# for decoding
def decode(string, base=2):
return ''.join([chr(ord(a)+2) for a in string])
# for encoding
def encode(string, base=2):
return ''.join([chr(ord(a)-2) for a in string])
如果你想从文件中读取
text = open("filename.txt", "r").read()
print(encode(text))
但是,你必须知道,如果你编码('a'),返回值将是'_',如果你只想要一个字母试试这个
#for decode
def decode_a(string, base=2):
a = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
return ''.join(a[(base+a.index(i)) % len(a)] for i in string)
#for encode
def encode_a(string, base=2):
a = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
return ''.join(a[(a.index(i)-base) % len(a)] for i in string)
如果你想从输入中读取
e = encode_a(input())
# return e because you decoded again
print(decode_a(e))
推荐阅读
- image - 在 Word Open SDK + dotnet core 中添加图片
- javascript - 将令牌添加到现有的 prismjs 语言
- javascript - 将所选项目作为值数组获取
- java - 如何避免杰克逊在 Java 中转义双引号?
- asp.net-core - JavaScript 停止使用 AspNetCore Blazor
- ios - 如何在 SwiftUI 中将多个视图推送到 NavigationView 中
- python - 我使用 loc 函数知道其索引的值无法更新同一索引中的另一列的问题?
- python - 在记事本++中将列与负值和正值对齐
- flutter - 无法从函数调用列表
- algorithm - 找到至少具有 X 长度的第一个区间的算法