所以,我用Python创建了我自己的Vigenere密码程序,而且我已经有了两个列表;一个是带有要加密/解密的消息的ASCII编号的列表,另一个是相同的长度并包含重复的密码密钥的ASCII编号。为了将这两个列表一起添加,我使用了这行代码:
encryption = [x + y for x, y in zip(msglist, keylist)]
这有效,但我希望循环忽略不属于字母表的ASCII数字,但我不知道如何做到这一点。我尝试过这样的事情:
encryption = [if chr(x).isalpha() != True: x + y for x, y in zip(msglist, keylist)]
但语法无效!我需要做些什么来完成这项工作?
答案 0 :(得分:1)
如果您仍想要包含数字字符但未加密,请在ternary if上使用Python变体:
[x + y if chr(x).isalpha() else x for x, y in zip(msglist, keylist)]
如果您想完全忽略它们,请使用if part of list comprehensions:
[x + y for x, y in zip(msglist, keylist) if chr(x).isalpha()]
答案 1 :(得分:1)
您的列表中有/images
个数字,因此请检查ord(chr)
。
x <128
测试:
[x + y for x, y in zip(msglist, keylist) if x < 128]