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()