【教学类-06-06】20231118 (55格版)X以内加法、减法、加减混合题

背景需求

1、长期做手工制作,常规管理难以控制

优势:

1、幼儿创作热情高涨,发明的新玩具多

2、互助观摩,进一步模仿、创作作品

3、互动游戏兴趣浓厚,语言交流踊跃,

劣势:

1、纸条碎片多,环境清理慢,小碎纸不容易清理干净。

2、工具(胶水盖、剪刀、记号笔盖)掉在地上,幼儿看不到,没有及时清理(他们都忙着炫耀自己的作品)

3、用纸类学具作品进行交流的过程中,幼儿声音响亮、情绪兴奋,室内噪音大。

4、顽皮男孩容易在教室里追逐打闹,集体空间有限,容易出现安全事故。

2、提供纯书写绘画,少使用胶水剪刀制作的学具

基于以上课堂客观情况,我感觉虽然他们手工制作能力、表达表现能力增强,但如果长此以往,容易出现情绪亢奋、安全隐患(情绪难以自控),所以有必要做一些相对安全的数、美术活动。

3、大班幼儿早已开始加减法练习

安全又能“磨时间”的学具,第一个想到就是X以内加减法

虽然不鼓励提前进行小学化教育,但实际上小学授课速度极快,没有书写、加减法基础,适应阶段会有压力。因此,家长普遍早就对中大班孩子进行数字书写、加减计算的练习活动。

从以往的X以内加减法题目联系中,我感觉”5内加法“就是一个标准版本(21题),可以用雪花片实物进行点数计算。

一些能力超强、练的太多的孩子吵着要20-100之间的加减法。所以高难度的也可以生成几张。

……

因此,我想批量做一些单元格式的X以内计算题

1、包含加法55题、减法55题、加减混合55题

2、5以内、10以内、15以内、20以内(先设计4款)

3、幼儿可以自选、做的快的孩子再选一张。

材料准备:

WORD版(加法、减法、加减混合 都用这个通用模板

1、上一次用的是5*5格子版本,数字比较大,专做5以内21题加法、减法用。有的孩子做题速度块,到处晃悠。

2、这一次做11*5格(1CM高),题量多一点,书写空间小

通用模板

三款代码的位置

(一)1-100以内加法

'''
9以内加法一页两份(共55格)不超过100
时间:2023年11月18日 21:46
作者:阿夏
'''


import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,time

import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn


from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor

# 第一步:制作不重复所有加法、不重复所有减法

# 不重复的数字题
num=int(input('打印几份(必须是双数)\n'))
size=20
height1=12
weight1=5
sum1=int(input('X以内的加法(1-100之间任意数字)9以内题目数量<55,10-100的题目>55,抽取55题\n'))

classroom=input('班级(输入中、大)\n')

# 3以内:10
# 4以内:15
# 5以内:21
# 都小于25格子

for  sum in [sum1]:
# 5以内加法题共21题
    P=[]
    for a in range(sum+1):
        for b in range(sum+1):
            if 0<=a+b<sum+1:         
                # print('{}+{}='.format(a,b))
                P.append('{}+{}='.format(a,b))
            else:
                pass
    print(P)
        # ['0+0=', '0+1=', '0+2=', '0+3=', '0+4=', '0+5=', '1+0=', '1+1=', '1+2=', '1+3=', '1+4=', '2+0=', '2+1=', '2+2=', '2+3=', '3+0=', '3+1=', '3+2=', '4+0=', '4+1=', '5+0=']
        # 加法题生成都是按小到大排列的,不需要sort排序
    print(len(P))    # 21


    # 第一行的班级和项目
    D=[]
    c='{}'.format(classroom)

    if sum <=9:
        title='≤{}非重加法共{}抽{}题'.format(sum,len(P),len(P))
    if sum >9:
        title='≤{}非重加法共{}抽55题'.format(sum,len(P))
    d=['0001','0002']
    # 表格0 表格2的 03 05单元格里写入标题信息c
    D.append(c)
    D.append(title)
    print(D)

    # 制作"单元格"
    bgall=[]
    for bb in d:
        bgall.append(bb)

    for x in range(1,height1):   
        for y in range(0,weight1):            
            s1='{}{}'.format('%02d'%x,'%02d'%y)       # 数字加空格
            bgall.append(s1)   
    print(bgall)        
    print(len(bgall))
    
    # 不同情况下的单元格数量
    if  sum<=9:
        bg=bgall[0:2+len(P)]
        print(bg)
        print(len(bg))
    if sum>9:
        bg=bgall[0:len(bgall)]
        print(bg)
        print(len(bg))

    # ['0003', '0005', '0100', '0101', '0102', '0103', '0104', '0200', '0201', '0202', '0203', '0204', '0300', '0301', '0302', '0303', '0304', '0400', '0401', '0402', '0403', '0404', '0500']




    # 新建一个”装N份word和PDF“的临时文件夹
    imagePath1=r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\零时Word'
    if not os.path.exists(imagePath1):  # 判断存放图片的文件夹是否存在
        os.makedirs(imagePath1)  # 若图片文件夹不存在就创建

    n=int(num/2)
    for z in range(0,n):   #多少份  
        # 标题说明
        
            # 新建word
        doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\01加减法模板一页两份(加减法,大量题目).docx')  
        for j in range(2):

            if sum <=9:
            # D=[]
            # 小于9的题目,要计算一共有几题,写入等量的单元格内, 
                C=random.sample(P,len(P))  
                for cc in C:
                    D.append(cc)
                print(D)
                print(len(D))

            if sum >9:
            # D=[]
            # 大于9的题目,只要抽取55题,多余的写不下, 
                C=random.sample(P,len(bgall))              # 55格
                for cc in C:
                    D.append(cc)
                print(D)
                print(len(D))

        
    #       # 房间模板(第一个表格)要写入的门牌号列表 
            table = doc.tables[j]          # 表0,表2 写标题用的
            # 标题写入3、5单元格  
            for t in range(0,len(bg)):             # 0-5是最下面一行,用来写卡片数字
                pp=int(bg[t][0:2])     # 
                qq=int(bg[t][2:4])
                k=str(D[t])              # 提取list图案列表里面每个图形  t=索引数字
                print(pp,qq,k)

                # 图案符号的字体、大小参数
                run=table.cell(pp,qq).paragraphs[0].add_run(k)    # 在单元格0,0(第1行第1列)输入第0个图图案
                run.font.name = '黑体'#输入时默认华文彩云字体
                # run.font.size = Pt(46)  #输入字体大小默认30号 换行(一页一份大卡片
                run.font.size = Pt(size) #是否加粗
                run.font.color.rgb = RGBColor(200,200,200) #数字小,颜色深0-255
                run.bold=True
                # paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
            
                r = run._element
                r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
                table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT #居中   
    #    
        doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\零时Word\{}.docx'.format('%02d'%(z+1)))#保存为XX学号的电话号码word     

        from docx2pdf import convert
        # docx 文件另存为PDF文件
        inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word/{}.docx".format('%02d'%(z+1))# 要转换的文件:已存在
        outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word/{}.pdf".format('%02d'%(z+1))  # 要生成的文件:不存在
        # 先创建 不存在的 文件
        f1 = open(outputFile, 'w')
        f1.close()
        # 再转换往PDF中写入内容
        convert(inputFile, outputFile)
        
    print('----------第4步:把都有PDF合并为一个打印用PDF------------')
        
    # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    import os
    from PyPDF2 import PdfFileMerger
    target_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word'
    pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    pdf_lst.sort()
    file_merger = PdfFileMerger()
    for pdf in pdf_lst:
        print(pdf)
        file_merger.append(pdf)

    if sum <=9:
        file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/加减法/(打印合集)01加法(一页两份 )55题{}以内加法共{}题抽{}题({}共{}人打印{}张).pdf" .format('%02d'%sum,'%03d'%len(P),'%02d'%len(P),c,num,n))
    if sum >9:
        file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/加减法/(打印合集)01加法(一页两份 )55题{}以内加法共{}题抽{}题({}共{}人打印{}张).pdf".format('%02d'%sum,'%03d'%len(P),'%02d'%(len(bgall)-2),c,num,n))

    file_merger.close()
    # doc.Close()

    # # print('----------第5步:删除临时文件夹------------')    
    import shutil
    shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word') #递归删除文件夹,即:删除非空文件夹





            
            

加法部分生成题目的代码

输入的数字有限定

1、0-9以内加法的不重复题目总数小于55

0以内 1题

1以内 3题

2以内 6题

3以内 10题

4以内 15题

5以内 21题

6以内 28题

7以内 36题

8以内 45题

9以内 55题=55题

------------------------------------------------------------------------------------

10以内 66题>55题

所以9以内要抽取45个单元格+2个标题的格子。

10以上要从大量题目中只抽取55个。 

(1)WORd第一行的标题要不同

(2)抽取的题目适量要不同

(3)抽取的单元格数量要不同

(4)PDF的文件名不同

终端输入

(1)5以内(实际21题,抽取21题)

(2)10以内(实际66题,抽取55题)

---------------------------------------------------------------------------------------------------------------------------------

(二)1-100以内减法

'''
X以内减法一页两份(共55格)不超过100
时间:2023年11月18日 21:46
作者:阿夏
'''


import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,time

import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn


from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor

# 第一步:制作不重复所有减法、不重复所有减法

# 不重复的数字题
num=int(input('打印几份(输入双数)\n'))
size=20
height1=12
weight1=5
sum1=int(input('X以内的减法(1-100之间任意数字)9以内题目数量<55,10-100的题目>55,抽取55题\n'))
classroom=input('班级(输入中 大)\n')

# 3以内:10
# 4以内:15
# 5以内:21
# 都小于25格子

for  sum in [sum1]:
    # 5以内减法题共21题
    S=[]
    for a in range(sum+1):
        for b in range(sum+1):
            if 0<=a-b<sum+1:              
                # print('{}+{}='.format(a,b))
                S.append('{}-{}='.format(a,b))
            if 0<=b-a<sum+1:  
                S.append('{}-{}='.format(b,a))         
    # print(S)
    S=list(set(S))    # 去除重复
    S.sort()     # 排序
    print(S)    
    # ['0-0=', '1-0=', '1-1=', '2-0=', '2-1=', '2-2=', '3-0=', '3-1=', '3-2=', '3-3=', '4-0=', '4-1=', '4-2=', '4-3=', '4-4=', '5-0=', '5-1=', '5-2=', '5-3=', '5-4=', '5-5=']
    print(len(S))     # 21
    # ['0+0=', '0+1=', '0+2=', '0+3=', '0+4=', '0+5=', '1+0=', '1+1=', '1+2=', '1+3=', '1+4=', '2+0=', '2+1=', '2+2=', '2+3=', '3+0=', '3+1=', '3+2=', '4+0=', '4+1=', '5+0=']


    # 第一行的班级和项目
    D=[]
    c='{}'.format(classroom)

    if sum <=9:
        title='≤{}非重减法共{}抽{}题'.format(sum,len(S),len(S))
    if sum >9:
        title='≤{}非重减法共{}抽55题'.format(sum,len(S))
    d=['0001','0002']
    # 表格0 表格2的 03 05单元格里写入标题信息c
    D.append(c)
    D.append(title)
    print(D)

    # 制作"单元格"
    bgall=[]
    for bb in d:
        bgall.append(bb)

    for x in range(1,height1):   
        for y in range(0,weight1):            
            s1='{}{}'.format('%02d'%x,'%02d'%y)       # 数字加空格
            bgall.append(s1)   
    print(bgall)        
    print(len(bgall))
    if  sum<=9:
        bg=bgall[0:2+len(S)]
        print(bg)
        print(len(bg))
    if sum>9:
        bg=bgall[0:len(bgall)]
        print(bg)
        print(len(bg))

    # ['0003', '0005', '0100', '0101', '0102', '0103', '0104', '0200', '0201', '0202', '0203', '0204', '0300', '0301', '0302', '0303', '0304', '0400', '0401', '0402', '0403', '0404', '0500']




    # 新建一个”装N份word和PDF“的临时文件夹
    imagePath1=r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\零时Word'
    if not os.path.exists(imagePath1):  # 判断存放图片的文件夹是否存在
        os.makedirs(imagePath1)  # 若图片文件夹不存在就创建

    n=int(num/2)
    for z in range(0,n):   #多少份  
        # 标题说明
        
            # 新建word
        doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\01加减法模板一页两份(加减法,大量题目).docx')  
        for j in range(2):

            if sum <=9:
            # D=[]
            # 索引数字 随机抽取21个数字 
                C=random.sample(S,len(S))  
                for cc in C:
                    D.append(cc)
                print(D)
                print(len(D))

            if sum >9:
            # D=[]
            # 索引数字 随机抽取21个数字 
                C=random.sample(S,len(bgall))              # 55格
                for cc in C:
                    D.append(cc)
                print(D)
                print(len(D))

        
    #       # 房间模板(第一个表格)要写入的门牌号列表 
            table = doc.tables[j]          # 表0,表2 写标题用的
            # 标题写入3、5单元格  
            for t in range(0,len(bg)):             # 0-5是最下面一行,用来写卡片数字
                pp=int(bg[t][0:2])     # 
                qq=int(bg[t][2:4])
                k=str(D[t])              # 提取list图案列表里面每个图形  t=索引数字
                print(pp,qq,k)

                # 图案符号的字体、大小参数
                run=table.cell(pp,qq).paragraphs[0].add_run(k)    # 在单元格0,0(第1行第1列)输入第0个图图案
                run.font.name = '黑体'#输入时默认华文彩云字体
                # run.font.size = Pt(46)  #输入字体大小默认30号 换行(一页一份大卡片
                run.font.size = Pt(size) #是否加粗
                run.font.color.rgb = RGBColor(200,200,200) #数字小,颜色深0-255
                run.bold=True
                # paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
            
                r = run._element
                r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
                table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT #居中   
    #    
        doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\零时Word\{}.docx'.format('%02d'%(z+1)))#保存为XX学号的电话号码word     

        from docx2pdf import convert
        # docx 文件另存为PDF文件
        inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word/{}.docx".format('%02d'%(z+1))# 要转换的文件:已存在
        outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word/{}.pdf".format('%02d'%(z+1))  # 要生成的文件:不存在
        # 先创建 不存在的 文件
        f1 = open(outputFile, 'w')
        f1.close()
        # 再转换往PDF中写入内容
        convert(inputFile, outputFile)
        
    print('----------第4步:把都有PDF合并为一个打印用PDF------------')
        
    # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    import os
    from PyPDF2 import PdfFileMerger
    target_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word'
    pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    pdf_lst.sort()
    file_merger = PdfFileMerger()
    for pdf in pdf_lst:
        print(pdf)
        file_merger.append(pdf)

    if sum <=9:
        file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/加减法/(打印合集)01减法(一页两份 )55题{}以内减法共{}题抽{}题({}班共{}人打印{}张).pdf".format('%02d'%sum,'%03d'%len(S),'%02d'%len(S),c,num,n))
    if sum >9:
        file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/加减法/(打印合集)01减法(一页两份 )55题{}以内减法共{}题抽{}题({}班共{}人打印{}张).pdf".format('%02d'%sum,'%03d'%len(S),'%02d'%(len(bgall)-2),c,num,n))


    file_merger.close()
    # doc.Close()

    # # print('----------第5步:删除临时文件夹------------')    
    import shutil
    shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word') #递归删除文件夹,即:删除非空文件夹





    
    

输入的数字有限定

1、0-9以内减法的不重复题目总数小于55(与加法相同)

0以内 1题

1以内 3题

2以内 6题

3以内 10题

4以内 15题

5以内 21题

6以内 28题

7以内 36题

8以内 45题

9以内 55题=55题

------------------------------------------------------------------------------------

10以内 66题>55题

所以9以内要抽取45个单元格+2个标题的格子。

10以上要从大量题目中只抽取55个。 

减法的代码与加法形同,只有减法遍历部分不同,其他都一样。

 终端输入

(1)5以内(实际21题,抽取21题)

(2)10以内(实际66题,抽取55题)

---------------------------------------------------------------------------------------------------------------------------------

(三)1-100以内加减混合题

1、加法题加减法题总数<=55,所有加法题减法题都写入55格子内(有多余空格)

2、加法题加减法题总数>55,所有加法题减法题的列表里面随机抽取55题(可能加法多,可能减法多,不确定)

'''
X以内 加减混合法一页两份(共55格)不超过100
时间:2023年11月18日 21:46
作者:阿夏
'''


import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,time

import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn


from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor

# 第一步:制作不重复所有减法、不重复所有减法

# 不重复的数字题
num=int(input('打印几份(输入双数)\n'))
size=20
height1=12
weight1=5
# sum=int(input('X以内的(1-6 6=42<55题7=56题》55)\n'))
classroom=input('班级(输入中 大)\n')

# 3以内:10
# 4以内:15
# 5以内:21
# 都小于25格子
for  sum in [5,10,15,20]:
    # 加法
    P=[]
    for a in range(sum+1):
        for b in range(sum+1):
            if 0<=a+b<sum+1:         
                # print('{}+{}='.format(a,b))
                P.append('{}+{}='.format(a,b))
            else:
                pass
    print(P)
        # ['0+0=', '0+1=', '0+2=', '0+3=', '0+4=', '0+5=', '1+0=', '1+1=', '1+2=', '1+3=', '1+4=', '2+0=', '2+1=', '2+2=', '2+3=', '3+0=', '3+1=', '3+2=', '4+0=', '4+1=', '5+0=']
        # 加法题生成都是按小到大排列的,不需要sort排序
    print(len(P))    # 21


    # 5以内减法题共21题
    S=[]
    for a in range(sum+1):
        for b in range(sum+1):
            if 0<=a-b<sum+1:              
                # print('{}+{}='.format(a,b))
                S.append('{}-{}='.format(a,b))
            if 0<=b-a<sum+1:  
                S.append('{}-{}='.format(b,a))         
    # print(S)
    S=list(set(S))    # 去除重复
    S.sort()     # 排序
    print(S)    
    # ['0-0=', '1-0=', '1-1=', '2-0=', '2-1=', '2-2=', '3-0=', '3-1=', '3-2=', '3-3=', '4-0=', '4-1=', '4-2=', '4-3=', '4-4=', '5-0=', '5-1=', '5-2=', '5-3=', '5-4=', '5-5=']
    print(len(S))     # 21
    # ['0+0=', '0+1=', '0+2=', '0+3=', '0+4=', '0+5=', '1+0=', '1+1=', '1+2=', '1+3=', '1+4=', '2+0=', '2+1=', '2+2=', '2+3=', '3+0=', '3+1=', '3+2=', '4+0=', '4+1=', '5+0=']

    # 加减混合列表
    ALL=[]
    for a1 in P:
        ALL.append(a1)
    for a2 in S:
        ALL.append(a2)
    print(ALL)


    # 第一行的班级和项目
    D=[]
    c='{}'.format(classroom)

    # 6以内的“加法+减法”总计题目数不超过55题,
    if sum <=6:
        title='≤{}非重加减法{}题抽{}'.format(sum,len(ALL),len(ALL))
    # 7以上的“加法+减法”总计题目数不超过55题,只要抽55题
    if sum >6:
        title='≤{}非重加减法{}题抽55'.format(sum,len(ALL))
    d=['0001','0002']
    # 表格0 表格2的 03 05单元格里写入标题信息c
    D.append(c)
    D.append(title)
    print(D)

    # 制作"单元格"
    bgall=[]
    for bb in d:
        bgall.append(bb)

    for x in range(1,height1):   
        for y in range(0,weight1):            
            s1='{}{}'.format('%02d'%x,'%02d'%y)       # 数字加空格
            bgall.append(s1)   
    print(bgall)        
    print(len(bgall))


    # bg=bgall
    if  sum<=6:
        bg=bgall[0:2+len(ALL)]
        # 小于55格,如只有21格
        print(bg)
        print(len(bg))
    if sum>6:
        bg=bgall[0:len(bgall)]
        # 大于55格,只取55格
        print(bg)
        print(len(bg))

    # ['0003', '0005', '0100', '0101', '0102', '0103', '0104', '0200', '0201', '0202', '0203', '0204', '0300', '0301', '0302', '0303', '0304', '0400', '0401', '0402', '0403', '0404', '0500']




    # 新建一个”装N份word和PDF“的临时文件夹
    imagePath1=r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\零时Word'
    if not os.path.exists(imagePath1):  # 判断存放图片的文件夹是否存在
        os.makedirs(imagePath1)  # 若图片文件夹不存在就创建

    n=int(num/2)
    for z in range(0,n):   #多少份  
        # 标题说明
        
            # 新建word
        doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\01加减法模板一页两份(加减法,大量题目).docx')  
        for j in range(2):

            if sum <=6:
            # D=[]
            # 索引数字 随机抽取21个数字 
                C=random.sample(ALL,int(len(ALL)))              # 全抽,打乱,不重复
                for cc in C:
                    D.append(cc)
                print(D)
                print(len(D))

            if sum >6:
            # D=[]
            # 索引数字 随机抽取21个数字 
                C=random.sample(ALL,len(bgall))              # 55格
                for cc in C:
                    D.append(cc)
                print(D)
                print(len(D))

        
    #       # 房间模板(第一个表格)要写入的门牌号列表 
            table = doc.tables[j]          # 表0,表2 写标题用的
            # 标题写入3、5单元格  
            for t in range(0,len(bg)):             # 0-5是最下面一行,用来写卡片数字
                pp=int(bg[t][0:2])     # 
                qq=int(bg[t][2:4])
                k=str(D[t])              # 提取list图案列表里面每个图形  t=索引数字
                print(pp,qq,k)

                # 图案符号的字体、大小参数
                run=table.cell(pp,qq).paragraphs[0].add_run(k)    # 在单元格0,0(第1行第1列)输入第0个图图案
                run.font.name = '黑体'#输入时默认华文彩云字体
                # run.font.size = Pt(46)  #输入字体大小默认30号 换行(一页一份大卡片
                run.font.size = Pt(size) #是否加粗
                run.font.color.rgb = RGBColor(200,200,200) #数字小,颜色深0-255
                run.bold=True
                # paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
            
                r = run._element
                r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
                table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT #居中   
    #    
        doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\零时Word\{}.docx'.format('%02d'%(z+1)))#保存为XX学号的电话号码word     

        from docx2pdf import convert
        # docx 文件另存为PDF文件
        inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word/{}.docx".format('%02d'%(z+1))# 要转换的文件:已存在
        outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word/{}.pdf".format('%02d'%(z+1))  # 要生成的文件:不存在
        # 先创建 不存在的 文件
        f1 = open(outputFile, 'w')
        f1.close()
        # 再转换往PDF中写入内容
        convert(inputFile, outputFile)
        
    print('----------第4步:把都有PDF合并为一个打印用PDF------------')
        
    # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    import os
    from PyPDF2 import PdfFileMerger
    target_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word'
    pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    pdf_lst.sort()
    file_merger = PdfFileMerger()
    for pdf in pdf_lst:
        print(pdf)
        file_merger.append(pdf)

    if sum <=6:
        file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/加减法/(打印合集)03加减法(一页两份 )55题{}以内加减混合法共{}题抽{}题({}共{}人打印{}张).pdf".format('%02d'%sum,'%03d'%len(ALL),'%02d'%len(ALL),c,num,n))
    if sum >6:
        file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/加减法/(打印合集)03加减法(一页两份 )55题{}以内加减混合法共{}题抽{}题({}共{}人打印{}张).pdf".format('%02d'%sum,'%03d'%len(ALL),'%02d'%(len(bgall)-2),c,num,n))

    file_merger.close()
    # doc.Close()

    # # print('----------第5步:删除临时文件夹------------')    
    import shutil
    shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/加减法/零时Word') #递归删除文件夹,即:删除非空文件夹





        
        

输入的数字有限定

1、0-6以内 加法+减法 合计题目总数小于55

0以内 1题  2题

1以内 3题  6题

2以内 6题  12题

3以内 10题  20题

4以内 15题  30

5以内 21题  42题

------------------------------------------------------------------------------------

6以内 28题  56题>55题

7以内 36题  72

所以5以内要抽取45个单元格+2个标题的格子。

6以上要从大量题目中只抽取55个。 

减法的代码与加法形同,只有减法遍历部分不同,其他都一样。

 终端输入

(1)5以内(实际21题,抽取21题)

(2)10以内(实际66题,抽取55题)

---------------------------------------------------------------------------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/165985.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入流行推荐引擎3:Spotify音乐推荐系统

深入流行推荐引擎3&#xff1a;Spotify音乐推荐系统 Spotify音乐推荐系统通过矩阵分解发现每周&#xff08;Discover Weekly via Matrix Factorization&#xff09;Discover Weekly 如何运作&#xff1f;&#xff08;How Discover Weekly Works?&#xff09;矩阵分解&#xff…

【IPC】 共享内存

1、概述 共享内存允许两个或者多个进程共享给定的存储区域。 共享内存的特点 1、 共享内存是进程间共享数据的一种最快的方法。 一个进程向共享的内存区域写入了数据&#xff0c;共享这个内存区域的所有进程就可以立刻看到 其中的内容。 2、使用共享内存要注意的是多个进程…

使用持久卷部署 WordPress 和 MySQL

&#x1f5d3;️实验环境 OS名称Microsoft Windows 11 家庭中文版系统类型x64-based PCDocker版本Docker version 24.0.6, build ed223bcminikube版本v1.32.0 &#x1f587;️创建 kustomization.yaml 你可以通过 kustomization.yaml 中的生成器创建一个 Secret存储密码或密…

Android问题笔记四十六:解决open failed: EACCES (Permission denied) 问题

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC &#x1f449;关于作者 专…

Jmeter性能实战之分布式压测

JMeter分布式执行原理 1、JMeter分布式测试时&#xff0c;选择其中一台作为调度机(master)&#xff0c;其它机器作为执行机(slave)。 2、执行时&#xff0c;master会把脚本发送到每台slave上&#xff0c;slave 拿到脚本后就开始执行&#xff0c;slave执行时不需要启动GUI&…

深度学习YOLO抽烟行为检测 - python opencv 计算机竞赛

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习YOLO抽烟行为检测 该项目较为新颖&#xff0c;适合作为竞赛课…

Parity Game——种类并查集、权值并查集、离散化

题目描述 思路 怎么得到这个序列中每一段的关系&#xff1f; 我们可以把这个只包含0和1的序列看作一个数组&#xff0c;0表示当前位置为0&#xff0c;1表示当前位置为1&#xff0c;利用前缀和的性质可以知道某一段中所包含的1的数量sum1 a[r] - a[l-1] 如果sum1为偶数&…

Rust开发——切片(slice)类型

1、什么是切片 在 Rust 中&#xff0c;切片&#xff08;slice&#xff09;是一种基本类型和序列类型。在 Rust 官方文档中&#xff0c;切片被定义为“对连续序列的动态大小视图”。 但在rust的Github 源码中切片被定义如下&#xff1a; 切片是对一块内存的视图&#xff0c;表…

如何隐藏Selenium特征实现自动化网页采集

Selenium是一个流行的自动化网页测试工具&#xff0c;可以通过模拟用户在Chrome浏览器中的操作来完成网站的测试。然而&#xff0c;有些网站会检测浏览器是否由Selenium驱动&#xff0c;如果是&#xff0c;就会返回错误的结果或拒绝访问。为了避免这种情况&#xff0c;我们需要…

多线程编程

1 线程的使用 1.1 为什么要使用多线程 在编写代码时&#xff0c;是否会遇到以下的场景会感觉到难以下手&#xff1f; 要做 2 件事&#xff0c;一件需要阻塞等待&#xff0c;另一件需要实时进行。例如播放器&#xff1a;一边在屏幕上播放视频&#xff0c;一边在等待用户的按…

中间件安全:Apache 目录穿透.(CVE-2021-41773)

中间件安全&#xff1a;Apache 目录穿透.&#xff08;CVE-2021-41773&#xff09; Apache 的 2.4.49、2.4.50 版本 对路径规范化所做的更改中存在一个路径穿越漏洞&#xff0c;攻击者可利用该漏洞读取到Web目录外的其他文件&#xff0c;如系统配置文件、网站源码等&#xff0c…

Polygon zkEVM协议治理、升级及其流程

1. 引言 随着Polygon社区开发者和内部团队的测试深入&#xff0c;当前版本的Polygon zkEVM不可避免地需更新和某些升级。 为激励开发者对Polygon zkEVM做battle-test&#xff0c;已启动了bug-bounty&#xff1a; Rewards by Threat Level 由于zk-Rollup生态系统还处于萌芽阶…

算法设计与分析复习--贪心(二)

文章目录 上一篇哈夫曼编码单源最短路最小生成树Kruskal算法Prim算法 多机调度问题下一篇 上一篇 算法设计与分析复习–贪心&#xff08;一&#xff09; 哈夫曼编码 产生这种前缀码的方式称为哈夫曼树 哈夫曼树相关习题AcWing 148. 合并果子 #include <iostream> #inc…

LDO线性稳压器要不要并联二极管?

昨天介绍过了LDO是什么东西&#xff0c;那么对于它的应用场景是怎么的呢&#xff1f;LDO要不要并联二极管呢&#xff1f; 一般来说&#xff0c;LDO是不需要并联二极管的。 看下图第一个是典型电路&#xff0c;第二个是带可调节电压功能的LDO典型电路&#xff0c;从图里就可以…

设计模式-组合模式-笔记

“数据结构”模式 常常有一些组件在内部具有特定的数据结构&#xff0c;如果让客户程序依赖这些特定数据结构&#xff0c;将极大地破坏组件的复用。这时候&#xff0c;将这些特定数据结构封装在内部&#xff0c;在外部提供统一的接口&#xff0c;来实现与特定数据结构无关的访…

一起Talk Android吧(第五百五十四回:分享一个Retorfit使用错误的案例)

文章目录 1. 案例场景2. 案例现象3. 原因分析和解决方案3.1 原因分析3.2 解决方案4. 经验总结各位看官们大家好,上一回中咱们说的例子是"解析Retrofit返回的数据",本章回中将分享一个 Retrofit使用错误的案例。闲话休提,言归正转,让我们一起Talk Android吧! 1. …

三层交换机实现不同VLAN间通讯

默认时&#xff0c;同一个VLAN中的主机才能彼此通信&#xff0c;那么交换机上的VLAN用户之间如何通信&#xff1f; 要实现VLAN之间用户的通信&#xff0c;就必须借助路由器或三层交换机来完成。 下面以三层交换机为例子说明&#xff1a; 注意&#xff1a; 1.交换机与三层交换…

HWS-CTF-第七期山大站-inverse

文章目录 inversemainworkread_intread_n 思路onegadget exp 第一次真正意义上独立在比赛中做出题目来了&#xff0c;距离真正意义接触CTF-PWN差不多正好两个月。但由于不知道靶场要自己开而且端口每次自己打开会改&#xff0c;交flag稍微晚了些&#xff08;我太菜了&#xff0…

Java中锁的深入理解

目录 对象头的理解 Monitor&#xff08;锁&#xff09; 锁类型 偏向锁 偏向锁的优化机制 轻量级锁 重量级锁 对象头的理解 在32位Java虚拟机中普通对象的对象头是占用8个字节&#xff0c;其中4个字节为Mark Word。用来存储对象的哈希值&#xff0c;对象创建后在JVM中的…

【顺序表的实现】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 数据结构相关概念 1、什么是数据结构 2、为什么需要数据结构&#xff1f; 2、顺序表 1、顺序表的概念及结构 1.1 线性表 2、顺序表分类 3、动态顺序表的实现 总…