gpt4 book ai didi

python - 简单的Python消息编码器/解码器问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:27 24 4
gpt4 key购买 nike

我是 Python 新手,只是在玩一些代码。我正在尝试构建一个“ secret 消息生成器”,它接受一个字符串(例如“1234567890”)并根据简单的模式(例如“1357924680”)输出它。我的编码器工作了 90%(目前它无法处理撇号),但解码器给我带来了很多麻烦。对于超过 6 个字符的任何内容都没有问题。输入“1357924680”输出“1234567890”。但是,对于较短的奇数字符串(例如“Hello”),它不会显示最后一个字符(例如它输出“Hell”)。我的代码如下。可能有一种更简单的方法来编写它,但由于我自己构建了它,所以我很乐意使用我的代码而不是重写它。那么,如何解决呢?

#simple decoder

def decode(s2):
oddlist = []
evenlist = []
final = []
s2 = s2.lower() #makes a string lowercase
size = len(s2) #gets the string size
print "Size " + str(size) #test print
half = size / 2
print "Half " + str(half)
i = 0
while i < half:
if size % 2 == 0: #checks if it is even
split = size / 2 #splits it
oddlist.append(s2[0:split]) #makes a list of the first half
evenlist.append(s2[split:]) #makes a list of the second half
joinodd = ''.join(oddlist) #list -> string
joineven = ''.join(evenlist) #list -> string
else:
split = (size / 2) + 1
print split
oddlist.append(s2[0:split]) #makes a list of the first half
evenlist.append(s2[split:]) #makes a list of the second half
joinodd = ''.join(oddlist) #list -> string
joineven = ''.join(evenlist) #list -> string
string = joinodd[i] + joineven[i]
final.append(string)
i = i + 1
decoded = ''.join(final)
print final
return decoded

print decode("hello")

最佳答案

也许另一个答案会给你代码中的错误,但我想给你一个建议,如果你使用Python切片表示法,请全部使用!这是一个示例,说明如何以更 Pythonic 的方式做您想做的事情:

import itertools

def encode(s):
return s[::2] + s[1::2]

def decode(s):
lim = (len(s)+1)/2
return ''.join([odd + even for odd,even in itertools.izip_longest(s[:lim], s[lim:],fillvalue="")])


def test(s):
print "enc:",encode(s)
print "dec:",decode(encode(s))
print "orig:",s
print

test("")
test("1")
test("123")
test("1234")
test("1234567890")
test("123456789")
test("Hello")

输出:

enc: 
dec:
orig:

enc: 1
dec: 1
orig: 1

enc: 132
dec: 123
orig: 123

enc: 1324
dec: 1234
orig: 1234

enc: 1357924680
dec: 1234567890
orig: 1234567890

enc: 135792468
dec: 123456789
orig: 123456789

enc: Hloel
dec: Hello
orig: Hello

关于python - 简单的Python消息编码器/解码器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21285744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com