擅长:python、mysql、java
<p>一些要点:</p>
<ul>
<li>使用上下文管理器(<code>with</code>)可确保文件在读或写后关闭。在</li>
<li>由于caesar密码是一种替换密码,其中shift参数是密钥,因此不需要单独的<code>encrypt</code>和{<cd3>}成员函数:它们是相同的,但是“key”是否定的。在</li>
<li><code>writeEncrypted</code>方法只是文件write方法的包装器。因此该类实际上只有两个方法,其中一个是<code>__init__</code>。在</li>
<li>这意味着您可以轻松地用单个函数替换它。在</li>
</ul>
<p>记住这一点,你的代码可以用这个来代替</p>
<pre><code>import string
def caesartable(txt, shift):
shift = int(shift)
if shift > 25 or shift < -25:
raise ValueError('illegal shift value')
az = string.ascii_lowercase
AZ = string.ascii_uppercase
eaz = az[-shift:]+az[:-shift]
eAZ = AZ[-shift:]+AZ[:-shift]
tt = string.maketrans(az + AZ, eaz + eAZ)
return tt
enc = caesartable(3) # for example. decrypt would be caesartable(-3)
with open('plain.txt') as inf:
txt = inf.read()
with open('encrypted.txt', 'w+') as outf:
outf.write(txt.translate(enc))
</code></pre>
<p>如果使用13的移位,则可以使用内置的<code>rot13</code>编码器。在</p>