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

Python使用类计算平均分时报str与int不支持运算错误该如何修复

错误原因

你实例化Student类时传入的m1/m2/m3参数都是字符串类型(被单引号包裹的'20'、'40'等),在avg方法执行加法运算时,Python无法直接对字符串和数字做算术运算,因此抛出该类型错误。

修复方案

有两种常用的修复方式:

方案1:实例化时直接传入整数参数

去掉参数外层的引号,直接传入整型数值即可:

class Student:
    # 静态变量
    school = 'vailankanni'
    def __init__(self, m1 , m2, m3):
        self.m1 = m1
        self.m2 = m2
        self.m3 = m3
    def avg(self):
        return (self.m1 + self.m2 + self.m3) / 3

# 去掉参数的单引号,传入整数
s1 = Student(20, 40, 60)
s2 = Student(80, 100, 120)

print(s1.avg()) # 输出结果为40.0

方案2:在构造方法中统一做类型转换

如果无法保证传入的参数一定是数值类型,可以在__init__方法中将参数强制转换为整型/浮点型,兼容字符串格式的数字输入:

class Student:
    # 静态变量
    school = 'vailankanni'
    def __init__(self, m1 , m2, m3):
        # 统一转换为整型,也可根据需求换成float()
        self.m1 = int(m1)
        self.m2 = int(m2)
        self.m3 = int(m3)
    def avg(self):
        return (self.m1 + self.m2 + self.m3) / 3

# 此时传入字符串格式的数字也可以正常计算
s1 = Student('20', '40', '60')
s2 = Student('80', '100', '120')

print(s1.avg()) # 输出结果为40.0

内容的提问来源于stack exchange,提问作者blogs barrel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:06:04