# This is ch3-2.py by XXXX YYYYY on 2020/05/01
# This is program 處理 堆疊 (stack)
# 程式內的前兩行務必註明:學號、姓名、題號,及用途
print("===============程式描述========================")
print("= 程式名稱:ch3-2.py =")
print("= 程式目的:使用堆疊進行push以及pop =")
print("==============================================")
MaxNum=5 #定義堆疊大小
Stack=['','','','',''] #以陣列Stack當作堆疊
Top =-1
def menu():
print("==============================================");
print("= 1.push(加入) =");
print("= 2.pop(取出) =");
print("= 3.結束 =");
print("==============================================");
#將堆疊資料印出
def Prt_stack():
strTemp2=""
global Top #Top紀錄目前堆疊頂端的索引值,初始值設為-1表示堆疊為空
if(Top == -1):
print("堆疊目前是空的!")
else:
for i in range(Top,-1,-1):
strTemp2=strTemp2 + Stack[i] + ','
print("堆疊目前的資料: ")
print(strTemp2)
def Push():
global Top #Top紀錄目前堆疊頂端的索引值,初始值設為-1表示堆疊為空
while True:
print("(若不 push 則 直接按 ENTER 即可)")
item =input("請輸入你要push(加入)的資料:")
if item=="": break
if(Top == MaxNum-1):
print("堆疊是滿的!")
break
else:
Top=Top+1
Stack[Top] = item
#取出堆疊資料
def Pop():
global Top #Top紀錄目前堆疊頂端的索引值,初始值設為-1表示堆疊為空
strTmep=""
while True:
if(Top == -1):
print("堆疊是空的!")
else:
strTmep=Stack[Top]
print("%s 是從堆疊彈pop(取出)的資料" % strTmep)
Top=Top-1
# input("請按任意鍵返回主選單")
break
while True:
menu()
Prt_stack()
choice = int(input("請輸入您的選擇:"))
print()
if choice==1:
Prt_stack()
Push() #將資料加入堆疊
elif choice==2:
Prt_stack()
Pop() #取出堆疊資料
elif choice==3:
Prt_stack()
break
else:
break
print("程式執行完畢!")