"""
实现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()
运行结果