如何在python中获得浮点数的总和?

时间:2016-11-04 22:16:59

标签: python-3.x

我有一个包含波斯语句子的文件,然后是一个标签,一个波斯语单词,一个标签,然后是每一行中的英文单词。我还有一个包含键和浮点值的字典。我必须在字典中的每一行中找到该文件的单词。然后返回他们的价值观。然后我必须计算每个单词的对数,最后分别计算每一行的总和。问题是,当我想计算总和时,会发生以下错误:TypeError:' float'对象不可迭代。我该如何解决?

import math

probabilities = {"شور": 0.02, "نمک": 0.05,"زندگی": 0.07, "غذاهای": 0.01, "غذای": 0.05}

filename = "F.txt"

for line in open(filename, encoding="utf-8"):
    list_line = line.split("\t")
    words = list_line[0].split()
    for key, value in probabilities.items():
        for word in words:
            if word == key:
                result = sum(float(math.log(value)))
                print(word, result, end=" ")
    print()

当我运行它时,会出现此错误:

Traceback (most recent call last):
  File "C:\example.py", line 14, in <module>
    result = sum(float(math.log(value)))
TypeError: 'float' object is not iterable

F.txt([https://www.dropbox.com/s/ag5at9iuuln2x02/F.txt?dl=0):

شور ورود دانشگاه جالب توجه  شور passion
۱۳ راهکار شور اشتیاق واقعی زندگی    شور passion
نمک موجود ذائقه غذاهای شور عادت شور salty
از مضرات نمک غذای شور بدانید    شور salty

我必须分别计算每一行的总和,最后每行只有一个数字。

1 个答案:

答案 0 :(得分:1)

您的代码确实非常错误(您可以跳到第4点):

  1. 您的词典语法错误,引号为
  2. 您正在拆分文件句柄而不是行
  3. 如果已有词典
  4. ,则创建一个双循环来搜索键
  5. 你只需要result += float(math.log(value)),(init result在循环之外为0)sum用于迭代。