• 【教学类-07-04】20221113《破译电话号码-加减法版+自制(PDF打印)》(大班主题《我要上小学》)


     效果图

     背景需求:

          前期做了一套破译电话号码(图片版)

    【教学类-07-03】20221106《破译电话号码-图形版(2类)+自制(PDF打印)》(大班主题《我要上小学》)_print((phone)==int(phonestr)) b print(str(phone)==-CSDN博客文章浏览阅读406次。【教学类-07-03】20221106《破译电话号码-图形版(2类)+自制(PDF打印)》(大班主题《我要上小学》)_print((phone)==int(phonestr)) b print(str(phone)==phonestr) c print(id(phonehttps://blog.csdn.net/reasonsummer/article/details/127714821

               其实大班教学参考书上的破译电话号码是“破解加减法数学题”,因此我希望把图形替换成“10以内加法题、10以内减法题”.

    材料准备:

    路径:r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码、

      家长电话号码.xlsx

    破译电话号码模板.docx

    页边距 上下左右1CM,版式:横向

      py代码:放在任意位置,不影响运行

    代码设计——有学号和班级

    1. '''
    2. 作者:阿夏
    3. 时间:2022年11月13日 破译电话号码(加减法版-有学号和班级 直接导入word)
    4. '''
    5. import openpyxl
    6. from docx import Document
    7. from docx.shared import Pt
    8. from docx.shared import RGBColor
    9. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    10. from docx.oxml.ns import qn
    11. import os,random
    12. classroom=input('班级名称(如大7)\n')
    13. m=int(input('X以内(10以内)\n'))
    14. # h=int(input('excle一共几行(32人)\n'))
    15. print('----------第2步:新建一个临时文件夹------------')
    16. # 新建一个”装N份word和PDF“的文件夹
    17. os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word')
    18. print('------------读取excle表单--------------')
    19. wb = openpyxl.load_workbook(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\家长电话号码.xlsx')# wb=用openpyxl打开存有号码的ExcelEx
    20. phone = wb.active #phone=获取wb里面的数据
    21. print('------------读取 爸爸的手机号加减法--------------')
    22. father=[]
    23. p1=[]
    24. for i1 in list(phone.columns)[4]:# 第3列是爸爸的手机号
    25. if i1.value!= 'Phonenum1':# 如果电话号码的值不等于'Phonenum1 不要第一行C1
    26. phonestr1 = str(i1.value)# 电话字符串 = 第二列的数字的值的字符串形式
    27. p1.append(phonestr1)
    28. # print(p1)# ['12345678910','0987654321',……]
    29. # print(len(p1))#共32个
    30. jjf1=[]
    31. d1=[]
    32. for o1 in p1: # 从['12345678910','0987654321'',……]提取单个12345678910 0987654321'
    33. # print(o1)
    34. for v1 in o1: #从单个12345678910 提取 1 2 3 4 5 6 7 8 9 1 0(竖排)
    35. # print(v)
    36. d1.append(v1)
    37. # print(d1) # 把"1 2 3 4 5 6 7 8 9 1 0"变成['1', '2', '3', '4', '5', '6', '7', '8', '9','1','0','0','9'…… 32*11个号码都在一起]
    38. for k1 in d1: #从['1', '2', '3', '4', '5', '6', '7', '8', '9','1','0']逐一取出k
    39. jjf1.clear() # 第一个数字1有8个加减法(一组,)把前面的清除后,才开始重新计算第二个数字5的6个加减法,
    40. for x in range(0,m):
    41. for y in range(0,m):
    42. if x+y==int(k1): # 加法题
    43. c1='{}+{}= '.format(x,y)
    44. jjf1.append(c1)
    45. if x-y==int(k1) and x>=y: # 减法题
    46. c1='{}-{}= '.format(x,y)
    47. jjf1.append(c1)
    48. # print(jjf)
    49. a1=random.choice(jjf1)# 从等于3的11道"加减法"题目中随机抽取1题
    50. # print(a) mo
    51. father.append(a1)
    52. print(father)
    53. print('------------读取 妈妈的手机号加减法--------------')
    54. mother=[]
    55. p2=[]
    56. for i2 in list(phone.columns)[6]:# 第3列是爸爸的手机号
    57. if i2.value!= 'Phonenum2':# 如果电话号码的值不等于'Phonenum1 不要第一行C1
    58. phonestr2= str(i2.value)# 电话字符串 = 第二列的数字的值的字符串形式
    59. p2.append(phonestr2)
    60. print(p2)# ['12345678910','0987654321',……]
    61. # print(len(p2))#共32个
    62. jjf2=[]
    63. d2=[]
    64. for o2 in p2: # 从['12345678910','0987654321'',……]提取单个12345678910 0987654321'
    65. # print(o2)
    66. for v2 in o2: #从单个12345678910 提取 1 2 3 4 5 6 7 8 9 1 0(竖排)
    67. # print(v2)
    68. d2.append(v2)
    69. # print(d) # 把"1 2 3 4 5 6 7 8 9 1 0"变成['1', '2', '3', '4', '5', '6', '7', '8', '9','1','0','0','9'…… 32*11个号码都在一起]
    70. for k2 in d2: #从['1', '2', '3', '4', '5', '6', '7', '8', '9','1','0']逐一取出k
    71. jjf2.clear() # 第一个数字1有8个加减法(一组,)把前面的清除后,才开始重新计算第二个数字5的6个加减法,
    72. for x in range(0,m):
    73. for y in range(0,m):
    74. if x+y==int(k2): # 加法题
    75. c2='{}+{}= '.format(x,y)
    76. jjf2.append(c2)
    77. if x-y==int(k2) and x>=y: # 减法题
    78. c2='{}-{}= '.format(x,y)
    79. jjf2.append(c2)
    80. # print(jjf2)
    81. a2=random.choice(jjf2)# 从等于3的11道"加减法"题目中随机抽取1题
    82. # print(a2) mo
    83. mother.append(a2)
    84. print(mother)
    85. print('------------ 爸爸的手机号拆开成11个一组的列表--------------')
    86. father_all=[]
    87. for i in range(0,int(len(father)/11)):
    88. b=father[i*11:i*11+11]
    89. father_all.append(b)
    90. print(father_all)
    91. print('------------ 妈妈的手机号拆开成11个一组的列表--------------')
    92. mother_all=[]
    93. for i in range(0,int(len(mother)/11)):
    94. b=mother[i*11:i*11+11]
    95. mother_all.append(b)
    96. print(mother_all)
    97. print('------------读取 学号或者姓名--------------')
    98. N=[]
    99. for i in list(phone.columns)[0]:# 学号-0 姓名1
    100. phonestr = str(i.value)# 电话字符串 = 第二列的数字的值的字符串形式
    101. N.append(phonestr)
    102. print(N)# ['N', '1', '11', '24']
    103. print('------------读取 班级--------------')
    104. C=[]
    105. for i in list(phone.columns)[1]:# 第3列是爸爸的手机号
    106. phonestr = str(i.value)# 电话字符串 = 第二列的数字的值的字符串形式
    107. C.append(phonestr)
    108. print(C)#['CLASS', '大七班', '大七班', '大七班']
    109. print('------------ 数据导入word,字体设置--------------')
    110. from docxtpl import DocxTemplate
    111. import pandas as pd
    112. from docx2pdf import convert
    113. from docx.shared import RGBColor
    114. for y in range(0,int(len(father)/11)):
    115. doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\破译电话号码模板(加减法).docx')
    116. wb = pd.read_excel(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\家长电话号码.xlsx')
    117. table = doc.tables[0]
    118. print('------------学号\班级写入,字体设置--------------')
    119. n=N[y+1]
    120. run=table.cell(0,6).paragraphs[0].add_run(n) # 这里的可以代表学号或者名字,把上面连接的数字改掉 姓名02 学号06 班级08
    121. run.font.name = '黑体'#输入时默认华文琥珀字体
    122. run.font.color.rgb = RGBColor(220,220,220) #设置颜色浅灰
    123. run.font.size = Pt(50) #加减法题 输入字体大小默认60
    124. r = run._element
    125. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    126. table.cell(0,6).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    127. c=C[y+1]
    128. run=table.cell(0,8).paragraphs[0].add_run(c) # 班级08
    129. run.font.name = '黑体'#输入时默认华文琥珀字体
    130. run.font.color.rgb = RGBColor(220,220,220) #设置颜色浅灰
    131. run.font.size = Pt(50) #输入字体大小默认30号
    132. r = run._element
    133. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    134. table.cell(0,8).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    135. for nn in range(0,11):
    136. print('------------ 爸爸的手机号写入不同的word,字体设置--------------')
    137. f=father_all[y][nn]
    138. print(f)
    139. run=table.cell(2,nn).paragraphs[0].add_run(f) # 在第该表格3行1列的单元格内输入“xxxx”
    140. run.font.name = '黑体'#输入时默认华文琥珀字体
    141. run.font.size = Pt(18) #输入字体大小默认30号
    142. r = run._element
    143. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    144. table.cell(2,nn).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    145. print('------------ 妈妈的手机号写入不g同的word,字体设置--------------')
    146. g=mother_all[y][nn]
    147. print(g)
    148. run=table.cell(5,nn).paragraphs[0].add_run(g) # 在第该表格3行1列的单元格内输入“xxxx”
    149. run.font.name = '黑体'#输入时默认华文琥珀字体
    150. run.font.size = Pt(18) #输入字体大小默认30号
    151. r = run._element
    152. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    153. table.cell(5,nn).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    154. doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word\{}.docx'.format('%02d'%(y+1)))#保存为XX学号的电话号码word
    155. # docx 文件另存为PDF文件
    156. inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word\{}.docx".format('%02d'%(y+1)) # 要转换的文件:已存在
    157. outputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word\{}.pdf".format('%02d'%(y+1)) # 要生成的文件:不存在
    158. # 先创建 不存在的 文件
    159. f1 = open(outputFile, 'w')
    160. f1.close()
    161. # 再转换往PDF中写入内容
    162. convert(inputFile, outputFile)
    163. print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    164. # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    165. import os
    166. from PyPDF2 import PdfFileMerger
    167. target_path = r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word"
    168. pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    169. pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    170. pdf_lst.sort()
    171. file_merger = PdfFileMerger()
    172. for pdf in pdf_lst:
    173. print(pdf)
    174. file_merger.append(pdf)
    175. file_merger.write(r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\(打印合集)破译电话号码-加减法版-学号和班级({}班-{}份).pdf".format(classroom,int(len(father)/11)))
    176. file_merger.close()
    177. # doc.Close()
    178. print('----------第5步:删除临时文件夹------------')
    179. import shutil
    180. shutil.rmtree(r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word") #递归删除文件夹,即:删除非空文件夹

    终端运行:

     

     

     

      

    重点说明:

    如何根据电话号码的每一个数字倒推出随机加减法题目

    以下是我预先写的一个测试代码——宝藏盒密码

    1、随机生成宝藏盒的密码(6个数字)

    2、如果密码是123456

    3、把所有答案等于1的加法、减法题都写在一个列表里。

    3、把所有答案等于2的加法、减法题都写在一个列表里。

    ……

    4、在所有答案等于1的列表题目中,随机抽取1题,写入最后的汇总列表。

    4、在所有答案等于2的列表题目中,随机抽取1题,写入最后的汇总列表。

    5、获得“答案等于123456”的6道加减法混合题目

    1. '''阿夏
    2. 2022年11月12日
    3. 随机6位数密码 倒推 加减法题目
    4. '''
    5. import random,re
    6. n=int(input('输入几位密码(6位密码?)\n'))
    7. m=int(input('X以内(10以内)'))
    8. # 随机生成4位密码
    9. key=[]
    10. for k in range(0,n):
    11. j=random.randint(0,n)
    12. key.append(j)
    13. print(key) # [3, 3, 0, 4, 1, 1]
    14. sin_null=re.sub(r'[],\[]', '', str(key))# 纯6位密码(中间有空格) 3 3 0 4 1 1
    15. sin=sin_null.replace(" ", "") # 纯6位密码(中间无空格) 330411
    16. # print(sin_null,sin)
    17. tm=[] # 题目
    18. for i in range(0,len(key)): # 索引数字
    19. sz=key[i] # 提取6位密码的每个数字
    20. jjf=[] # 加减法题目
    21. for x in range(0,m):
    22. for y in range(0,m):
    23. if x+y==sz: # 加法题
    24. c='{}+{}= '.format(x,y)
    25. jjf.append(c)
    26. if x-y==sz and x>=y: # 减法题
    27. c='{}-{}= '.format(x,y)
    28. jjf.append(c)
    29. print(jjf)
    30. # 例:生成答案等于3 的所有的加减法题['0+3= ', '1+2= ', '2+1= ', '3+0= ', '3-0= ', '4-1= ', '5-2= ', '6-3= ', '7-4= ', '8-5= ', '9-6= ']
    31. a=random.choice(jjf)# 从等于3的11道"加减法"题目['0+3= ', '1+2= ', '2+1= ', '3+0= ', '3-0= ', '4-1= ', '5-2= ', '6-3= ', '7-4= ', '8-5= ', '9-6= ']中随机抽取1题
    32. # print(a)
    33. tm.append(a)
    34. # 6个数字、6个列表里分别抽取1题添加到题目列表中,['4-1= ', '6-3= ', '0+0= ', '6-2= ', '0+1= ', '2-1= ']
    35. print(tm)# 打印题目

    重点:EXCEL提取号码,写入列表。两次提取列表,把单个数字变成字符串。所有答案符合的加法题、减法题都写出来。从中抽取1个,一起合并。

     

     图案再展示

     有些孩子只有1个手机号码(幼儿签到刷卡,家长必须绑一个手机号)所以我把这唯一的号码复制到第二个号码中。正好可以验证同样的数字号码,生成的加减法题目是不是也不同(随机抽题目)

     可以看到,写出来的数字是一样的,但是加减法题目不同

    感悟:

    1、层次性学具——破译电话号可以用多种“符号图形”、“加减法题目”、“自行绘画”来替代

    2、答案(数字)倒推题目(加减法)——可以让更多随机数字被可以应用更多的题型中(破解密码箱、色块涂色等)

    附:

    本次教学用的代码:(有名字和班级,无学号)

    1. '''
    2. 作者:阿夏
    3. 时间:2022年11月5日 破译电话号码-图形版-名字和班级(不需要分列,直接导入word)
    4. '''
    5. import openpyxl
    6. from docx import Document
    7. from docx.shared import Pt
    8. from docx.shared import RGBColor
    9. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    10. from docx.oxml.ns import qn
    11. import os
    12. classroom=input('班级名称(如大1)\n')
    13. print('----------第2步:新建一个临时文件夹------------')
    14. # 新建一个”装N份word和PDF“的文件夹
    15. os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word')
    16. print('------------读取excle表单--------------')
    17. wb = openpyxl.load_workbook(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\家长电话号码.xlsx')# wb=用openpyxl打开存有号码的ExcelEx
    18. phone = wb.active #phone=获取wb里面的数据
    19. print('------------读取 爸爸的手机号--------------')
    20. symbol_1=['●','●','●', '●', '●', '●','●', '●','●','●','●']
    21. father=[]
    22. for i in list(phone.columns)[4]:# 第3列是爸爸的手机号
    23. phonestr = str(i.value)# 电话字符串 = 第二列的数字的值的字符串形式
    24. print(phonestr)# 打印电话字符串
    25. # Phonenum1
    26. # 13512345678
    27. # 16556345690
    28. # 13724680156
    29. print('------------ 爸爸的手机号的数字全部写在一起--------------')
    30. # for i in phonestr:
    31. col = 0 #
    32. for _ in phonestr:# 在电话字符串里面循环遍历 取各种数字
    33. if i.value!= 'Phonenum1':# 如果电话号码的值不等于'dad' 不要第一行C1
    34. if int(_) != 0:# 如果取出的数字不等于0 等于1-9
    35. str_temp = int(_) * symbol_1[col] # 结果等于 取出的数字的整数 乘以 符号列表的相应列数的符号(批量几个符号)
    36. else:# 如果取出的数字=于0
    37. str_temp = '零'# 0=零
    38. # print( str_temp)
    39. father.append(str_temp)
    40. col +=1
    41. print(father)
    42. # ['●', '●●●', '●●●●●', '●', '●●', '●●●', '●●●●', '●●●●●', '●●●●●●', '●●●●●●●', '●●●●●●●●', '●', '●●●●●●', '●●●●●', '●●●●●', '●●●●●●', '●●●', '●●●●', '●●●●●', '●●●●●●', '●●●●●●●●●', '零', '●', '●●●', '●●●●●●●', '●●', '●●●●', '●●●●●●', '●●●●●●●●', '零', '●', '●●●●●', '●●●●●●']
    43. print('------------读取 妈妈的手机号--------------')
    44. mother=[]
    45. symbol_2 = ['▲','▼','●','♦','■','▶','◀','◣','◥','◤','◢']#
    46. for j in list(phone.columns)[6]:
    47. phonestr = str(j.value)
    48. print(phonestr)
    49. # Phonenum2
    50. # 13214562358
    51. # 15615617891
    52. # 13123568210
    53. print('------------ 妈妈的手机号的数字全部写在一起--------------')
    54. col = 0# 第一个字符串的起始列 123数下去 mum电话的第一位数在第O列=15列
    55. for _ in phonestr[:]:
    56. if j.value != 'Phonenum2':
    57. if int(_) != 0:
    58. str_temp = int(_) * symbol_2 [col]
    59. else:
    60. str_temp = '零'
    61. mother.append(str_temp)
    62. col +=1
    63. print(mother)
    64. # ['▲', '▼▼▼', '●●', '♦', '■■■■', '▶▶▶▶▶', '◀◀◀◀◀◀', '◣◣', '◥◥◥', '◤◤◤◤◤', '◢◢◢◢◢◢◢◢', '▲', '▼▼▼▼▼', '●●●●●●', '♦', '■■■■■', '▶▶▶▶▶▶', '◀', '◣◣◣◣◣◣◣', '◥◥◥◥◥◥◥◥', '◤◤◤◤◤◤◤◤◤', '◢', '▲', '▼▼▼', '●', '♦♦', '■■■', '▶▶▶▶▶', '◀◀◀◀◀◀', '◣◣◣◣◣◣◣◣', '◥◥', '◤', '零']
    65. print('------------ 爸爸的手机号拆开成11个一组的列表--------------')
    66. father_all=[]
    67. for i in range(0,int(len(father)/11)):
    68. b=father[i*11:i*11+11]
    69. father_all.append(b)
    70. print(father_all)
    71. # [['●', '●●●', '●●●●●', '●', '●●', '●●●', '●●●●', '●●●●●', '●●●●●●', '●●●●●●●', '●●●●●●●●'], # ['●', '●●●●●●', '●●●●●', '●●●●●', '●●●●●●', '●●●', '●●●●', '●●●●●', '●●●●●●', '●●●●●●●●●', '零'],['●', '●●●', '●●●●●●●', '●●', '●●●●', '●●●●●●', '●●●●●●●●', '零', '●', '●●●●●', '●●●●●●']]
    72. print('------------ 妈妈的手机号拆开成11个一组的列表--------------')
    73. mother_all=[]
    74. for i in range(0,int(len(mother)/11)):
    75. b=mother[i*11:i*11+11]
    76. mother_all.append(b)
    77. print(mother_all)
    78. # [['▲', '▼▼▼', '●●', '♦', '■■■■', '▶▶▶▶▶', '◀◀◀◀◀◀', '◣◣', '◥◥◥', '◤◤◤◤◤', '◢◢◢◢◢◢◢◢'],
    79. # ['▲', '▼▼▼▼▼', '●●●●●●', '♦', '■■■■■', '▶▶▶▶▶▶', '◀', '◣◣◣◣◣◣◣', '◥◥◥◥◥◥◥◥', '◤◤◤◤◤◤◤◤◤', '◢'],
    80. # ['▲', '▼▼▼', '●', '♦♦', '■■■', '▶▶▶▶▶', '◀◀◀◀◀◀', '◣◣◣◣◣◣◣◣', '◥◥', '◤', '零']]
    81. print('------------读取 学号或者姓名--------------')
    82. N=[]
    83. for i in list(phone.columns)[2]:# 学号-0 班级1 姓名2
    84. phonestr = str(i.value)# 电话字符串 = 第二列的数字的值的字符串形式
    85. N.append(phonestr)
    86. print(N)# ['N', '1', '11', '24']
    87. print('------------读取 班级--------------')
    88. C=[]
    89. for i in list(phone.columns)[1]:# 班级
    90. phonestr = str(i.value)#
    91. C.append(phonestr)
    92. print(C)#['CLASS', '大七班', '大七班', '大七班']
    93. print('------------ 数据导入word,字体设置--------------')
    94. from docxtpl import DocxTemplate
    95. import pandas as pd
    96. from docx2pdf import convert
    97. from docx.shared import RGBColor
    98. for y in range(0,int(len(father)/11)):
    99. doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\破译电话号码模板(图案).docx')
    100. wb = pd.read_excel(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\家长电话号码.xlsx')
    101. table = doc.tables[0]
    102. print('------------学号\班级写入,字体设置--------------')
    103. n=N[y+1]
    104. run=table.cell(0,2).paragraphs[0].add_run(n) # 这里的可以代表学号或者名字,把上面连接的数字改掉 姓名02 学号06 班级08
    105. run.font.name = '黑体'#输入时默认华文琥珀字体
    106. run.font.color.rgb = RGBColor(220,220,220) #设置颜色浅灰
    107. run.font.size = Pt(45) #输入字体大小默认30号
    108. r = run._element
    109. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    110. table.cell(0,2).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    111. c=C[y+1]
    112. run=table.cell(0,8).paragraphs[0].add_run(c) # 班级08
    113. run.font.name = '黑体'#输入时默认华文琥珀字体
    114. run.font.color.rgb = RGBColor(220,220,220) #设置颜色浅灰
    115. run.font.size = Pt(45) #输入字体大小默认30号
    116. r = run._element
    117. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    118. table.cell(0,8).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    119. for nn in range(0,11):
    120. print('------------ 爸爸的手机号写入不同的word,字体设置--------------')
    121. f=father_all[y][nn]
    122. print(f)
    123. run=table.cell(2,nn).paragraphs[0].add_run(f) # 在第该表格3行1列的单元格内输入“xxxx”
    124. run.font.name = '黑体'#输入时默认华文琥珀字体
    125. run.font.size = Pt(18) #输入字体大小默认30号
    126. r = run._element
    127. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    128. table.cell(2,nn).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    129. print('------------ 妈妈的手机号写入不g同的word,字体设置--------------')
    130. g=mother_all[y][nn]
    131. print(g)
    132. run=table.cell(5,nn).paragraphs[0].add_run(g) # 在第该表格3行1列的单元格内输入“xxxx”
    133. run.font.name = '黑体'#输入时默认华文琥珀字体
    134. run.font.size = Pt(18) #输入字体大小默认30号
    135. r = run._element
    136. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    137. table.cell(5,nn).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    138. doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word\{}.docx'.format('%02d'%(y+1)))#保存为XX学号的电话号码word
    139. # docx 文件另存为PDF文件
    140. inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word\{}.docx".format('%02d'%(y+1)) # 要转换的文件:已存在
    141. outputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word\{}.pdf".format('%02d'%(y+1)) # 要生成的文件:不存在
    142. # 先创建 不存在的 文件
    143. f1 = open(outputFile, 'w')
    144. f1.close()
    145. # 再转换往PDF中写入内容
    146. convert(inputFile, outputFile)
    147. print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    148. # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    149. import os
    150. from PyPDF2 import PdfFileMerger
    151. target_path = r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word"
    152. pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    153. pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    154. pdf_lst.sort()
    155. file_merger = PdfFileMerger()
    156. for pdf in pdf_lst:
    157. print(pdf)
    158. file_merger.append(pdf)
    159. file_merger.write(r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\(打印合集)破译电话号码-图案版-名字和班级({}班-{}份).pdf".format(classroom,int(len(father)/11)))
    160. file_merger.close()
    161. # doc.Close()
    162. # print('----------第5步:删除临时文件夹------------')
    163. import shutil
    164. shutil.rmtree(r"C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码\零时Word") #递归删除文件夹,即:删除非空文件夹

           

  • 相关阅读:
    B_QuRT_User_Guide(28)
    OpenCV官方教程中文版 —— 2D 直方图
    Java 基础-语法-运算符
    Spring整合Mybatis
    Eclipse环境基于HDFS的API进行开发
    神经网络硕士就业前景,图神经网络前景如何
    重磅首发!PaddleTS飞桨时序建模算法库,预测性维护、智慧能耗分析等一网打尽
    Java程序设计——反射(Java高级应用)
    pandas使用groupby函数基于指定分组变量对dataframe数据进行分组、使用last函数获取每个分组数据中每个分组的最后一个样本数据
    【TensorFlow深度学习】张量Broadcasting机制与数学运算实践
  • 原文地址:https://blog.csdn.net/reasonsummer/article/details/127828600