<p>我将使用<a href="http://docs.python.org/library/stdtypes.html#str.translate" rel="noreferrer">^{<cd1>}</a>进行此操作,它可能如下所示:</p>
<pre><code>import string
def LetterChanges(s):
orig = string.letters
new = string.ascii_lowercase[1:] + 'a' + string.ascii_uppercase[1:] + 'A'
for vowel in 'aeiou':
new = new.replace(vowel, vowel.upper())
table = string.maketrans(orig, new)
return s.translate(table)
</code></pre>
<p>示例:</p>
^{pr2}$
<p>为了提高效率,我将把<code>table</code>的创建移到函数之外,这样它只计算一次,而不是每次函数调用。或者只需硬编码<code>orig</code>和<code>new</code>的结束值,如下所示:</p>
<pre><code>import string
def LetterChanges(s):
t = string.maketrans('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
'bcdEfghIjklmnOpqrstUvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZA')
return s.translate(t)
</code></pre>
<p><strong>编辑:</strong>下面是一个应该使用coderbytes限制的版本:</p>
<pre><code>def LetterChanges(s):
orig = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
new = 'bcdEfghIjklmnOpqrstUvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZA'
result = ''
for c in s:
if c in orig:
c = new[orig.index(c)]
result += c
return result
</code></pre>