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

代码报错:Unindent does not match any outer indentation level(第36行)求助

排查Python缩进错误:Unindent does not match any outer indentation level

这个错误是Python里最常见的缩进问题之一,咱们一步步来拆解原因和解决办法:

核心原因分析

Python是完全依赖缩进划分代码块的语言,出现这个报错说明第36行的缩进层级和它所在的代码块不匹配,或者代码里混合使用了空格和制表符两种缩进方式。结合你给出的代码片段,大概率是下面两种情况:

  • 情况1:缩进层级不匹配
    你的convert函数定义后,函数体里的代码(比如class_names那行)应该缩进一级(通常是4个空格),但第36行的other_names要么没缩进、要么缩进的空格数和class_names不一致,导致Python无法识别它属于convert函数的代码块。

  • 情况2:混合使用空格和制表符
    如果你在class_names行用了空格缩进,而other_names行用了制表符(或者反过来),Python会把这两种缩进视为完全不同的层级——哪怕视觉上看起来对齐了,也会触发这个错误。

具体解决步骤

  1. 统一第36行的缩进层级
    确保other_names = random.sample(...)这行的缩进和上面的class_names行完全一致,比如都缩进4个空格,让它明确属于convert函数的函数体。修正后的代码大概是这样:

    def convert(snippet, phrase):
        class_names = [w.capitalize() for w in random.sample(WORDS, snippet.count("%%%"))]
        other_names = random.sample(WORDS, snippet.count("***"))
        results = []
        param_names = []
    

    (顺便提一句:你代码里的captialize拼写错了,应该是capitalize,虽然这不是缩进错误,但后续可能会引发AttributeError)

  2. 全局统一缩进方式
    打开你的代码编辑器设置,开启“将制表符转换为空格”的功能,并且设置缩进宽度为4个空格。这样所有缩进都会统一成空格,彻底避免混用导致的问题。

  3. 检查整个函数的缩进连贯性
    确认results和param_names行也和前面的代码保持相同的缩进,确保整个convert函数的代码块缩进完全一致。

内容的提问来源于stack exchange,提问作者Lim Dion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:13:55