2016-11-24 100 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

我知道使用全局變量是不好的做法,但爲什麼它不能從循環內調用全局變量? @Daniel – Joseph

回答