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
相关产品推荐
相关产品推荐

