Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 按相反顺序堆叠_Python 3.x_Stack - Fatal编程技术网

Python 3.x 按相反顺序堆叠

Python 3.x 按相反顺序堆叠,python-3.x,stack,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() 我创建了一个测试用例: re

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

这是我目前掌握的代码:

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

  integer = int(input("Enter a integer:"))
这一行必须在for循环中-否则您只接受一次输入,然后循环三次,这很愚蠢

for i in range(integer): 
假设要读取
num
整数,则应循环到
range(num)
,而不是
range(integer)

这可能不是您想要的——只有当堆栈为空时才添加到堆栈中,否则会立即弹出。相反,您希望先将所有数字按入,然后在最后将它们全部弹出。另外,您又混淆了
num
integer
——您希望将输入添加到堆栈中,而不是循环限制

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

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

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

num
应该是您要读取的整数数吗?是的,num就是:)这里的函数名不匹配,没有提供
堆栈的定义,并且您提供的代码在任何时候都不会产生任何非提示输出。所以我们不知道你在打印什么,如果你在打印,或者你的任何代码逻辑是什么。非常重要的一点是,要了解什么是顺序,甚至要理解“按相反顺序打印”的含义;你的意思是按推送的顺序打印(FIFO,堆栈自然顺序的倒数,即后进先出),还是从基础列表的末尾打印到开头(后进先出,列表的倒数,但堆栈的自然顺序)?前几天你问过同样的程序,但有不同的错误,对吗?这里有似曾相识的感觉,我不知道是不是只有我一个人。无论如何,如果
stack
是一个
列表,只需
stack.pop(0)
。否则,请反转列表(复制或就地),并弹出最后一个element@ShadowRanger . OP可以告诉我们它是否是当前版本,我猜。
for i in range(num):
    integer = int(input("Enter an integer: "))
    stack.push(integer)

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