2010-03-12 57 views
1

由於某種原因,這個程序說'switch'沒有被定義。到底是怎麼回事?python:在幾個條件之後變量沒有被定義

#PYTHON 3.1.1 
class mysrt: 
     def __init__(self): 
      self.DATA = open('ORDER.txt', 'r') 
      self.collect = 0 
      cache1 = str(self.DATA.readlines()) 
      cache2 = [] 
      for i in range(len(cache1)): 
       if cache1[i] == '*': 
        if self.collect == 0: self.collect = 1 
        elif self.collect == 1: self.collect = 0 
       elif self.collect == 1: 
        cache2.append(cache1[i]) 
      self.ORDER = cache2 
      self.ARRAY = [] 
      self.GLOBALi = 0 
      self.GLOBALmax = range(len(self.ORDER)) 
      self.GLOBALc = [] 
      self.GLOBALl = [] 
     def sorter(self, array): 
      CACHE_LIST_1 = [] 
      CACHE_LIST_2 = [] 
      i = 0 
      for ORDERi in range(len(self.ORDER)): 
       for ARRAYi in range(len(array)): 
        CACHE = array[ARRAYi] 
        if CACHE[self.GLOBALi] == self.ORDER[ORDERi]: 
         CACHE_LIST_1.append(CACHE) 
        else: 
         CACHE_LIST_2.append(CACHE) 
       for i in range(len(CACHE_LIST_1)): 
        if CACHE_LIST_1[0] == CACHE_LIST_1[i] or range(len(CACHE_LIST_1)) == 1: 
         switch = 1 
         print ('1') 
        else: 
         switch = 0 
         print ('0') 
         break 
       if switch == 1: 
        self.GLOBALl += CACHE_LIST_1 + self.GLOBALc 
        self.GLOBALi = 0 
        self.GLOBALc = []    
       else: 
        self.GLOBALi += 1 
        self.GLOBALc += CACHE_LIST_2 
        mysrt.sorter(CACHE) 
      return (self.GLOBALl) 

       #GLOBALi =0 
        # if range(len(self.GLOBALc)) =! range(len(self.ARRAY)) 
    array = ['ape', 'cow','dog','bat'] 
    ORDER_FILE = []   
    mysort = mysrt()  
    print (mysort.sorter(array)) 
+2

考慮爲模塊級別*常量保留全大寫變量名稱... ... – ChristopheD 2010-03-12 00:26:54

回答

6

如果CACHE_LIST_1爲空序列然後switch永遠不會約束。

+0

其他人不會覆蓋它嗎? – Pax 2010-03-12 00:21:09

+0

'else'是'if'的一部分。如果'if'永遠達不到,那麼'else'就無法生效。 – 2010-03-12 00:22:11

+0

否 - 整個'for'循環永遠不會運行,因此永遠不會到達'if'子句。 – 2010-03-12 00:22:28