如何在不使用 if 语句的情况下随机调用三个函数之一?
How do I randomly call one of three functions without using an if statement?
我创建了一个 class "Bruch",它根据给定范围内的随机数创建两个分数。在三个不同的函数中定义了三种不同类型的运算,用于加法 (bruchplus)、减法 (bruchminus) 和乘法 (bruchmulti)。
"select(self)" 函数随机调用其中之一。
代码运行良好,但我对 select(self) 中的 "if" 子句不满意。它又笨又丑。必须有一种更 pythonic 的方式来实现这一点。 (我试图从列表中调用函数,但这将调用所有三个函数,即使我只是 return 例如列表 [0])。期待您的意见!
class Bruch:
def __init__(self, name):
self.name = 'BRUCHRECHNEN'
print(self.name)
print('')
self.a = Fraction(rdm.randrange(1,10,2),rdm.randrange(2,10,2))
self.b = Fraction(rdm.randrange(1,10,2),rdm.randrange(2,10,2))
#randomly selects + / - / x and calls the respective function
def select(self):
number = rdm.randint(0,2)
if number == 0:
p = self.bruchplus()
elif number == 1:
p = self.bruchminus()
else:
p = self.bruchmulti()
return p
也许你可以这样使用 random.choice()
:
fn = random.choice([self.bruchplus, self.bruchminus, self.bruchmulti])
p = fn()
我创建了一个 class "Bruch",它根据给定范围内的随机数创建两个分数。在三个不同的函数中定义了三种不同类型的运算,用于加法 (bruchplus)、减法 (bruchminus) 和乘法 (bruchmulti)。
"select(self)" 函数随机调用其中之一。
代码运行良好,但我对 select(self) 中的 "if" 子句不满意。它又笨又丑。必须有一种更 pythonic 的方式来实现这一点。 (我试图从列表中调用函数,但这将调用所有三个函数,即使我只是 return 例如列表 [0])。期待您的意见!
class Bruch:
def __init__(self, name):
self.name = 'BRUCHRECHNEN'
print(self.name)
print('')
self.a = Fraction(rdm.randrange(1,10,2),rdm.randrange(2,10,2))
self.b = Fraction(rdm.randrange(1,10,2),rdm.randrange(2,10,2))
#randomly selects + / - / x and calls the respective function
def select(self):
number = rdm.randint(0,2)
if number == 0:
p = self.bruchplus()
elif number == 1:
p = self.bruchminus()
else:
p = self.bruchmulti()
return p
也许你可以这样使用 random.choice()
:
fn = random.choice([self.bruchplus, self.bruchminus, self.bruchmulti])
p = fn()