<p>假设<code>ch</code>是一个字符串而不是一个字符,则只有当其大小为<code>1</code>时,您的检查才会起作用。。。您需要实际循环字符串以查找两个连续字符</p>
<p>由于问题要求两个连续的元音,我们可以使用<a href="https://docs.python.org/3/library/itertools.html#itertools-recipes" rel="nofollow noreferrer">^{<cd3>} recipe</a>来循环字符串<code>pairwise</code>:</p>
<pre class="lang-py prettyprint-override"><code>import itertools
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = itertools.tee(iterable)
next(b, None)
return zip(a, b)
def insert_sv_present(s):
lvowel = ['a', 'e', 'i', 'o', 'u']
for pair in pairwise(s):
if pair[0].lower() in lvowel and pair[1].lower() in lvowel:
return True
return False
</code></pre>
<p>然后可以使用内置的<a href="https://docs.python.org/3/library/functions.html#all" rel="nofollow noreferrer">^{<cd5>}</a>函数对其进行稍微的澄清和概括:</p>
<pre class="lang-py prettyprint-override"><code>def insert_sv_present(s):
lvowel = ['a', 'e', 'i', 'o', 'u']
for pair in pairwise(s):
if all(ch.lower() in lvowel for ch in pair):
return True
return False
</code></pre>
<p>甚至可以使用内置的<a href="https://docs.python.org/3/library/functions.html#any" rel="nofollow noreferrer">^{<cd6>}</a>函数进一步减少,但该步骤可能会违反可读性:</p>
<pre class="lang-py prettyprint-override"><code>def insert_sv_present(s):
lvowel = ['a', 'e', 'i', 'o', 'u']
return any(all(ch.lower() in lvowel for ch in pair) for pair in pairwise(s))
</code></pre>