<p>这里我们可以做一些更改,既可以让它做您想要的事情,也可以删除实际上不需要的额外代码行</p>
<pre><code>def accenting(lst): # Use lst instead of list. list is a python reserved keyword.
</code></pre>
<p>首先改变循环,这样我们就不会超出列表中的范围。
由于我们正在向前看,我们希望在列表长度之前停止一个,以便我们可以查看下一个</p>
<pre><code>for i in range(0, len(list)-1):
</code></pre>
<p>我们需要更改检查lst[i+1]的条件。你让它检查lst[i+1]是否在元音中。但这并不意味着它是连续的。可能是相邻的ae。您已经检查了lst[i]是否在元音中,所以我们可以检查lst[i+1]是否等于元音</p>
<p>然后,if语句可以用另一个语句展开,以覆盖不给倍数加重音的条件</p>
<p>在括号中,我们检查i是否不等于0,这样整个括号就不会计算数组中的第一个字母,因为它前面没有字母。然后我们检查前面的字母是否等于当前字母</p>
<pre><code>if lst[i] in vowels and lst[i+1] == lst[i] and (i != 0 and lst[i-1] != lst[i]):
</code></pre>
<p>在if语句内部,我们可以去掉所有变量和第二个循环。因为我们知道lst中的位置,所以可以直接分配它。我们还知道要在元音中输入值的键,因此不需要循环</p>
<pre><code>lst[i] = vowels[lst[i]]]
</code></pre>
<p>之后,您可以返回列表</p>
<p>总代码如下所示</p>
<pre><code>sample = ['b' 'e', 'a', 'a', 'e']
vowels = "ae"
def accenting(lst):
vowel_changes = {
"a": "á",
"e": "é",
}
for i in range(0, len(list)-1):
if lst[i] in vowels and lst[i+1] == lst[i] and (i != 0 and lst[i-1] != lst[i]):
lst[i] = vowels[lst[i]]]
return lst
</code></pre>