while循环不会传递到另一个while循环

时间:2019-05-02 17:21:53

标签: python python-3.x while-loop

我有两个带有while循环的函数,第一个循环的结果在第二个循环中用作直到条件,但是在主程序中调用两个函数时,它仅执行第一个函数,甚至不输入第二个功能只是给我第一个循环的结果。

在第一个函数self.user_association()中使用PULP进行了线性优化,尽管这是导致问题的原因,但这不是因为在第二个函数中调用循环函数block_estimated_access_link()时它只是工作很好,但是我的程序不能那样工作,因为正如我所说,我在第二个循环中使用了第一个循环的结果。这是代码,有人可以告诉我我做错了什么还是到底是什么问题?

def block_Estimation_ACCESS_LINK(self):
    while (self.iteration < self.Iter_max):
        self.User_association()
        self.estimated_access_power()
        self.calcul_alpha()
        self.calcul_rate_am()
        self.User_association()
        self.iteration += 1
def block_bg_power_allocation(self):
     EPS = 0.0000000000001
     RamTot = 0
     while (self.iteration < self.Iter_maxB):
         self.calcul_power_backhaul()
         print('backhaul Pok=', self.p_ok)
         self.calcul_delta()
         self.calcul_rok()
         for i in self.station:
            for j in self.users:
                self.Ram = numpy.delete(self.Ram, self.Ram[0])
            RamTot = sum(self.Ram)
            if EPS <= (self.Rok[i] - sum(self.Ram[i])):
                 self.iteration += 1
def main(self):
     self.block_Estimation_ACCESS_LINK()
     self.block_bg_power_allocation()

1 个答案:

答案 0 :(得分:0)

在第一个功能中,您需要执行以下操作:

self.iteration += 1

然后,在第二个功能中,停止条件为:

while (self.iteration < self.Iter_maxB):

因此,第一个函数会将self.iteration递增到self.Iter_max。现在,如果self.Iter_maxBself.Iter_max的值相同,则第二个函数循环将永远不会执行。我怀疑这就是这里正在发生的事情。检查这两个变量。 如果您想同时执行这两个循环,修复方法将是这样的:

def main(self):
     self.block_Estimation_ACCESS_LINK()
     self.iteration = 0
     self.block_bg_power_allocation()
相关问题