我需要在学校为一个项目编写一个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)
答案 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]
当你两次做同一个字母时,这种误解最为明显,因为第一个会修改数组,所以第二个会产生不同的结果。