2016-11-24 17 views
-1
stack = ['','','','','',''] 
    global first 
    global last 
    first = 0 
    last = 0 
    print(stack) 
    while True: 
     def push(): 
      if 0 <= last: 
       stack[last] = 'D' 
       last = last + 1 
       if last == 6: 
       last = -1 
      else: 
       print("The stack is full.") 
       print(stack) 
     def pop(): 
      stack[last] = '' 
      last == stack[last-1] 
      print(stack) 
      if first == last: 
       print("The queue is empty") 
     a = input("Push or pop. ") 
     if a == 'push': 
      push() 
     elif a == 'pop': 
      pop() 

私は最後にグローバル変数として割り当てましたが、このエラーはUnboundLocalError:割り当て前にローカル変数 'last'が参照されています。私は最後にグローバル変数を作ったと考えていますが、なぜエラーが他の方法を示唆しているのか理解できません。グローバル変数エラー

+2

ループ内に関数を定義しないでください。 'global'は使わないでください。リストを事前に割り当てないでください。 – Daniel

+0

私はグローバル変数の使用が悪い習慣であることを知っていますが、ループ内からグローバル変数を呼び出すことができないのはなぜですか? @ダニエル – Joseph

答えて