调用函数以在Python中为循环的每次迭代获取新值

时间:2018-02-09 08:44:03

标签: python

我编写了一个函数getSteps(),它使用随机包,每次都应该返回一个不同的值(当我手动多次运行该函数时它会这样做。)

但是当我在for循环或while循环中调用它时,脚本只调用一次函数,然后在每次迭代后使用为第一次迭代返回的值。

我试图按如下方式调用该函数:

F = open("outFile.txt","w")
for i in range(6,100):  ## for each of these values
    for j in range(0,100):  ## call the function 100 times
        steps = getSteps(i)
        F.write(str(i)+","+str(steps)+"\n")

每次迭代都应该有不同的值,但我发现每个迭代都是一样的。有谁能告诉我如何解决这个问题?

该功能定义如下:

def getSteps(maxSteps):
    global numberSteps, numberAttempts, found
    while (found == False):
        sourceJar = psj[random.randrange(0, len(psj))]
        if sourceJar in pdj:
            pdj.remove(sourceJar)
        destJar = pdj[random.randrange(0, len(pdj))]
        if sourceJar == 8 and destJar == 5:
            etf()
        elif sourceJar == 8 and destJar == 3:
            ett()
        elif sourceJar == 5 and destJar == 8:
            fte()
        elif sourceJar == 5 and destJar == 3:
            ftt()
        elif sourceJar == 3 and destJar == 8:
            tte()
        elif sourceJar == 3 and destJar == 5:
            ttf()
        found = checkFound()
        outString = "Pour the " + str(sourceJar) + " litre jar into the " + str(
            destJar) + " litre jar. The volumes for each jar are now "
        outString += "8-" + str(jar8volume) + ",5-" + str(jar5volume) + ",3-" + str(jar3volume)
        ##print outString
        updateLists()
        if (numberSteps >= maxSteps):
            numberAttempts += 1
            reset()
            ##print "Currently on iteration number " + str(numberAttempts)
        numberSteps += 1

    return numberAttempts + 1

1 个答案:

答案 0 :(得分:1)

你有很多代码没有显示。但可能问题是你在getSteps内使用全局变量;一旦found在第一次调用时设置为True,它将保持为真,并且if块中的所有代码都不会在后续调用中执行。