Vigenere 密码列表处理
Vigenere Cipher List Processing
所以,我正在 Python 中制作我自己的维吉涅尔密码程序,我已经有了两个列表;一个是消息的 ASCII 码为 encrypted/decrypted 的列表,另一个长度相同,包含重复的密码密钥的 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)]
但语法无效!我需要做什么才能完成这项工作?
如果您仍想包含数字字符但未加密,请在 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()]
你有ord(chr)
,列表中的数字,所以检查是否x <128
。
[x + y for x, y in zip(msglist, keylist) if x < 128]
测试:
>>> chr(222)
'\xde'
>>> chr(222).isalpha()
False
>>> 222 < 128
False
>>>
所以,我正在 Python 中制作我自己的维吉涅尔密码程序,我已经有了两个列表;一个是消息的 ASCII 码为 encrypted/decrypted 的列表,另一个长度相同,包含重复的密码密钥的 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)]
但语法无效!我需要做什么才能完成这项工作?
如果您仍想包含数字字符但未加密,请在 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()]
你有ord(chr)
,列表中的数字,所以检查是否x <128
。
[x + y for x, y in zip(msglist, keylist) if x < 128]
测试:
>>> chr(222)
'\xde'
>>> chr(222).isalpha()
False
>>> 222 < 128
False
>>>