python中用于定义函数,声明变量的正确语法是什么?

时间:2015-09-03 04:02:30

标签: python syntax

为什么此代码会产生语法错误?它也告诉我返回功能块之外。使用此代码 - 使用iPython 4.0.0运行Python 2.7.8

def get_entropy(source):
    symbol_list = [[],[]]
    entropy = 0.0

    #get the Pi's
    for i in source:
        if i in symbol_list[0]:
            symbol_list[0].append(i)
            symbol_list[1].append(source.count(i)/float(source.len())

    for i in symbol_list[1]:
        entropy = entropy + entropy * math.log(i, 2)

    return entropy 

我跑的时候把它放进口译员那里告诉我

  File "<ipython-input-1-765444f039bb>", line 11
    for i in symbol_list[1]:
                           ^
SyntaxError: invalid syntax

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-fda3e1b00a22> in <module>()
----> 1 entropy = entropy + entropy * math.log(i, 2)

NameError: name 'entropy' is not defined
  File "<ipython-input-3-c24513b23f5d>", line 1
    return entropy
SyntaxError: 'return' outside function

当我运行时尝试将其作为脚本执行时,它告诉我在第一个“for”块之后的下一行是否存在语法错误。我错过了什么?

1 个答案:

答案 0 :(得分:4)

第9行缺少一个闭括号,导致Python将return语句解释为在append方法中。

而不是:

symbol_list[1].append(source.count(i)/float(source.len())

这样做:

symbol_list[1].append(source.count(i)/float(source.len()))