Я определяю функцию по интервалам.И когда 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
I'mопределяя функцию, я не вызываю ее, когда получаю ошибку:
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()