<p>编辑:工作代码</p>
<pre class="lang-py prettyprint-override"><code>def decipher(p):
result = ''
while len(p) > 2:
# first strip out all the consecutive consonants each iteration
idx = 0
while p[idx].lower() not in 'aeiou' and idx < len(p) - 2:
idx += 1
result += p[:idx]
p = p[idx:]
# if there is any string remaining to process, that starts with a vowel
if len(p) > 2:
idx = 0
# scan forward until 'p'
while p[idx].lower() != 'p':
idx += 1
# sanity check
if len(p) < (idx*2 + 1) or p[:idx].lower() != p[idx+1:2*idx+1].lower():
raise ValueError
result += p[:idx]
p = p[2*idx+1:]
result += p
return result
</code></pre>
<p>在示例输入<code>'Apan epelepephapant'</code>中,比较<code>'A' == 'a'</code>并得到<code>False</code>。似乎您想要比较<code>'a' == 'a'</code>,即每个的<code>str.lower()</code></p>
<p>你似乎也没有检查<code>p</code>前面和<code>p</code>后面的字符是否是元音;也就是说,如果您遇到字符串<code>hph</code>,正如所写的那样,您的函数将其解码为<code>h</code></p>
<hr/>
<p>以下代码的早期版本:</p>
<pre class="lang-py prettyprint-override"><code>def decipher(p):
while len(p) > 2:
if p[0].lower() in 'aeiou' and p[0].lower() == p[2].lower() and p[1] == 'p':
result += p[0]
p = p[3:]
else:
result += p[0]
p = p[1:]
result += p
return result
</code></pre>
<p>被称为</p>
<pre class="lang-py prettyprint-override"><code>p = str(input())
print(decipher(p))
</code></pre>