首页 > 解决方案 > 是什么导致 Python 中的冒号预期错误?

问题描述

我试图在以下代码中了解预期的冒号错误。任何帮助表示赞赏。

代码是 -

    if df.loc['pivot'] > df.loc['Open'] :
        df.loc['Signal'] = 1

    elif df.loc[['Open'] > df.loc['IB'] and df.loc['Open'] > df.loc['pivot'] and df.loc['Open'] < df.loc['OB']:
        df.loc['Signal'] = 0

    elif (((df.loc['Open']) <= (((df.loc['2_pips']) - 5)/ 1000)) * (df.loc['pivot'])) and ((df.loc['Open']) >= (((df.loc['1_pips']) + 10)/ 1000 * (df.loc['pivot']))) and ((df.loc['Open']) >= (df.loc['pivot'])) :
        df.loc['Signal'] = 1

    elif (df.loc['Open'] <= ((df.loc['1_pips'] * df.loc['pivot']) + df.loc['pivot'] )) and (df.loc['Open'] > (((df.loc['1_pips'] - 10) * df.loc['pivot']) + df.loc['pivot'])) :
        df.loc['Signal'] = 1

    elif ((df.loc['Open']  < OB) and (df.loc['Open']  < df.loc['pivot'])):
        df.loc['Signal'] = -1

    elif ((df.loc['Open']  <= OB) and (df.loc['Open']  >= IB) and (df.loc['Open']  < df.loc['pivot'])):
        df.loc['bs'] = 0

    elif (df.loc['Open'] < ((df.Loc['2_pips'] - 5) * df.loc['pivot']) + df.loc['pivot']) and (df.loc['Open'] > ((df.loc['1_pips'] + 10) * pivot) + df.loc['pivot']) and (df.loc['Open'] < df.loc['pivot']):
        df.loc['Signal'] = -1

    elif (df.loc['Open']  <= (df.loc['1_pips'] * df.loc['pivot']) + df.loc['pivot']) and (df.loc['Open']  > ((df.loc['1_pips'] - 10) * df.loc['pivot']) + df.loc['pivot']):
        df.loc['Signal'] = -1

    else:
        df.loc['Signal'] = 0

谢谢!

标签: python

解决方案


在第 4 行,df.loc[['Open']我猜你有一个方括号太多了。

您还可以将该行简化为:

elif df.loc['Open'] > df.loc['IB'] and df.loc['pivot'] < df.loc['Open'] < df.loc['OB']:

一般来说,你有太多的括号。我猜这实际上是因为您试图找到问题所在。

通常,当您遇到编译器语法错误(如(未)预期的标记)时,您会遇到结构性问题。它正在解析它抱怨的行作为前一个语句的延续。不匹配的 ()、[] 或 {}。要找到它,可以减少出现错误的代码,并注意到它仍然因相同的错误而失败,这意味着实际错误实际上来自前一行。


推荐阅读