我编写了一个函数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
答案 0 :(得分:1)
你有很多代码没有显示。但可能问题是你在getSteps
内使用全局变量;一旦found
在第一次调用时设置为True,它将保持为真,并且if
块中的所有代码都不会在后续调用中执行。