You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:45:04