我的代码中有此错误,但我不知道为什么:
文件“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)
当您将某个内容放在方括号
[]
中时,您就创建了一个列表。如果您不想列出一个列表,请不要在其中添加方括号。
使用括号
()
进行算术分组。
您将 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)