尝试创建一个反向打印堆栈的函数。
这是我到目前为止的代码:
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
答案 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()
这可能不是你想要的 - 如果它是空的,你只是添加到堆栈,否则立即弹出。相反,你想首先推送所有数字,然后在结尾处全部弹出。此外,您再次混淆了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()