【问题标题】:Unexpected indent while doing recursion from inside the for loop从 for 循环内部进行递归时意外缩进
【发布时间】:2018-02-11 06:12:49
【问题描述】:

我在 python 中运行这段代码。我想从 for 循环内部调用 recursive_split 函数。但是python显示出意外的缩进错误。我哪里错了?

res = {}
def recursive_split(X,y,recursive_count) :
    recursive_count = recursive_count+1
    if(recursive_count>depth):
        return res
    selected_attr = select_attribute(X,y)

    sets = partition(X.iloc[:,selected_attr])
    for key, value in sets.items() :
        print(str(key) + " " + str(value))
        y_subset = y.take(value, axis=0)
        X_subset = X.take(value, axis=0)
        res["x_%d = %d" % (selected_attr, key)] = 
        recursive_split(X_subset, y_subset,recursive_count)

    return res

recursive_count = 0
dict_tree = recursive_split(X_train,y_train,recursive_count)

我得到的错误信息是:

File "test.py", line 116
    res["x_%d = %d" % (selected_attr, key)]=recursive_split(X_subset, 
y_subset,recursive_count)
^
IndentationError: unexpected indent

【问题讨论】:

  • 请提供完整的错误回溯。我们至少需要知道哪一行包含错误。
  • 当您使用它时,请确保您的编辑器没有在某处混用制表符和空格。
  • 尝试用空格替换所有制表符,反之亦然。
  • 已解决。实际上 X_subset 行有 8 个空格而不是 2 个制表符。当我选择整个代码时才知道这一点。感谢您的帮助

标签: python python-3.x function recursion machine-learning


【解决方案1】:

这个错误可能与这行代码被分成两行有关

res["x_%d = %d" % (selected_attr, key)] = 
recursive_split(X_subset, y_subset,recursive_count)

尝试将其写在一行中,并确保没有制表符。

并通过编译文件检查它的语法:

python -m py_compile file.py

【讨论】:

  • 该行实际上并未拆分。它写在一行上。 stackoverflow 编辑器没有空间所以必须写成 2 行
【解决方案2】:

您的错误显示第 116 行: 文件“test.py”,第 116 行 您在上面粘贴的代码只有大约 20 行。 除了这 20 行之外,其他地方可能还有一些不正确的缩进代码。如果您可以粘贴整个内容,将会有所帮助。

【讨论】:

  • 解决了。我已经评论了关于错误的确切原因的问题
猜你喜欢
  • 1970-01-01
  • 2011-08-18
  • 2021-02-08
  • 2015-12-30
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
相关资源
最近更新 更多