在python中乘法浮点

2024-10-02 10:27:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在python代码中,我搜索一个特定的格式,然后返回floats ie

...
        return {'ID': int(dataINgood[0]),
                'mIdx': int(dataINgood[2])-1,
                'Px' : float(dataINgood[6]),
                'Py' : float(dataINgood[7]),
                'Pz' : float(dataINgood[8]),
                'E' : float(dataINgood[9]),
                'M' : float(dataINgood[10])}

我想做点什么

^{pr2}$

但这又回来了

'Pt' : math.sqrt(float( dataINgood[6] * dataINgood[6]) + float(dataINgood[7]*dataINgood[7])) }
TypeError: can't multiply sequence by non-int of type 'str'

有什么提示吗?在

谢谢


Tags: 代码pyptidreturn格式floatie
3条回答

铸造一切,然后工作:

fs = [float(x) for x in dataINgood]
{... 'Pt' : math.sqrt(fs[6]**2 + fs[7]**2) }

顺便说一句,这样更好:

^{pr2}$

所以你的代码是这样的:

fs = [float(x) for x in dataINgood]
return {'ID': int(fs[0]),
        'mIdx': int(fs[2])-1,
        'Px' : fs[6],
        'Py' : fs[7],
        'Pz' : fs[8],
        'E' : fs[9],
        'M' : fs[10],
        'Pt' : math.hypot(fs[6], fs[7])
        }

因为dataINgoodstringslist。您需要将值转换为float

'Pt' : math.sqrt(float( dataINgood[6] ) * float( dataINgood[6]) + 
       float(dataINgood[7]) * float(dataINgood[7])) 
math.sqrt(float( dataINgood[6] * dataINgood[6]) + float(dataINgood[7]*dataINgood[7]))

在乘法之前,您需要将dataINgood[x]转换为float,因此您应该尝试下面的语法

^{pr2}$

相关问题 更多 >

    热门问题