Python中意外的复数

时间:2018-06-03 11:49:10

标签: python python-3.x math

我正在尝试计算十项全能参与者的总得分,并且给出了两个公式,一个用于场地赛事,另一个用于赛道事件。

Points = INT(A(B — P)^C) for track events (faster time produces a better score)

Points = INT(A(P — B)^C) for field events (greater distance or height produces a better score

A,B和C给出了这个公式的常数,P是以秒(跑步),米(投掷)或厘米(跳跃)测量的运动员表现。

一旦我尝试计算,我得到的结果是一个复数,我无法将其转换为整数或smth。

这些是A,B和C的常量:https://en.wikipedia.org/wiki/Decathlon#Points_system

这些是我对运动员表现的价值(我会以某种方式尝试的列表,在添加总分后,转换为JSON文件):

splited_info = ['Lehi Poghos', '13.04', '4.53', '7.79', '1.55', '64.72', '18.74', '24.20', '2.40', '28.20', '6.50.76']

有人可以给我一些反馈,说明我做错了什么或怎么做错?

def split(info):
    with open(info.filename, "r") as f:
        csv_reader = csv.reader(f, delimiter="\n")
        for line in csv_reader:
            splited_info = line[0].split(";")
            score = 0
            score += int(25.4347 * ((18 - float(splited_info[1])) ** 1.81))
            score += int(0.14354 * ((float(splited_info[2]) - 220) ** 1.4))
            score += int(51.39 * ((float(splited_info[3]) - 1.5) ** 1.05))
            score += int(0.8465 * ((float(splited_info[4]) - 75) ** 1.42))
            score += int(1.53775 * ((82 - float(splited_info[5])) ** 1.81))
            score += int(5.74352 * ((28.5 - float(splited_info[6])) ** 1.92))
            score += int(12.91 * ((float(splited_info[7]) - 4) ** 1.1))
            score += int(0.2797 * ((float(splited_info[8]) - 100) ** 1.35))
            score += int(10.14 * ((float(splited_info[9]) - 7) ** 1.08))
            score += int(0.03768 * ((480 - float(splited_info[10])) ** 1.85))
            print(score)

我只是对所有计算进行硬编码,因为所有计算都会因A,B,C和P的所有不同值而不同。

1 个答案:

答案 0 :(得分:1)

问题是米和厘米的混合。维基百科页面在重新计算公式时稍微不准确 - 投掷以衡量,但跳跃应以厘米来衡量。这就是为什么你得到负数的分数幂。

有关详细信息,请参阅原始来源:

  

enter image description here

  • 国际田联联合活动评分表,p。 24。
相关问题