Python嵌套if语句报IndentationError缩进错误排查求助
缩进问题修复方案
你的代码报错是因为嵌套if的缩进层级不匹配,Python要求每一层嵌套的代码统一多缩进4个空格,你在多个内层判断块里多缩进了一层,导致缩进异常。
修复后的完整代码
def determine_question(): stringline = line.replace("\r", "") stringline = stringline.replace("\n", "") # 判定2级问题 if contains_word(stringline.lower(), 'what'): if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'does') or contains_word(stringline.lower(), 'did'): # 匹配到指定动词直接判定为3级问题 if contains_word(stringline.lower(), 'explain') or contains_word(stringline.lower(), 'example') or contains_word(stringline.lower(), 'result') or contains_word(stringline.lower(), 'show') or contains_word(stringline.lower(), 'differ'): resultfile.write(stringline + ' - Level 3 - based on directive verb' + "\n") return None if contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall'): resultfile.write(stringline + ' - Level 3 - based on directive verb' + "\n") return None # 匹配到指定动词直接判定为4级问题 if contains_word(stringline.lower(), 'mean') or contains_word(stringline.lower(), 'infer') or contains_word(stringline.lower(), 'interpret'): resultfile.write(stringline + ' - Level 4 - based on directive verb' + "\n") return None if contains_word(stringline.lower(), 'summarize') or contains_word(stringline.lower(), 'recommend') or contains_word(stringline.lower(), 'evaluate') or contains_word(stringline.lower(), 'consider'): resultfile.write(stringline + ' - Level 4 - based on directive verb' + "\n") return None else: resultfile.write(stringline + ' - Level 2' + "\n") return None if contains_word(stringline.lower(), 'which'): if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'does') or contains_word(stringline.lower(), 'did') or contains_word(stringline.lower(), 'is') or contains_word(stringline.lower(), 'was') or contains_word(stringline.lower(), 'are') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall') or contains_word(stringline.lower(), 'of'): resultfile.write(stringline + ' - Level 2' + "\n") return None if contains_word(stringline.lower(), 'who'): if contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall'): resultfile.write(stringline + ' - Level 2' + "\n") return None if contains_word(stringline.lower(), 'when'): if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'does') or contains_word(stringline.lower(), 'are') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall'): resultfile.write(stringline + ' - Level 2' + "\n") return None if contains_word(stringline.lower(), 'where'): if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might') or contains_word(stringline.lower(), 'may') or contains_word(stringline.lower(), 'should') or contains_word(stringline.lower(), 'shall'): resultfile.write(stringline + ' - Level 2' + "\n") return None if contains_word(stringline.lower(), 'how many') or contains_word(stringline.lower(), 'how much'): if contains_word(stringline.lower(), 'do') or contains_word(stringline.lower(), 'does') or contains_word(stringline.lower(), 'did') or contains_word(stringline.lower(), 'is') or contains_word(stringline.lower(), 'was') or contains_word(stringline.lower(), 'are') or contains_word(stringline.lower(), 'were') or contains_word(stringline.lower(), 'can') or contains_word(stringline.lower(), 'could') or contains_word(stringline.lower(), 'would') or contains_word(stringline.lower(), 'will') or contains_word(stringline.lower(), 'might'): resultfile.write(stringline + ' - Level 2' + "\n") return None
核心改动说明
- 将
what对应内层判断下的所有子代码整体左移4个空格,对齐到第二层if的代码块层级 - 将后续
which/who等所有内层判断下的输出代码都左移4个空格,和所属的if层级对齐 - 统一所有代码块的缩进规则,每一层嵌套固定使用4个空格
内容的提问来源于stack exchange,提问作者Genie
相关产品推荐
相关产品推荐

