编码凯撒密码的问题

时间:2017-02-11 08:19:19

标签: python list encryption

我需要在学校为一个项目编写一个caesar密码,然后我遇到了一个我无法修复的bug ...

当我两次使用相同的字母时,它没有正确编码..

任何人都可以帮忙吗?

这是代码:

#This is a ceser code +2

letters = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','S','Y','Z']
message = input('enter a message to eyncrypt in capital letters')
message_incrypt = str()

for x in message:
    if x in letters:
        x = letters.index(x)
        x = letters.pop(x+2)
        message_incrypt = message_incrypt + str(x)
    else:
        print ('you can input only capital letters')


print (message_incrypt)

1 个答案:

答案 0 :(得分:0)

您正在使用pop。这将从列表中删除该值。 ( Python docs on pop

e.g。

arr = [1,2,3]
arr.pop(1)

arr设为[1,3]

您可以通过索引数组来获取值

e.g。

arr = [1,2,3]
val = arr[1]

当你两次做同一个字母时,这种误解最为明显,因为第一个会修改数组,所以第二个会产生不同的结果。

相关问题