我是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
非常感谢。
答案 0 :(得分:0)
您可以在传递a
和b
的位置生成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
我不知道你想要texta1
或textb1
。这可以存储在字典中,就像我在上面的例子中那样。
答案 1 :(得分:0)
我可以瞄准你的方向并提供一定程度的指导,但我怀疑在没有更多信息的情况下我没有找到正确的方向。
首先,您不需要self
作为参数。这仅适用于对象。
接下来,您需要提供函数中使用的变量作为参数。您似乎尝试使用a
和b
而未声明它们。
def a1(a, b)
if a == 1:
return texta
elif b == 1:
return textb
小心你不要错过任何案件。如果a = 0
和b = 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)
这将生成一个列表,其中包含参数a
和b
的函数执行结果。想要提供更多帮助,但我们需要更多信息。也许上述情况会刺激这一点。