擅长:python、mysql、java
<p>一般来说,要使某个东西“包装”,您需要使用模函数(<code>%</code>,在Python中)和要包装的数字和范围。例如,如果我想把数字1到10打印一次,我会这样做:</p>
<pre><code>i = 0
while 1:
print(i%10+1)
# I want to see 1-10, and i=10 will give me 0 (10%10==0), so i%10+1!
i += 1
</code></pre>
<p>在本例中,这有点困难,因为您使用的是<code>ord</code>,它没有一个很好的“范围”值。如果你做过类似<code>string.ascii_lowercase</code>的事情,你可以。。。在</p>
^{pr2}$
<p>但是,由于您使用的是ord,我们有点从<code>ord('A') == 65</code>到{<cd5>},因此范围为0->;57(例如<code>range(58)</code>,常数为65)。换句话说:</p>
<pre><code>codex = "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz"
# every char for chr(65) -> chr(122)
codex = ''.join([chr(i+65) for i in range(58)]) # this is the same thing!
</code></pre>
<p>我们可以改为这样做,但它将包含字符[\]^\</p>
<pre><code>inString, key = 'abcxyzABCXYZ', 4
toConv = [(ord(i)+key-65)%58 for i in inString]
result = ''.join(chr(i+65) for i in toConv)
print(result)
# "efgBCDEFG\\]^"
</code></pre>