Python 调用while循环中的函数时出现问题

Python 调用while循环中的函数时出现问题,python,while-loop,Python,While Loop,我不知道这是不是一个简单的问题,但我找不到任何关于它的东西,所以我想我会问它 我尝试在while循环中调用函数,但它会一直返回相同的结果,直到条件完成。函数main()从另一个文件导入,并返回一个包含两个元素的列表[a,b] 这两个元素是随机生成的,因此它们在每一步之后都应该改变。如果我单独调用这个函数,它会工作得非常好 这是我目前的代码,希望有人能帮助我: 我认为我的列表x有问题,所以我尝试在每一步之后删除它,但它没有改变任何东西 from some_module import main d

我不知道这是不是一个简单的问题,但我找不到任何关于它的东西,所以我想我会问它

我尝试在while循环中调用函数,但它会一直返回相同的结果,直到条件完成。函数
main()
从另一个文件导入,并返回一个包含两个元素的列表
[a,b]

这两个元素是随机生成的,因此它们在每一步之后都应该改变。如果我单独调用这个函数,它会工作得非常好

这是我目前的代码,希望有人能帮助我:

我认为我的列表
x
有问题,所以我尝试在每一步之后删除它,但它没有改变任何东西

from some_module import main

def loop(variable):

    i = 0
    while i <= 5 :

        x = main(variable)
        a ,b = x[0], x[1]
        print a, b
        del x[:]
        i += 1
随机选择出现在函数initial_solution()中:

#这些列表每一步都在更新
So=[]
I_assign=[]
I_available=['1'、'2'、'3'、'4'、…、'n']
def初始溶液()
而len(I_可用)!=0:
更新\u I\u分配()
随机任务=随机选择(I\U分配)
So.append(随机_任务)
I_可用。删除(随机_任务)
如此回报
def获取最佳解决方案():
如果最小值(所有成本中的i为i)<计算成本(填充站(So)):
最佳解决方案=解决方案[所有成本指数(最小值(所有成本中的i对i))]
返回[min(所有成本中的i对i),最佳解决方案]
其他:
最佳解决方案=加油站(So)
返回[计算成本(加油站(So)),最佳解决方案]

我很难在这里展示其余的代码,因为它相当长。希望更新能帮助您理解。

向我们展示
main
的代码。请同时更新问题中的main函数。您是否每次都使用相同的值对rand进行种子设定?我猜:
main
是使用当前系统时间对随机数生成器进行种子设定,因此当它连续快速调用时,随机数生成器在每次迭代中以相同的时间播种,并生成相同的数。但是没有看到
main
,这只是一个猜测。在这里显示代码之前,您需要对代码进行一些修改。目前仍然很难猜出哪里出了问题,因为
I\u assign
的内容是未知的。请尝试创建一个。
def main(file):
    iniciate(file)
    obtain_neighbours(initial_solution())
    get_all_costs(get_all_solutions())
    return get_best_solution()
#those list are being updated at every step
So = []
I_assign = []
I_available = ['1','2','3','4',...,'n']

def initial_solution():

    while len(I_available) != 0:
        update_I_assign()
        random_task = random.choice(I_assign)
        So.append(random_task)
        I_available.remove(random_task)
    return So

def get_best_solution():

    if min(i for i in all_cost) < calculate_cost(fill_station(So)):
         best_solution = solutions[all_cost.index(min(i for i in all_cost))]
         return [min(i for i in all_cost),best_solution]
    else:
        best_solution = fill_station(So)
        return [calculate_cost(fill_station(So)),best_solution]