3 回答
TA贡献2021条经验 获得超8个赞
str[i]
如果大于或等于 的长度,将引发此index out of range
异常。您应该将基本情况更改为:i
str
if (i >= len(str)): return 0
TA贡献1793条经验 获得超6个赞
该行if (str[i] == None):
不执行您希望它执行的操作。None
这看起来像是在尝试检查索引是否超出了字符串的末尾,但 Python 中的字符串在最后一个真实字符之后没有。相反,当您尝试索引超过末尾时,您会得到所描述的异常。
相反,您应该比较i
,len(str)
它是数字字符串的长度。由于索引从零开始,索引等于 就len(str)
在末尾,所以你可能想要:
if i >= len(str): return 0
我还会仔细检查返回零是否是您想要执行的操作。如果您找到大写字母,则将从其他条件案例中返回它。在不同情况下返回不同类型并不总是理想的,因为调用者可能很难知道他们可以对结果使用哪些 API。返回一个空字符串,或者None
可能比返回一个数字更有意义。
TA贡献1772条经验 获得超5个赞
使用 str[i]==None 将“强制”python 确定 str[i] 的值,该值不存在,因此索引超出范围错误。您可以使用 len(str) 和 i 来确定是否到达字符串末尾:
def firstCapital(str, i):
if i>len(str)-1: #Instead of str[i]==None
return 0
if str[i].isupper():
return str[i]
return firstCapital(str, i + 1)
input : ('Ali',0)
Output: 'A'
Input: ('lia',0)
Output:0
添加回答
举报