我正在按间隔定义函数。当python将参数fck
与2个间隔(fck<50
)之间的定界值进行比较时,它将返回错误。我了解它无法将数组与整数进行比较,但是fck
不是数组!我打算将其作为浮点数。 python如何确定参数的类型以及如何定义它?
在其他类似的函数中,我定义了一切都很好。我包括有问题的功能和一个有效的示例。我看不到它们之间的任何区别。问题是什么?我不仅要使其工作,而且还想了解python在做什么。
我尝试通过执行def par_rec(eps,fck:float):
来声明参数的类型,但它不会改变结果。
在第二行返回错误的定义:
def par_rec(eps,fck):
if fck<50:
eps0=0.002
else:
eps0=0.002+0.000085*(fck-50)**0.5
if fck<50:
epsu=0.0035
else:
epsu=0.0026+0.0144*((100-fck)/100)**4
if fck<50:
n=2
else:
n=1.4+9.6*((100-fck)/100)**4
if eps<0:
sig=0
elif eps<eps0:
sig=fck/1.5*(1-(1-eps/eps0)**n)
else:
sig=fck/1.5
return sig
没有任何问题的类似定义:
def fctm(fck):
if fck<50:
fctm = 0.3 * fck ** (2 / 3)
else:
fctm=0.58*fck**0.5
return fctm
出现错误时,我正在定义函数,没有调用它:
line 81, in par_rec
if fck<50:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
答案 0 :(得分:0)
虽然您可能认为您的变量不是数组,但事实并非如此。 为了进行调试,您需要打印可疑变量的类型。
print(type(fck))
答案 1 :(得分:0)
但是fck不是数组!
fck可能是一个数组,因为您没有提供任何证明它不是数组,也没有向我们展示如何调用函数。还请向我们显示print(type(fck))
。
它的类型在任何地方都没有定义
在python中是不可能的。每个对象(变量也是对象)都有一个类型。如果您未分配任何值,则变量将是未定义的。如果您分配一个值,则python将自动分配一个匹配类型。如果要初始化有效但为“空”的变量,请分配None
。