2012-06-26 121 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