当位置超出边界时,如何从数组中选择值?

2024-04-25 21:58:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一种特定的方法加密一些明文。给定一个键[4,5,6,7]和明文“This is some plaintext”第一个字母是T键中的第一个数字是4因此T通过向前移动4(T,U,V,W,X)变成X下一个字母是H键是5因此H变成M{H,I,J,K,L,M}

当到达密钥的末尾时,只需从头开始并一直加密直到完成。我有一个Python的基本大纲:

#key = [4,5,12,6,7,11,8,9,1,2,3,10]
key = [4,5,6,7]
letters = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
plaintext = "IfyouarereadingthisthenthisplanetmayhavehopeafterallYouhavethepowerand"
plaintext = plaintext.upper()
keySpot = 0
count = 0;
keyCount = 0
letterLocation = 0
tempLetter = ""
i = 0

while(count < len(plaintext)):
    tempLetter = plaintext[count]
    for i in range(0, len(letters)):
        if(tempLetter == letters[i]):
            letterLocation = i
        i = i + 1

    if(keyCount > 4):
    keyCount = 0

letterLocation = letterLocation + key[keyCount]
keyCount = keyCount + 1

if(letterLocation > 27):
    #need some logic here so it wont go out of bounds

print letters[letterLocation]
count = count + 1

我的主要问题是,如果letterLocation在向前移动时太大,并且超过了Z,该怎么办。当它到达Z时,我需要它在A处重新开始,并继续前进直到完成。例如,如果明文字母是Y,密钥是5y,那么Y将变成D{Y,Z,A,B,C,D}

我该怎么做?它可以是爪哇、C、C++、JavaScript或Python,任何最简单的。如果你能想出一个更好的方法,我会采纳你的建议。你知道吗


Tags: 方法keylenifcount字母密钥some

热门问题