如何导出解码公式?

时间:2019-06-22 21:08:40

标签: python-3.x

我最近使用python“完成”了一个编码器/解码器(这是一个粗略的草稿。不久将创建一个更加用户友好的shell!),我在使用实际的“解码器”位时遇到了麻烦。

我尝试进行猜测和检查,但目前复杂的公式已超出我的范围。

使用"6 5 14 18 6"作为输入字符串的结果是"azmua",而不是"alpha"

alphabet = 'abcdefghijklmnopqrstuvwxyz'
betaset = [26,0,1,25,24,2,3,23,22,4,5,21,20,6,7,19,18,8,9,17,16,10,11,15,14,12,13]
gammaset = [13,26,12,0,14,1,15,25,11,24,10,2,16,3,17,23,9,22,8,4,18,5,19,21,7,20,6]
numberbet = '01234567891011121314151617181920212223242526'
message1 = input("word? \n\
")
message1_out = ' '
message2_out = ' '
newposition = 26
##Variables above^
##Encoder below
for letter in message1:
    if letter in alphabet:
        position1 = alphabet.find(letter)
        position2 = (position1 + betaset.index(position1)) % 26
        position3 = (position2 + gammaset.index(position2)) % 26
        message1_out += str(position3) + ' '
print('|' + message1_out + '| ')
##Decoder code below
message2 = input("word2?     ")
for number in message2.split(" "): 
    position4 = numberbet.find(number)
##The line directly below this comment is the troublesome one.
##The addition to position4 needs to be a more complex function, but I can't figure it out :/
    position5 = (position4 + 20) % 26
    message2_out += (alphabet[position5])
    print(message2_out)
有人要求

提供更多背景信息,

此解码器的全部目的是将 back 组数字转换成单词。这里是解码器部分。当我放入"6 5 14 18 6"时,我的结果应该"alpha"。相反,结果为"azmua"。我可以看到这是由于行"position5 = (position4 + 20) % 26"引起的,但我不知道如何获取应替换"+20"的公式。

该过程应进行some input's placement in numberbet"6 5 14 18 6")+ reverting back to original character(a为6,l为5,依此类推),并串成一个单词,然后打印。问题是还原步骤。

更新:

现在显示的是其中的实际编码器系统。 (侧边栏:我现在明白为什么如此混乱)。我的系统要做的是通过编码器运行第一个输入。字母的位置被获取,然后经过betaset,然后经过gammaset。在单独的时间,可以输入数字以获得字母输出。 这就是使用betaset和gammaset的地方。

我需要的是能够将已编码的消息解码为一个单独的步骤。

更新2:

我测试了答案中给出的一些代码(感谢@Ghassen!),并据此得出了答案:

for number in message2.split(" "): if number in numberbet: position4 = gammaset.index(int(number)) position5 = betaset.index(position4) message2_out += (alphabet[position5]) print(message2_out)

该代码的唯一问题是字母p。它输出alpha而不是alpha。我不太确定为什么,也许是因为@ Tomothy32引发的问题,有关数字字符串中早期出现的“ 12”之类的数字。我现在的困境是,我不知道如何更改数字字符串,而仍然保留字符串,并且不改变解码器的功能 太多,仍然可以访问它。

更新3:

证明我发布的代码确实有效 ,但我犯了一个错误。哎呀

0 个答案:

没有答案