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

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

未索引到 bool 時出現“bool 不可下標”錯誤 - Python

未索引到 bool 時出現“bool 不可下標”錯誤 - Python

絕地無雙 2021-12-17 15:35:10
我有以下功能:    def in_loop(i):        global loop_started        if i == '[':            loop_started = True            return [True, 'loop starting']        if loop_started:            if i == ']':                loop_started = False                return [True, 'loop over']            return True       return False我相信當我是“]”時,這會返回一個看起來像 (True, 'loop over') 的元組。然后我嘗試將其編入索引for index, i in enumerate(code):    if in_loop(i):        loop_counter += 1        if in_loop(i)[1] == 'loop starting':            loop_start = index        if in_loop(i)[1] == 'loop over':            loops[f'loop{loop_num}'] = {'start': loop_start, 'end': index}            loop_num += 1但這會引發錯誤TypeError: 'bool' object is not subscriptable另外,代碼 = "+++++[-][-]"。為什么在索引元組時會引發此錯誤?
查看完整描述

3 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

問題是,當到達像“+”或“-”這樣的字符時,您實際上是在返回布爾值,但if in_loop(i)[1] == 'loop starting':仍然在訪問。


您必須返回一致的返回類型才能使第二個 for 循環代碼工作。例如,查看下面對您的代碼的注釋:


def in_loop(i):

    global loop_started

    if i == '[':

        loop_started = True

        return [True, 'loop starting']

    if loop_started:

        if i == ']':

            loop_started = False

            return [True, 'loop over']

        return True  #This will have side effects and is inconsistent with your other returns of in_loop

   return False  #This will have side effects and is inconsistent with your other returns of in_loop


查看完整回答
反對 回復 2021-12-17
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

這種情況只有當你輸入的東西是不是'['還是']',因為它會到了第二ifif loop_started:,并且默認如果內部條件不及格,那就只是return True,所以這就是為什么它不工作。


查看完整回答
反對 回復 2021-12-17
?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

你將 var 初始化loop_started為什么?(或者換句話說,loop_started當函數沒有被執行時有什么價值?)

如果loop_startedFalse在函數執行之前,則函數將直接返回 False。

一個快速的解決方法是在所有布爾返回語句之后添加一個空字符串。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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