python输出200道加减乘除法计算题到Excel
python输出200道加减乘除法计算题到Excel,表格格式在代码中已添加,打印设置-窄边框,将工资表调整一页打印即可
https://gitee.com/HP_mojin/Calculation
# -*- coding: gbk -*-
import random
from openpyxl.styles import Alignment
from openpyxl.styles import Border,Side
from openpyxl.utils import get_column_letter
from openpyxl.styles import Font # 导入字体模块
import openpyxl # openpyxl引入模块
#数据写入Excel
def write_to_excel(path: str, sheetStr, info, data):#数据写入Excel
# 实例化一个workbook对象
workbook = openpyxl.Workbook()
ws = workbook[workbook.sheetnames[0]]
# 激活一个sheet
sheet = workbook.active
# 为sheet设置一个title
sheet.title = sheetStr
# 添加表头(不需要表头可以不用加)
#data.insert(0, list(info))
# 开始遍历数组
for row_index, row_item in enumerate(data):
# 设置边框
border = Border(left=Side(border_style='thin',color='000000'),right=Side(border_style='thin',color='000000'),top=Side(border_style='thin',color='000000'),bottom=Side(border_style='thin',color='000000'))#设置边框
# 设置字体样式
font = Font(u'微软雅黑', size=15, bold=True, italic=False, strike=False, color='000000',) # 设置字体样式
# 设置居中
align = Alignment(horizontal=horizontal, vertical='center', wrap_text=True)#设置居中
for col_index, col_item in enumerate(row_item):
# 写入
sheet.cell(row=row_index + 1, column=col_index + 1, value=col_item).alignment = align #设置居中
sheet.cell(row=row_index + 1, column=col_index + 1, value=col_item).font =font # 序列
sheet.cell(row=row_index + 1, column=col_index + 1, value=col_item).border = border#设置边框
###修改行距 列距
# width = 16
# height = 36
print("row:", ws.max_row, "column:", ws.max_column)
for i in range(1, ws.max_row + 1):
ws.row_dimensions[i].height = height
for i in range(1, ws.max_column + 1):
ws.column_dimensions[get_column_letter(i)].width = width
# 写入excel文件 如果path路径的文件不存在那么就会自动创建
workbook.save(path)
print('写入成功')
def addition_data_FJ(n1_min,n1_max,n2_min,n2_max):#加法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
Data.append('%s—%s\n \ / \n ___' % (random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)))
writeData.append(Data)
return writeData
def addition_data(n1_min,n1_max,n2_min,n2_max):#加法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
Data.append('%s+%s=' % (random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)))
writeData.append(Data)
return writeData
def subtraction_data(n1_min,n1_max,n2_min,n2_max):#减法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
a,b=random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)
if a<b:
a,b=b,a
Data.append('%s-%s=' % (a,b))
writeData.append(Data)
return writeData
def subtraction_data_FJ(n1_min,n1_max,n2_min,n2_max):#减法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
a,b=random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)
if a<b:
a,b=b,a
#Data.append('%s—%s\n \ / \n ___' % (random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)))
Data.append('%s\n/ \ \n %s ___' % (a,b))
writeData.append(Data)
return writeData
def addition_subtraction_data(n1_min,n1_max,n2_min,n2_max):#加减法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
foo = ['-', '+']
how = (random.choice(foo))
a, b = random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)
if how == '-':
if a < b:
a, b = b, a
elif how == '+':
a, b =a, b
Data.append('%s%s%s=' % (a,how,b))
writeData.append(Data)
return writeData
def addition_subtraction_data_FJ(n1_min,n1_max,n2_min,n2_max):#加减法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
foo = ['-', '+']
how = (random.choice(foo))
a, b = random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)
if how == '-':
if a < b:
a, b = b, a
Data.append('%s\n/ \ \n %s ___' % (a, b))
elif how == '+':
a, b =a, b
Data.append('%s—%s\n \ / \n ___' % (a, b))
writeData.append(Data)
return writeData
def addition_subtraction_data_TK(n1_min,n1_max,n2_min,n2_max):#加减法_随机横线
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
foo = ['-', '+']
how = (random.choice(foo))
a, b = random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)
if how == '-':
if a < b:
a, b = b, a
c=a-b
elif how == '+':
a, b =a, b
c = a + b
adc_list=[a,b,c]
adc_list[random.choice(range(len(adc_list)))]="__"
a, b, c=adc_list
adb_str=' %s%s%s=%s' % (a,how,b,c)
Data.append(adb_str)
writeData.append(Data)
return writeData
def addition_subtraction_data_TK_FJ(n1_min,n1_max,n2_min,n2_max):#加减法_随机横线
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
foo = ['-', '+']
how = (random.choice(foo))
a, b = random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)
if how == '-':
if a < b:
a, b = b, a
c=a-b
adc_list = [a, b, c]
adc_list[random.choice(range(len(adc_list)))] = "__"
a, b, c = adc_list
Data.append('%s\n/ \ \n %s %s' % (a, b, c))
elif how == '+':
a, b =a, b
c = a + b
adc_list = [a, b, c]
adc_list[random.choice(range(len(adc_list)))] = "__"
a, b, c = adc_list
Data.append('%s—%s\n \ / \n %s' % (a, b, c))
writeData.append(Data)
return writeData
def product(n1_min,n1_max,n2_min,n2_max):#乘法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
Data.append('%sx%s=' % (random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)))
writeData.append(Data)
return writeData
def num_b(n2_min, n2_max):
while True:
b = random.randint(n2_min, n2_max)
if b != 0:
break
return b
def division(n1_min,n1_max,n2_min,n2_max):#除法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
how = '÷'
a,b = random.randint(n1_min,n1_max),num_b(n2_min, n2_max)
a, b = b*a, b
Data.append('%s%s%s=' % (a,how,b))
writeData.append(Data)
return writeData
def product_division(n1_min,n1_max,n2_min,n2_max):#乘除法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
foo = ['x', '÷']
how = (random.choice(foo))
a, b = random.randint(n1_min,n1_max), random.randint(n2_min,n2_max)
if how == '÷':
b = num_b(n2_min, n2_max)
a, b = b*a, b
elif how == 'x':
a, b =a, b
Data.append('%s%s%s=' % (a,how,b))
writeData.append(Data)
return writeData
def addition_subtraction_product_division(n1_min,n1_max,n2_min,n2_max):#加减乘除法
writeData=[]
for i in range(row):
Data=[]
for i in range(line):
foo = ['x', '÷','+','-']
how = (random.choice(foo))
a, b = random.randint(n1_min, n1_max), random.randint(n2_min, n2_max)
if how == '÷':
b=num_b(n2_min, n2_max)
a, b = b*a,b
elif how == 'x':
a, b =a, b
elif how=='-':
if a < b:
a, b = b, a
elif how=='+':
a, b = a, b
Data.append('%s%s%s=' % (a,how,b))
writeData.append(Data)
return writeData
if __name__ == '__main__':
# 数据结构1 path 文件的路径
path = r'F:\python\Calculation\a.xlsx'
# 数据结构1Excel 中sheet 的名字
sheetStr = '数据'
#line,row=(8,25)#6行数据,25列数据,算术题行数
#width,height= (16,36)#算术题行距16,36
#line, row,width, height,horizontal = (8, 25,16,36,'left') # 算术题
line, row,width, height,horizontal = (8, 10,16, 90,'center') # 分解题(后缀带_FJ)
info = []
# 数据结构1数据
writeData = addition_subtraction_data_TK_FJ(0,10,0,10)
# 执行
write_to_excel(path, sheetStr, info, writeData)
#更新:[https://gitee.com/HP_mojin/Calculation](https://gitee.com/HP_mojin/Calculation)
打印设置-窄边框,将工资表调整一页,打印200道题