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)
是统一的根。您确定数据的顺序正确吗?(跳远秒?)