【问题标题】:Vigenere Cipher List ProcessingVigenere 密码列表处理
【发布时间】:2016-06-09 14:39:57
【问题描述】:

所以,我正在用 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)]

但是语法无效!我需要做什么才能完成这项工作?

【问题讨论】:

    标签: python list loops encryption vigenere


    【解决方案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()]
    

    【讨论】:

      【解决方案2】:

      你有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 初学者,不太明白你的意思
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多