亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:嘗試查找第一個大寫字母時字符串索引超出范圍

Python:嘗試查找第一個大寫字母時字符串索引超出范圍

四季花海 2023-09-12 19:47:41
我試圖獲取字符串中的第一個大寫字母,但我得到一個“index out of range error 我不知道這是否是遞歸的基本情況”。請有人幫助我這是我的代碼:def firstCapital(str, i):    if (str[i] == None):        return 0    if (str[i].isupper()):        return str[i]    return firstCapital(str, i + 1)name = "geoRge"res = firstCapital(name, 0)if (res == 0):    print("No uppercase letter")else:    print(res)
查看完整描述

3 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

str[i]如果大于或等于 的長度,將引發此index out of range異常。您應該將基本情況更改為:istr

if (i >= len(str)):
    return 0


查看完整回答
反對 回復 2023-09-12
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

該行if (str[i] == None):不執行您希望它執行的操作。None這看起來像是在嘗試檢查索引是否超出了字符串的末尾,但 Python 中的字符串在最后一個真實字符之后沒有。相反,當您嘗試索引超過末尾時,您會得到所描述的異常。

相反,您應該比較i,len(str)它是數字字符串的長度。由于索引從零開始,索引等于 就len(str)在末尾,所以你可能想要:

if i >= len(str):
    return 0

我還會仔細檢查返回零是否是您想要執行的操作。如果您找到大寫字母,則將從其他條件案例中返回它。在不同情況下返回不同類型并不總是理想的,因為調用者可能很難知道他們可以對結果使用哪些 API。返回一個空字符串,或者None可能比返回一個數字更有意義。


查看完整回答
反對 回復 2023-09-12
?
月關寶盒

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


查看完整回答
反對 回復 2023-09-12
  • 3 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號