我正在制作一个程序作为一个学校项目,我希望通过允许用户在任何页面中输入特定的数字来使其返回页面,从而使其感觉像一个网页。
我使用堆栈实现了它(我不太确定它是否重要,但我没有为其设置元素的最大限制,因为设置一个没有意义)。这是我想要重点关注的代码的一小部分:
currentPage=[] #page stack
def goTo(page):
currentPage.append(page)
def goBack(): #redundant for now
global currentPage
print(currentPage) #line 8
del currentPage[-1]
def mainMenu():
print("1. Order item\n2. Admin login\n3. Quit\n")
global currentPage
print(currentPage)
choice=int(input("Please enter your choice: "))
if choice==1:
goTo(order())
elif choice==2:
goTo(adminMenu())
elif choice==3:
goBack()
goTo(mainMenu())
while True:
if len(currentPage)==0:
print("Thank you for using our program! <3")
break
currentPage[-1]()
我希望第 8 行中的 print 能够打印
[mainMenu()]
,但它却打印出 []
。
似乎从列表中调用函数会使列表由于某种原因变空。您能建议任何解决方法吗?
要解决此问题,请避免在将函数添加到
currentPage
列表时执行这些函数。使用 goTo(mainMenu())
代替 goTo(mainMenu)
来存储函数本身。这可以防止列表因函数执行而变空。
通过存储函数而不在
goTo
函数中执行它们,您可以维护功能而不会遇到空列表的问题。