我发布简单的代码,以了解如何解决我的问题。 while循环有2个循环,但实际上有10亿个循环。
def uno_trov():
if(1==1):
return True
else:
return False
def due_trov():
if(1==0):
return True
else:
return False
condizioneV = []
condizione = [1, 0] #1 or 0 inside can be change by the user
first_time = False
i=0
while(i<2):
if(first_time == False): #whit the first cycle I build condizioneV (list of functions)
if(condizione[0]==1):
condizioneV.append(uno_trov)
if(condizione[1]==1):
condizioneV.append(due_trov)
first_time = True
print(condizioneV) #I expect [True]
i+=1
else: #second time condizioneV is already builded and I suppose the process will be more fast because the code not check anymore " if(condizione[1]==1)"
print(condizioneV) #I expect [True]
i+=1
#problem is that I obtain "[<function uno_trov at 0x0272DED0>]" two time.
我不明白原因但我得到了#34; []&#34;两次。它们没有错误,但我没有一个列有一两个真/假的列表。
答案 0 :(得分:1)
condizioneV.append(uno_trov)
附加您遗漏()
校正:
condizioneV.append(uno_trov())
一般评论:您的代码编写得非常糟糕且令人困惑。看看你的first_time
条件,例如。缩进很糟糕。
答案 1 :(得分:0)
那里有一些非常复杂的代码。我无法想象它想要做什么。我认为你是初学者。
但是你的数组包含函数的原因是这两行将函数本身附加到数组中,函数没有被执行。
而不是:
condizioneV.append(uno_trov)
condizioneV.append(due_trov)
你需要这样做:
condizioneV.append(uno_trov())
condizioneV.append(due_trov())
答案 2 :(得分:0)
是的,这是一个循环的解决方案,但如果您尝试通过将参数传递给函数来使用它,则不再起作用。我添加&#34; t = i&#34;在第一个if:
def uno_trov(t):
if(1==t):
return True
else:
return False
def due_trov():
if(1==0):
return True
else:
return False
condizioneV = []
condizione = [1, 1] #1 or 0 inside can change by the user
first_time = False
i=0
while(i<2):
if(first_time == False): #whit first cycle I build condizioneV
if(condizione[0]==1):
t=i
condizioneV.append(uno_trov(t))
if(condizione[1]==1):
condizioneV.append(due_trov())
first_time = True
print(condizioneV) #I expect [False]
i+=1
t=i
else: #second time condizioneV is already build but not properly work good
print(condizioneV) #I expect [True] but instead I get [False]
i+=1
t=i
换句话说,我希望第一个循环我构建函数列表,从第二个循环到结束,执行函数列表。