我试图创建一个程序,根据用户给出的密钥或编号对邮件进行加密。因此,例如,键为2的字母C将更改为字母E.我正在考虑使用已保存的字典或序数值,但我不确定如何将其限制为26个字母。例如,我现在的代码如下所示:
word = input("Please enter a word")
numkey = input("Please enter a key")
for ind in word:
encrypt = ord(ind) + int(numkey)
actual_encrypt = chr(encrypt)
此代码的问题在于我希望将加密值限制为26,并在到达那里时重新开始。因此,例如,它将再次为1而不是27。我对如何设置它感到有些困惑。谢谢。
答案 0 :(得分:2)
如果我理解你的话,你的单词只包含字符:a-z 如果是这样,你可以替换该行:
encrypt = ord(ind) + int(numkey)
使用:
encrypt = ord('a') + (ord(ind) - ord('a') + int(numkey)) % 26
答案 1 :(得分:0)
您需要模数运算$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'ISO-8859-1', false);
。例如,%
提供27 % 26
。
答案 2 :(得分:0)
如果我理解你的问题,解决这个问题的常用方法是使用模运算符"%"。此运算符返回操作数之间的整数除法的余数。
看起来像这样:
encrypt = ((ord(ind) + int(numkey)) % 27) + 1
如果ord(ind) + int(numkey)
的结果是27,% 27
会得到0(因此额外的偏移量为1)。