错误:类型错误:无法将序列乘以“float”类型的非 int

问题描述 投票:0回答:2

我的代码中有此错误,但我不知道为什么:

文件“C:/Users/Usuario/Desktop/untitled8.py”,第 25 行,在 w3_corr 中 FXp=[(2.022-0.0004302*p)+(0.1722-0.0000984*p)*(math.exp(18.177-0.004129*p))X](1.157-0.869*X)

TypeError:无法将序列乘以“float”类型的非 int 类型错误:无法将序列乘以“float”类型的非 int

代码:

import math



def w3_corr(X,p,Mflux,D,Hflux):


    FXp=0
    FXG=0
    FD=0
    Hflux_calc=0

    FXp=[(2.022-0.0004302*p)+(0.1722-0.0000984*p)*math.exp(18.177-0.004129*p)*X]*(1.157-0.869*X)
    FXG=(0.01484-1.596*X+0.1729*X*math.fabs(X))*(Mflux/10**6)+1.037
    FD=[0.2664+0.8357*math.exp(-3.151*D)]

    Hflux_calc= FXp * FXG * FD

    return Hflux_calc

y=w3_corr(0.15,14.5038,0,0.31496,90445.9)

print(y)
python
2个回答
0
投票

当您将某个内容放在方括号

[]
中时,您就创建了一个列表。如果您不想列出一个列表,请不要在其中添加方括号。

使用括号

()
进行算术分组。


0
投票

您将 FXp 分配为具有单个元素的列表。这是不必要的,也不是正确的行为。它应该只是一个标量值,类似地,FD 被计算为具有一个元素的列表,但它应该是一个标量值 当 FXp、FXG 和 FD 相乘时,您不希望执行列表的逐元素乘法。这些应该是正确乘法的标量值。

更改您的代码:

import math



def w3_corr(X,p,Mflux,D,Hflux):


    FXp=0
    FXG=0
    FD=0
    Hflux_calc=0

    FXp=[(2.022-0.0004302*p)+(0.1722-0.0000984*p)*math.exp(18.177-0.004129*p)*X]*(1.157-0.869*X)
    FXG=(0.01484-1.596*X+0.1729*X*math.fabs(X))*(Mflux/10**6)+1.037
    FD=[0.2664+0.8357*math.exp(-3.151*D)]

    Hflux_calc= FXp * FXG * FD

    return Hflux_calc

y=w3_corr(0.15,14.5038,0,0.31496,90445.9)

print(y)

这段代码:

import math

def w3_corr(X, p, Mflux, D, Hflux):
    # Calculate FXp
    FXp = (2.022 - 0.0004302 * p) + (0.1722 - 0.0000984 * p) * math.exp(18.177 - 0.004129 * p) * X
    FXp *= (1.157 - 0.869 * X)  # Apply the multiplier

    # Calculate FXG
    FXG = (0.01484 - 1.596 * X + 0.1729 * X * abs(X)) * (Mflux / 10 ** 6) + 1.037

    # Calculate FD
    FD = 0.2664 + 0.8357 * math.exp(-3.151 * D)

    # Final Hflux calculation
    Hflux_calc = FXp * FXG * FD

    return Hflux_calc

# Example usage
y = w3_corr(0.15, 14.5038, 0, 0.31496, 90445.9)

print(y)
© www.soinside.com 2019 - 2024. All rights reserved.