Python中意外的复数

Python中意外的复数,python,python-3.x,math,Python,Python 3.x,Math,我试图计算十项全能运动员的总分,这里给出了两个公式,一个是田径项目的,另一个是田径项目的 Points=INT(A(B-p)^C)用于径赛项目(时间越快得分越高) Points=INT(A(p-B)^C)用于野外活动(距离或高度越远,得分越高 A、 B和C是该公式的常数,p是运动员的成绩,以秒(跑)、米(掷)或厘米(跳)为单位 一旦我试图计算,我得到的结果是一个复杂的数字,我不能转换成整数或类似的smth 以下是A、B和C的常数: 以下是我对运动员表现的评价(我将在添加总分后尝试将其转换为JSO

我试图计算十项全能运动员的总分,这里给出了两个公式,一个是田径项目的,另一个是田径项目的

Points=INT(A(B-p)^C)用于径赛项目(时间越快得分越高)

Points=INT(A(p-B)^C)用于野外活动(距离或高度越远,得分越高

A、 B和C是该公式的常数,p是运动员的成绩,以秒(跑)、米(掷)或厘米(跳)为单位

一旦我试图计算,我得到的结果是一个复杂的数字,我不能转换成整数或类似的smth

以下是A、B和C的常数:

以下是我对运动员表现的评价(我将在添加总分后尝试将其转换为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的不同值而不同。

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

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

  • 国际田联综合项目评分表,第24页

那么哪个运动员返回复数呢?顺便说一下,
float(splited_info[10])
应该立即抛出一个异常,因为
'6.51.01'
不是一个有效的数字。第一个计算可以,但第二个计算:score+=int(0.14354*((float(splited_info[2])-220)**1.4))给了我一个无法将复数转换为int的类型错误。啊,是的,我将不得不修改最后的计算,谢谢你注意:)@YakymPirozhenko不是“复杂的”,而是数学中的一组特定数字。OP不知何故得到了
(4.53-220)**1.4==(-571.1154387048516-1757.7125835285435j)
,这很奇怪。@Norrius I(错误地)认为OP误用了这个词
(4.53-220)**1.4
非常复杂,因为
(-1)**1.4==(-1)**(7/5)
是统一的根。您确定数据的顺序正确吗?(跳远秒?)