caeser 发表于 2023-2-15 13:54:15

为什么要输入多次exit才能退出啊?

oho = []
#order = input("请输入指令(push/pop/top/exit):")
def get_in():
    while True:
      order = input("请输入指令(push/pop/top/exit):")
      if order == "push":
            push()
      elif order == "pop":
            pop_()
      elif order == "top":
            top_filo()
      else:
            order == "exit"
            break
      break
      
   

def print_filo():
    print("栈:")
    for i in oho:
      print(i)
    get_in()

def push():
    val = input("请输入将要压入栈中的值:")
    oho.insert(0,val)
    print_filo()
    get_in()

def top_filo():
    if len(oho) >1:
      print("栈:")
      print(oho)
    else:
      print("栈已空")

def pop_():
    if len(oho) >1:
      print(oho)
      oho.pop(0)
      print_filo()
    else:
      print("栈已空")
   
get_in()


各位老师,请问下为什么要多次输入exit才能退出啊?

请输入指令(push/pop/top/exit):push
请输入将要压入栈中的值:520
栈:
520
请输入指令(push/pop/top/exit):exit
请输入指令(push/pop/top/exit):exit
>>>
==================== RESTART: C:\Users\cjc04\Desktop\temp.py ===================
请输入指令(push/pop/top/exit):push
请输入将要压入栈中的值:520
栈:
520
请输入指令(push/pop/top/exit):push
请输入将要压入栈中的值:521
栈:
521
520
请输入指令(push/pop/top/exit):exit
请输入指令(push/pop/top/exit):exit
请输入指令(push/pop/top/exit):exit
>>>

isdkz 发表于 2023-2-15 14:05:34

因为你递归调用了,把 print_filo 和 push 函数里面的 get_in 删掉

还有 while True 里面也不对,应该是 elif order == "exit",最后的那个 break 也删掉

oho = []
#order = input("请输入指令(push/pop/top/exit):")
def get_in():
    while True:
      order = input("请输入指令(push/pop/top/exit):")
      if order == "push":
            push()
      elif order == "pop":
            pop_()
      elif order == "top":
            top_filo()
      elif order == "exit":
            break
      else:
            print("无效的指令")

      
   

def print_filo():
    print("栈:")
    for i in oho:
      print(i)


def push():
    val = input("请输入将要压入栈中的值:")
    oho.insert(0,val)
    print_filo()


def top_filo():
    if len(oho) >1:
      print("栈:")
      print(oho)
    else:
      print("栈已空")

def pop_():
    if len(oho) >1:
      print(oho)
      oho.pop(0)
      print_filo()
    else:
      print("栈已空")
   
get_in()
页: [1]
查看完整版本: 为什么要输入多次exit才能退出啊?