How to fix the error ? IndentationError: unexpected indent?

How to fix the error ? IndentationError: unexpected indent?

我正在尝试 运行 来自的代码:https://medium.datadriveninvestor.com/the-supertrend-implementing-screening-backtesting-in-python-70e8f88f383d

但是当谈到这个块时,我看到有一个我无法修复的错误。

它显示 IndentationError:意外缩进。如何解决这个问题?

def find_optimal_parameter(df):
    # predefine several parameter sets
    atr_period = [7, 8, 9, 10]
    atr_multiplier = [1.0, 1.5, 2.0, 2.5, 3.0]
roi_list = []

# for each period and multiplier, perform backtest
    for period, multiplier in [(x,y) for x in atr_period for y in atr_multiplier]:
        new_df = df
        supertrend = Supertrend(df, period, multiplier)
        new_df = df.join(supertrend)
        new_df = new_df[period:]
        entry, exit, roi = backtest_supertrend(new_df, 100000)
        roi_list.append((period, multiplier, roi))
    
    print(pd.DataFrame(roi_list, columns=['ATR_period','Multiplier','ROI']))
    
    # return the best parameter set
    return max(roi_list, key=lambda x:x[2])
df = yf.download('TSLA', start='2010-01-01')

optimal_param = find_optimal_parameter(df)

print(f'Best parameter set: ATR Period={optimal_param[0]}, Multiplier={optimal_param[1]}, ROI={optimal_param[2]}')

roi_list = []

前放置一个制表符或 4 个空格

编辑:正如克里斯指出的那样,python style guide 推荐了 4 个空格。

因为 python 对缩进非常敏感,与其他语言不同,您需要确保所有行都正确且统一地缩进。

在此代码的第 5 行,在文本前面放置一个制表符或四个空格,您应该不会出错。

判断错误位置的一种简单方法是读取错误输出并确定错误发生在哪一行,然后查看该行代码是否缩进正确。