Python类与format实现的计算器无报错不运行,如何单print输出友好内容
问题代码修复方案
原有代码的核心问题
- 构造方法
__init__定义了a、b两个不必要的形参,实例化Calc()时没有传入对应参数,会直接触发参数不匹配报错,这是程序无法运行的核心原因 - 类内部的
calculator方法直接调用了外部实例名c1,类内部调用自身属性和方法应该使用self关键字,否则代码耦合度极高,更换实例名后会直接失效 - 输入提示无结尾分隔符,用户输入体验不佳
修复后代码
class Calc: # 去掉多余的形参a、b,直接在构造方法内通过input获取输入值 def __init__(self): self.a = int(input("Enter a: ")) self.b = int(input("Enter b: ")) def add(self): return self.a + self.b def sub(self): return self.a - self.b def mult(self): return self.a * self.b def div(self): # 新增除0判断避免程序崩溃,不需要可直接删除该行使用原除法逻辑 return self.a / self.b if self.b != 0 else "除数不能为0" def calculator(self): # 用self替代外部实例名c1,单条print+format实现结果输出 print("""sum of {0} and {1} = {2} subtraction of {0} and {1} = {3} Multiplication of {0} and {1} = {4} Division of {0} and {1} = {5}""".format(self.a, self.b, self.add(), self.sub(), self.mult(), self.div())) c1 = Calc() c1.calculator()
可选优化
如果需要更符合中文用户的输出,可以将打印字符串替换为中文提示:
print("""{0} 和 {1} 的和 = {2} {0} 和 {1} 的差 = {3} {0} 和 {1} 的积 = {4} {0} 和 {1} 的商 = {5}""".format(self.a, self.b, self.add(), self.sub(), self.mult(), self.div()))
内容的提问来源于stack exchange,提问作者Barbie2001
相关产品推荐
相关产品推荐

