#encoding:utf-8
from random import *
#----configuration option---------------------------------------
份数 = 10
数据范围 = (0, 10)
最大值范围 = (10, 20)
两项算式个数 = 100
符号 = (0, 0)
两项算式填写位置 = (0, 2)
三项算式填写位置 = (0, 3)
#---const variable-----------------------------------------------
LINE_CHARS = 80
LINE_CNTS = 4
sym_str =('+', '-')
KH = '( )'
def displaystr(str_all, line_chars, line_calcs):
new_str = []
i = 0
while i < len(str_all):
new_str.append(str_all[i:i+line_calcs])
i += line_calcs
for i in new_str:
ln = (line_chars - len(i[line_calcs-1]))//(line_calcs-1)
j = 0
while j < line_calcs - 1:
print(f'{i[j]:{ln}}', end='')
j += 1
print(i[j])
def make_two(cnt, dat_range, sum_range, ssym, bracket):
dat = []
while len(dat) < cnt:
x = randint(*dat_range)
y = randint(*dat_range)
s = x + y
if s >= sum_range[0] and s <= sum_range[1]:
sym = randint(*ssym)
p = randint(*bracket)
if sym == 1: d = [f'{s:2}', f'{x:2}', f'{y:2}']
else: d = [f'{x:2}', f'{y:2}', f'{s:2}']
d[p] = KH
dat.append(f'{d[0]} {sym_str[sym]} {d[1]} = {d[2]}')
return dat
def make_three(cnt, dat_range, sum_range, ssym, bracket, size):
dat = []
while len(dat) < cnt:
sym1 = randint(*ssym)
sym2 = randint(*ssym)
if (sym1 == 1): x = randint(*sum_range)
else: x = randint(*dat_range)
y = randint(*dat_range)
z = randint(*dat_range)
p = randint(*bracket)
if sym1 == 0: s1 = x + y
else: s1 = x - y
if s1 > sum_range[1] or s1 < sum_range[0]:
continue
if sym2 == 0: s2 = s1 + z
else: s2 = s1 - z
if s1 > sum_range[1] or s1 < sum_range[0]:
continue
a = [f'{x}', f'{y}', f'{z}', f'{s2}']
a[p] = KH
ss = f'{a[0]}{sym_str[sym1]}{a[1]}{sym_str[sym2]}{a[2]}={a[3]}'
dat.append(f'{ss:{size}}')
return dat
def make_one_page(cnt):
all = []
print(f' {最大值范围[1]}以内的加减法训练{cnt} ')
print('一年班姓名; 使用时间; 成绩:错( )题')
print('')
all += make_two(两项算式个数, 数据范围, 最大值范围, 符号, 两项算式填写位置)
all += make_three(100- 两项算式个数, 数据范围, 最大值范围, 符号, 三项算式填写位置, len(all[0]))
displaystr(all, LINE_CHARS, LINE_CNTS)
print('')
print('')
if __name__ == '__main__':
for i in range(1, 份数+1):
make_one_page(i)