建立了一系列功能

时间:2016-08-17 11:38:55

标签: python python-3.x

我发布简单的代码,以了解如何解决我的问题。 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;两次。它们没有错误,但我没有一个列有一两个真/假的列表。

3 个答案:

答案 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 

换句话说,我希望第一个循环我构建函数列表,从第二个循环到结束,执行函数列表。