python输出200道加减乘除法计算题到Excel

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道题
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值