# -*- coding: utf-8 -*- import math from functools import wraps def quadratic_decorator(func): @wraps(func) def wrapper(*args, **kwargs): result = func(*args, **kwargs) if len(result) == 0: return "没有实数根" elif len(result) == 1: return "只有一个实数根,为%s" % result[0] return "有两个实数根,分别为{0},{1}".format(*result) return wrapper class Math(object): @classmethod def quadratic(cls, a, b, c): dt = b ** 2 - 4 * a * c if dt < 0: return tuple() p = -(b / (2 * a)) q = math.sqrt(dt) / (2 * a) if dt == 0: return (p + q,) return (p + q, p - q) class NewMath(Math): @classmethod @quadratic_decorator def quadratic(cls, a, b, c): return super(NewMath, cls).quadratic(a=a, b=b, c=c) if __name__ == '__main__': print(NewMath.quadratic(2, 3, 1)) # 有两个实数根,分别为-0.5,-1.0 print(NewMath.quadratic(1, 3, -4)) # 有两个实数根,分别为1.0,-4.0 print(NewMath.quadratic(2, 4, 2)) # 只有一个实数根,为-1.0 print(NewMath.quadratic(2, 1, 2)) # 没有实数根
Sign in to make a reply
初见-好久不见