You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现栈类报TypeError: 'int'和'method'不支持+操作如何解决

问题解决方法

直接报错原因

你在sum_stack方法中往奇偶列表追加元素时,写的是self.top,这是类的方法对象本身,不是调用方法拿到的栈顶值。需要改为self.top()(加括号执行方法获取返回值),否则even和odd列表中存储的都是方法对象,执行sum计算时就会触发int和method无法相加的类型错误。

其他需修正的语法&逻辑问题

  • 类内所有方法的缩进错误:Python中类的方法必须缩进在class Stack的代码块内,你当前的方法定义和class平级,不属于Stack类的成员
  • __init__方法中self.stack=[] t多了无效字符t,属于语法错误
  • 入栈方法名不统一:你定义的入栈方法叫stack,但后续调用时写的是p.empilhar(inter),不存在该方法,需统一命名
  • 最终调用的方法名错误:你实现的计算方法叫sum_stack,但最后调用的是不存在的p.final_result()
  • 栈清空逻辑错误:遍历self.stack的同时执行pop会导致遍历不全,无法把栈完全清空,需改为while循环判断栈非空就弹出元素处理
  • 缺少除零防护:如果栈内没有奇数,奇数和为0时会触发除零错误,需增加判断逻辑

修正后的完整代码

class Stack:
    def __init__(self):
        self.stack = []
        self.size_stack = 0
        self.even = [] 
        self.odd = [] 
    
    # 入栈方法 统一命名为empilhar对应你后续的调用
    def empilhar(self, e):
        self.stack.append(e)
        self.size_stack += 1 

    # 出栈方法
    def unstack(self):
        if not self.void():
            self.size_stack -= 1 
            return self.stack.pop()            

    def top(self):
        if not self.void():
            return self.stack[-1] 

    def void(self):
        return self.size_stack == 0

    def size(self):
        return self.size_stack
   
    def sum_stack(self):
        # 用while循环清空栈 保证所有元素都被处理
        while not self.void():
            num = self.unstack()
            if num % 2 == 0:
                self.even.append(num)
            else:  
                self.odd.append(num)
                
        result_even = sum(self.even)
        result_odd = sum(self.odd)
        # 增加除零判断
        if result_odd == 0:
            return "奇数和为0,无法执行除法"
        final_result = result_even / result_odd 
        return final_result
            

p = Stack()
n = int(input("Enter the number of digit to be entered: "))
for i in range(n):
    print(f"Type the {i+1}º number: ")
    inter = int(input())
    p.empilhar(inter)

print(p.sum_stack())

内容的提问来源于stack exchange,提问作者Leonardo Silvino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 21:06:04