【发布时间】:2018-09-30 15:38:42
【问题描述】:
我正在尝试使用用户输入为单个字母创建基本的Vignere 加密函数,代码如下:
alphanumero = {0:'A', 1:'B', 2:'C', 3:'D', 4:'E', 5:'F', 6:'G', 7:'H',
8:'I', 9:'J', 10:'K', 11:'L', 12:'M', 13:'N', 14:'O', 15:'P', 16:'Q',
17:'R', 18:'S', 19:'T', 20:'U', 21:'V', 22:'W', 23:'X', 24:'Y', 25:'Z' }
inputlet = str(input("Enter letter to be encrypted: "))
try:
print(alphanumero[inputlet])
except KeyError:
letnum = [k for k, v in alphanumero.items() if v == inputlet[0]]
inputkey = str(input("Enter key letter: "))
try:
print(alphanumero[inputkey])
except KeyError:
keynum = [u for u, t in alphanumero.items() if t == inputkey[0]]
result = (letnum + keynum) % 26
print(result)
所以当我尝试运行它时,我希望它输出11,给定A 作为输入字母,L 作为输入键,但我得到了这个错误:
TypeError: %: 'list' 和 'int' 的操作数类型不受支持
那么我该如何解决这个问题?我对 Python 比较陌生,因此非常感谢任何答案
【问题讨论】:
-
letnum 和 keynums 是列表。你不能对列表取模
标签: python python-3.x