loop,python,定义一系列变量和函数

时间:2017-06-23 15:46:19

标签: python loops

我是Python新手,很难理解如何使用循环。

任何人都可以帮我如何在循环/列表中编写下面的代码,这会短得多吗?

def a1(self):
    if aorb1 == 1:
        return texta1
    return textb1

def a2(self):
    if aorb2 == 1:
        return texta2
    return textb2

def a3(self):
    if aorb3 == 1:
        return texta3
    return textb3

非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以在传递ab的位置生成lambdas,如下所示:

my_funcs = []
for i in range(1,4):
    func = lambda a, b: textas[i] if a == 1 or b == 1 else textbs[i]
    my_funcs.append(func)

您可以调用这样的函数:

my_funcs[0](0,1)  # this does the same as your function a1

我不知道你想要texta1textb1。这可以存储在字典中,就像我在上面的例子中那样。

答案 1 :(得分:0)

我可以瞄准你的方向并提供一定程度的指导,但我怀疑在没有更多信息的情况下我没有找到正确的方向。

首先,您不需要self作为参数。这仅适用于对象。

接下来,您需要提供函数中使用的变量作为参数。您似乎尝试使用ab而未声明它们。

def a1(a, b)
    if a == 1:
        return texta
    elif b == 1:
        return textb

小心你不要错过任何案件。如果a = 0b = 0怎么办?然后这个函数将返回None

最后,我不确定你要对循环做什么,但也许是这样的?

# assign a and b values somewhere
a = 1
b = 0

# save the functions in a list
my_functions = [a1, a2, a3]

# execute each function with the parameters `a` and `b`
for f in my_functions:
    result = f(a, b)
    x.append(result)

这将生成一个列表,其中包含参数ab的函数执行结果。想要提供更多帮助,但我们需要更多信息。也许上述情况会刺激这一点。