以相反的顺序堆叠

时间:2016-04-05 21:42:31

标签: python-3.x stack

尝试创建一个反向打印堆栈的函数。

这是我到目前为止的代码:

def read_ints(num):            
  integer = int(input("Enter a integer:"))
  stack = Stack() 
  for i in range(integer): 
    if stack.is_empty() == True:
      stack.push(num) 
    else: 
      stack.pop()

我创建了一个测试用例:

read_integers(3)
4
3
2

所以当我输入4,3和2.输出应该是2,3 4。 任何帮助都会非常感谢!目前它刚刚打印出一个整数三次。所以我得到3,3,3

1 个答案:

答案 0 :(得分:0)

  integer = int(input("Enter a integer:"))

这一行需要在里面你的for循环 - 否则你接受输入一次然后循环三次,这很愚蠢。

for i in range(integer): 

假设您想要阅读num个整数,您应该循环到range(num),而不是range(integer)

if stack.is_empty() == True:
  stack.push(num) 
else: 
  stack.pop()

这可能不是你想要的 - 如果它是空的,你只是添加到堆栈,否则立即弹出。相反,你想首先推送所有数字,然后在结尾处全部弹出。此外,您再次混淆了numinteger - 您希望将输入添加到堆栈中,而不是您的循环限制!

因此,假设您的Stack.pop打印出正在弹出的内容:

for i in range(num):
    integer = int(input("Enter an integer: "))
    stack.push(integer)

while not stack.is_empty():
    stack.pop()