(使用eclipse氧气的Windows 7 64位上的Python 3.6.3)
我试图返回返回True的函数的值。您输入相关参数a,v,s,j,并根据结果发生特定情况。我已经尝试过使用callable,但由于所有这些都是可调用的,所以它不起作用。使用 dict .items()也没有用。
也许在某种程度上可以使用for循环尝试迭代通过类查找True并打破循环。不幸的是我无法设置这样的for循环。我很感激任何帮助。
class cases(object):
def __init__(self, a, v, s, j):
self.a = a
self.v = v
self.s = s
self.j = j
def case_one(self, a, v, s, j):
tj = pow((s/(2*j)),1/3)
a_max = tj * j
v_max = j*(tj**2)
if a >= a_max and v >= v_max:
x = True
else:
x = False
return x, tj, a_max, v_max
pass
def case_two(self, a, v, s, j):
tj = pow(v/j, 1/2)
tv = (s/(j*tj**2)-2*tj)
a_max = tj * j
if a >= a_max and tv > 0:
x = True
else:
x = False
return x, tv, tj, a_max
pass
def case_three(self, a, v, s, j):
ta = (a/j)*(-3/2+pow((1/4)+(s*j**2/pow(a,3)),1/2))
tj = a/j
v_max = j*tj*(ta+tj)
if v >= v_max and ta > 0:
x = True
else:
x = False
return x, ta, tj, v_max
pass
def case_four(self, a, v, s, j):
tj = a/j
ta = (v/a)-(a/j)
tv = (s/v)-(v/a)-(a/j)
if tv > 0 and ta > 0:
x = True
else:
x = False
return x, tj, ta, tv
pass
def __call__(self):
self.case_one()
self.case_two()
self.case_three()
self.case_four()
case = cases.case_four(1,14.5,7,0.25,120)
print(case)
P.S .: 显然我并不完全明白" self"因为我必须输入一个" 1"作为第一个参数,以获得任何结果。否则我收到一条错误消息说" TypeError:case_four()缺少1个必要的位置参数:' j'"但是j等于120。
答案 0 :(得分:1)
=>
cases = Cases(14.5,7,0.25,120)
self
已经拥有它们,因为您在__init__
内将它们分配给它:=>
def case_one(self):
a,v,s,j = self.a, self.v, self.s, self.j # aliases
tj = pow((s/(2*j)),1/3)
a_max = tj * j
v_max = j*(tj**2)
x = (a >= a_max and v >= v_max)
return x, tj, a_max, v_max
cases
,而不是类Cases
:=>
for method in [cases.case_one, cases.case_two, cases.case_three, cases.case_four]:
ret = method()
if ret[0]:
print(method.__name__)
break
else:
print("no result was True")
pass
...