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
添加回答
舉報