对于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)。任何人都可以向我解释为什么会这样吗?
答案 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 |
+-------+---+---+---+---+---+