为什么此代码会产生语法错误?它也告诉我返回功能块之外。使用此代码 - 使用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”块之后的下一行是否存在语法错误。我错过了什么?
答案 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()))