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

2024-04-26 00:01:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个带while循环的函数,第一个循环的结果在第二个循环中用作until条件,但是在main中调用这两个函数时,它只执行第一个函数,甚至不进入第二个函数,它只给我第一个循环的结果。你知道吗

在第一个函数self.user_association()中有一个使用palp i的线性优化,虽然它是导致问题的原因之一,但这不是因为在第二个函数中调用循环函数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()

Tags: 函数selfaccessmaindefblockrampower
1条回答
网友
1楼 · 发布于 2024-04-26 00:01:30

在第一个函数中,您将执行以下操作:

self.iteration += 1

然后,在第二个函数中,停止条件是:

while (self.iteration < self.Iter_maxB):

所以第一个函数将self.iteration增加到self.Iter_max。现在,如果self.Iter_maxBself.Iter_max的值相同,那么第二个函数循环将永远不会执行。我想这就是这里发生的事情。检查那两个变量。 如果您希望以相同的时间执行这两个循环,那么Fix应该是这样的:

def main(self):
     self.block_Estimation_ACCESS_LINK()
     self.iteration = 0
     self.block_bg_power_allocation()

相关问题 更多 >