首页 > 解决方案 > 修改字符串中的字符

问题描述

我正在尝试编写一个简单的程序来解码一个简单的移位密码。文本移动了多个字符。所以编码文本中的“c”=解码文本中的“a”。偏移量 2 等因此,从文本文件中读取一个字符或字符串,然后从该字符中减去偏移量,然后放入一个新的“解码”字符串。用 C 语言很简单——用 Python 把我的头发拉出来!有人可以指出我正确的方向吗?代码越简单越好——我不是 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))

推荐阅读