xy-xuan 发表于 2023-9-4 14:59:09

为什么在输入'pop'的时候没有执行pop函数的内容?

def push(x):
    result.append(x)

def pop():
    result[::-1].pop()
    return result

def printed(x):
    x = x[::-1]
    for each in x:
      print(each)

result = []
op = input('请输入指令(push/pop/top/exit):')
while op != 'exit':
    if op == 'push':
      x = input('请输入要压入栈中的值:')
      push(x)
      
      printed(result)
    if op == 'top':
      print(result[-1])
    if op == 'pop':
      pop()
    op = input('请输入指令(push/pop/top/exit):')

isdkz 发表于 2023-9-4 14:59:24

在输入'pop'的时候没有执行pop函数的内容是因为pop函数没有正确地修改全局变量result的值。在pop函数中,使用了result[::-1].pop()来删除列表result的最后一个元素,但是这个操作并没有改变result的值。pop()函数应该修改为result.pop(),这样才能正确地删除最后一个元素并更新result的值。修改后的代码如下:

def push(x):
    result.append(x)

def pop():
    result.pop()
    return result

def printed(x):
    x = x[::-1]
    for each in x:
      print(each)

result = []
op = input('请输入指令(push/pop/top/exit):')
while op != 'exit':
    if op == 'push':
      x = input('请输入要压入栈中的值:')
      push(x)
      
      printed(result)
    if op == 'top':
      print(result[-1])
    if op == 'pop':
      pop()
    op = input('请输入指令(push/pop/top/exit):')


现在,当输入'pop'时,pop函数会正确地删除result列表的最后一个元素,并返回更新后的result列表。
页: [1]
查看完整版本: 为什么在输入'pop'的时候没有执行pop函数的内容?