Python 如何使用铁路密码正确打印

Python 如何使用铁路密码正确打印,python,function,printing,Python,Function,Printing,我有一些代码,如果你不知道它是什么的话,可以使用一种叫做铁路密码的东西。无论何时输入:Encrypt 2,这都是一个测试。我想让它进入:hsi etTi sats 然而,我的代码使它以相反的方式打印:Ti sats.hsi et 你知道我怎么修吗 我的代码: 分配时,您应该在轨道上来回移动,但您只是朝一个方向移动,然后使用i%numRails返回到起点 没有必要为rails使用字典。只需使用一个按铁路编号索引的列表 def Encrypt(numRails, plainText): ra

我有一些代码,如果你不知道它是什么的话,可以使用一种叫做铁路密码的东西。无论何时输入:Encrypt 2,这都是一个测试。我想让它进入:hsi etTi sats

然而,我的代码使它以相反的方式打印:Ti sats.hsi et

你知道我怎么修吗

我的代码:


分配时,您应该在轨道上来回移动,但您只是朝一个方向移动,然后使用i%numRails返回到起点

没有必要为rails使用字典。只需使用一个按铁路编号索引的列表

def Encrypt(numRails, plainText):
    rails = [""] * numRails
    rail = 0
    direction = 1

    for c in plainText:
        rails[rail] += c
        rail += direction
        # check if we need to change directions
        if direction == 1 and rail >= numRails:
            direction = -1
            rail = numRails - 2
        elif direction == -1 and rail < 0:
            direction = 1
            rail = 1

    cipherText = "".join(rails)

    print (cipherText)

    return cipherText

这将得到与页面相同的结果。

您所说的是围栏密码?这是有效代码吗?numRails甚至在指定任何值之前就已使用。所以我的问题是,告诉我们去谷歌,这不会帮你得到答案。。。根据维基百科,你应该在铁轨上来回走动。如果你只使用i%numRails,你只会朝一个方向走。为什么要使用字典而不是按铁路索引的列表?
def Encrypt(numRails, plainText):
    rails = [""] * numRails
    rail = 0
    direction = 1

    for c in plainText:
        rails[rail] += c
        rail += direction
        # check if we need to change directions
        if direction == 1 and rail >= numRails:
            direction = -1
            rail = numRails - 2
        elif direction == -1 and rail < 0:
            direction = 1
            rail = 1

    cipherText = "".join(rails)

    print (cipherText)

    return cipherText