Python 在字符列表上迭代,但不扩展到索引之外

Python 在字符列表上迭代,但不扩展到索引之外,python,loops,Python,Loops,我想循环一个字符串;如果一个角色符合某个标准,那么我想在它之后立即调整角色。问题是,如果所讨论的字符是字符串中的最后一个字符,并且我想将字符调整到超出该范围,那么我就超出了索引范围 如何在不超出索引的情况下循环字符串 letters_of_name = ["j", "e", "l", "l", "o"] def uppercase_specific_letters(letter): f

我想循环一个字符串;如果一个角色符合某个标准,那么我想在它之后立即调整角色。问题是,如果所讨论的字符是字符串中的最后一个字符,并且我想将字符调整到超出该范围,那么我就超出了索引范围

如何在不超出索引的情况下循环字符串

letters_of_name = ["j", "e", "l", "l", "o"]

def uppercase_specific_letters(letter):

    for ch_index, ch in enumerate(letters_of_name):
        if ch == letter:

            if letters_of_name[ch_index + 1] != ch:
                letters_of_name[ch_index + 1] = letters_of_name[ch_index + 1].upper()

            new_name = "".join(letters_of_name)
            return new_name

一种方法是使用不包括最后一个字符的字符串片段

for ch_index, ch in enumerate(letters_of_name[:-1]):
另一个选项是使用
range()
循环索引,并使用length-1作为限制,而不是length

for ch_index in range(len(letters_of_name)-1):
    ch = letters_of_name[ch_index]

如果ch==字母和ch\u索引
,则解决了这个问题。所以,它说,“如果字符等于字母,并且字符的索引位置是字符串中的倒数第二位,那么…”谢谢你。好的,这很有意义。我特别喜欢第一种解决方案,我循环遍历所有字符,直到最后一个索引位置,但不包括该字符。我当时就在这条轨道上,但我不完全确定如何在enumerate()中构造它。现在说得通了——谢谢!