加减乘除算式(类的继承)

"""
实现100以内的算计加减法算式,并完善
"""
import random
from pprint import pprint


class Operation(object):
    """
    算式左值 left
    右值     right
    算式类型  s_type
    """

    # 算式类  加减乘除可以继承我们的算式类

    def __init__(self, num, num_type):
        self.type = num_type  # 算式类型
        self.right = None
        self.left = None
        self.num = num  # 出题数量
        self.num_s = 1  # 正确数量
        self.operation = []
        self.result = None  # 结果

    def display(self):
        # 显示算式方法
        i = 0
        for fma in self.operation:
            if i % 5 == 0:
                print()
            i += 1
            print(fma, end='   ')
        print('\n')

    def construction_formula(self):
        # 生成算式
        pass

    def update(self):
        self.construction_formula()
        self.display()


class Addition(Operation):
    def __init__(self, num, num_type='+'):
        super().__init__(num, num_type)

    def construction_formula(self):
        while self.num >= self.num_s:
            self.left = random.randint(1, 100)
            self.right = random.randint(1, 100)
            self.result = self.left + self.right
            if 0 <= self.result <= 100:
                formula = '{:4}{}{}{}='.format(str(self.num_s) + '.', self.left, self.type, self.right)
                self.operation.append(formula)
                self.num_s += 1
        self.num_s = 1


class Subtraction(Operation):
    def __init__(self, num, num_type='-'):
        super().__init__(num, num_type)

    def construction_formula(self):
        while self.num >= self.num_s:
            self.left = random.randint(1, 100)
            self.right = random.randint(1, 100)
            self.result = self.left - self.right
            if 0 <= self.result <= 100:
                formula = '{:4}{}{}{}='.format(str(self.num_s) + '.', self.left, self.type, self.right)
                self.operation.append(formula)
                self.num_s += 1
        self.num_s = 1


class Multiplication(Operation):
    def __init__(self, num, num_type='*'):
        super().__init__(num, num_type)

    def construction_formula(self):
        while self.num >= self.num_s:
            self.left = random.randint(1, 100)
            self.right = random.randint(1, 100)
            self.result = self.left*self.right
            if 0 <= self.result <= 100:
                formula = '{:4}{}{}{}='.format(str(self.num_s) + '.', self.left, self.type, self.right)
                self.operation.append(formula)
                self.num_s += 1
        self.num_s = 1


class Division(Operation):
    def __init__(self, num, num_type='/'):
        super().__init__(num, num_type)

    def construction_formula(self):
        while self.num >= self.num_s:
            self.left = random.randint(1, 100)
            self.right = random.randint(1, 100)
            self.result = self.left/self.right
            if 0 <= self.result <= 100:
                formula = '{:4}{}{}{}='.format(str(self.num_s) + '.', self.left, self.type, self.right)
                self.operation.append(formula)
                self.num_s += 1
        self.num_s = 1


if __name__ == '__main__':
    add_n = Addition(10)
    sub_n = Subtraction(10)
    mul_n = Multiplication(10)
    div_n = Division(10)
    add_n.update()
    sub_n.update()
    mul_n.update()
    div_n.update()

 

 运行结果

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值