如何在不使用if语句的情况下随机调用三个函数之一?

时间:2018-04-16 20:53:03

标签: python list oop random function-call

我创建了一个班级"布鲁赫"从给定范围内的随机数创建两个分数。在三个不同的函数中定义了三种不同类型的操作,用于加法(bruchplus),减法(bruchminus)和乘法(bruchmulti)。

"选择(自我)"函数随机调用其中一个。

代码完全正常,但我不满意"如果" select(self)中的子句。它笨拙而丑陋。必须有更多的pythonic方式来实现这一目标。 (我试图从列表中调用函数,但是这将调用所有三个函数,即使我只返回例如list [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

1 个答案:

答案 0 :(得分:4)

也许您可以像这样使用random.choice()

fn = random.choice([self.bruchplus, self.bruchminus, self.bruchmulti])
p = fn()