而Loop选择什么是增量索引的值

时间:2018-01-01 22:15:25

标签: python

对于Python中的while循环:

def last_vowel(s):   
    Return the last vowel in s if one exists; otherwise, return None.

    i = ________
    while i >= 0:
         if s[i] in 'aeiouAEIOU':
             return s[i]
         i = i - 1
   return None

问题是找到我的表达,结果是len(s) - 1而不是len(s)。任何人都可以向我解释为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

Python的索引基于0。因此,string中的第一个字符位于索引0,而最后一个字符位于string的长度之前。见这个小表:

String: "hello"
Index :  01234

查看最后一个字符在索引4处的位置 - len(...) - 1

因此,这解释了为什么我们需要将i初始化为len(s) - 1,因为s[len(s) - 1]s中的 last 字符。

然后算法也会检查此字符是否为元音,如果是,return元音,否则i减少1以便下一个循环while我们正在查看前一个角色。

然后对于这个角色,我们应用相同的方法。

最后,该函数将返回最接近结尾的元音,或将到达while循环(i == 0)的末尾,并将return None按功能描述功能。

答案 1 :(得分:0)

这是因为字符串(和数组,因为字符串实际上只是特殊的数组)是0索引的。这意味着虽然字符串的长度可能为L,但最后一项实际上为L - 1

例如,取这个字符串

"hello"

长度为5,但最后一个字符实际上是索引4。

+-------+---+---+---+---+---+
| index | 0 | 1 | 2 | 3 | 4 |
+-------+---+---+---+---+---+
| char  | h | e | l | l | o |
+-------+---+---+---+---+---+