2012-06-26 76 views
0

我是Python新手。 我收到一个错误,说“未定义的变量”。我无法弄清楚。 在代码中的声明如下:未定义可变循环

Classroom1 = Classroom(FirstCourseStartTime = 8, LastCourseEndTime = 7.75) 
m_count = 0 
h_count = 0 
t_count = 0 
l_count = 0 
loopsize = 10000 
Loop(Classroom1, m_count, h_count, t_count, l_count, loopsize) 
def Loop(Classroom1, m_count, h_count, t_count, l_count, loopsize): 
    for i in range(0, loopsize): 
     Mutated = Classroom() 
     Mutated = Classroom1.CopyOfClassroom(Mutated) 
     Mutated.Mutate() 
     HardConstraintClassroomMet = Classroom1.ComputeHardConstraint() 
     HardConstraintMutatedMet = Mutated.ComputeHardConstraint() 
     if HardConstraintClassroomMet == False and HardConstraintMutatedMet == False: 
      h_count + 1 
      t_count + 1 
      Classroom1.Mutate() 
      continue 
     if Mutated.FitnessValue() > Classroom1.FitnessValue(): 
      m_count + 1 
      t_count + 1 
      Classroom1 = Mutated 
     if Classroom1.ComputeHardConstraint() == False: 
      l_count + 1 
      temp = l_count*loopsize 
      print "Unable to meet hard consraints in %d" % temp 
     Loop(Classroom1, m_count, h_count, t_count, l_count, loopsize) 
+0

我想,你是在定义它之前调用函数'Loop'。 – deebee

+0

也许这意味着变量Python告诉你未定义(你忽略告诉我们),可能是未定义的? Python还会告诉你它试图使用未定义变量的那一行;也许比这条线更早定义它会有所帮助。可能值得在这条线上添加一个虚拟的定义,比如'Loop = 0',看看你是否至少得到了一个不同的错误。 – Ben

回答

3

你打电话你Loop()功能您已经定义它。

+0

另外,Classroom课程在哪里? – Junuxx

+0

除此之外,你似乎无限次和循环遍历'Loop'函数(假设你的'def Loop'行之后的所有代码行都被缩进一个)。 –

+0

看起来缩进已被修复,而且确实调用了无限递归。 –

0

首先,你必须组织:

class classroom, 
    def loop 

里面的功能回路写在全局:

global m_count 
global h_count 
global t_count 

终于改变if语句:

if HardConstraintClassroomMet == False and HardConstraintMutatedMet == False: 
     h_count = h_count + 1 
     t_count = t_count + 1