【教学类-45-01】X-Y之间的“三连加“题(a+b+c=)

作品展示:

背景需求:

我常去的大4班孩子们基本都适应了0-5之间的加法题,做题速度极快。

为了增加“花样”,吸引幼儿参与,修改参数,从二连加1+2=变为三连加1+1+1=。

素材准备:

代码重点

代码展示

'''
X-Y 之间的3连加(如1+2+2=5)
时间:2024年1月7日 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'))
classroom=input('班级(输入中、大)\n')
size=20
height1=12
weight1=4
gz=(height1-1)*weight1
sum1=int(input('X-Y以内的“+-” 最小数字X\n'))
sum2=int(input('X-Y以内的“+-” 最大数字Y\n'))


# 5以内“+-”题共21题
P=[]
for a in range(0,sum2+1):     # 起始数字就是10,就是排除掉0-10之间的数字
    for b in range(0,sum2+1):      # 起始数字为0,
        for c in range(0,sum2+1):     # 起始数字就是10,就是排除掉0-10之间的数字
            if sum1<=a+b+c<sum2+1 or sum1<=a+c+b<sum2+1 or sum1<=b+a+c<sum2+1 or \
                sum1<=b+c+a<sum2+1 or sum1<=c+a+b<sum2+1 or sum1<=c+b+a<sum2+1 :         
                # print('{}+{}='.format(a,b))
                P.append('{}+{}+{}='.format(a,b,c))
                P.append('{}+{}+{}='.format(a,c,b))
                P.append('{}+{}+{}='.format(b,a,c))
                P.append('{}+{}+{}='.format(b,c,a))
                P.append('{}+{}+{}='.format(c,a,b))
                P.append('{}+{}+{}='.format(c,b,a))
                # 0-5 三连加 56道
                # 0-10 三连加 286道
            else:
                pass


P =list(set(P))    # 排除重复,但随机打乱
P.sort()    # 小到大排序
# P=P[1:]
# 不要0+0+0
print(P)
# print(len(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('{}-{}之间的三连加题共有  {}  题'.format(sum1,sum2,len(P)) )   # 21

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

if len(P) <=gz:
    title='{}-{}“3++”{}抽{}'.format(sum1,sum2,len(P),len(P))
if len(P) >gz:
    title='{}-{}“3++”{}抽{}'.format(sum1,sum2,len(P),gz)
d=['0001','0002']
# 表格0 表格2的 03 05单元格里写入标题信息c
A.append(c)
A.append(title)
print(A)    

# 制作"单元格"
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 len(P) <=gz:
    bg=bgall[0:2+len(P)]
    print(bg)
    print(len(bg))
else:
    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)  # 若图片文件夹不存在就创建

D=[]
n=int(num/2)
for z in range(0,n):   #多少份  
    # 标题说明
    
        # 新建word
    doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\加减法\05三连加减一页两份.docx')  
    for j in range(2):
        D.clear()
            
        if len(P) <=gz:
        # D=[]
        # 小于9的题目,要计算一共有几题,写入等量的单元格内, 
            for xx in A :
                D.append(xx)
            C=random.sample(P,len(P))  
            for cc in C:
                D.append(cc)
            print(D)
            print(len(D))

        else:
        # D=[]
        # 大于9的题目,只要抽取55题,多余的写不下,
            for xx in A :
                D.append(xx) 
            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(150,150,150) #数字小,颜色深0-255
            run.font.color.rgb = RGBColor(150,150,150) #数字小,颜色深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     
    time.sleep(2)
    
    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 PdfMerger
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 = PdfMerger()
for pdf in pdf_lst:
    print(pdf)
    file_merger.append(pdf)

if len(P) <=gz:
    file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/加减法/(打印合集)06一页两份 {}题{}-{}之间三连加“3++”共{}题抽{}题({}共{}人打印{}张).pdf" .format(gz,'%02d'%sum1,'%02d'%sum2,'%03d'%len(P),'%02d'%len(P),c,num,n))
else:
    file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/加减法/(打印合集)06一页两份 {}题{}-{}之间三连加“3++”共{}题抽{}题({}共{}人打印{}张).pdf".format(gz,'%02d'%sum1,'%02d'%sum2,'%03d'%len(P),gz,c,num,n))

file_merger.close()
# doc.Close()
time.sleep(2)

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





        
        

终端输入

结果展示:

再测试0-10

(0+0+0=后面是0+0+10的问题,暂时不调整)

感悟:

1、三连加已经需要6组if,如果4连加12组if,写起来很多,要用list制作了。

2、因为0-5三连加数量56超过已有44格子,所以这里不考虑 多余空格补充题目的代码

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

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

相关文章

备战2024美赛数学建模,文末获取历史优秀论文

总说&#xff08;历年美赛优秀论文可获取&#xff09; 数模的题型千变万化&#xff0c;我今天想讲的主要是一些「画图」、「建模」、「写作」和「论文结构」的思路&#xff0c;这些往往是美赛阅卷官最看重的点&#xff0c;突破了这些点&#xff0c;才能真正让你的美赛论文更上…

计算机图形学流体模拟 blender 渲染脚本

做流体模拟的时候&#xff0c;想要复现别人的成果&#xff0c;但是别人的代码都是每帧输出 ply 格式的文件&#xff0c;渲染部分需要自己完成 看了一下&#xff0c;似乎用 blender 是最简单的&#xff0c;于是记录一下过程中用到的代码 Blender 版本 4.0 批量导入 ply 假设…

Federated Unlearning for On-Device Recommendation

WSDM 2023 CCF-B Federated Unlearning for On-Device Recommendation 本文工作的主要介绍 本文主要介绍了一种名为FRU&#xff08;Federated Recommendation Unlearning&#xff09;的联邦学习框架&#xff0c;用于在设备端的推荐系统中实现用户数据的有效擦除和模型重建。…

专业课128分总分400+南京理工大学818信号系统与数字电路南理工考研经验分享

专业课128分总分400南京理工大学818信号系统与数字电路南理工电光院考研经验分享&#xff0c;希望自己的经历对大家有借鉴。 我是在六月底确认自己保不上研然后专心备考的&#xff0c;时间确实比较紧张。虽然之前暑假看了一点高数&#xff0c;但因为抱有保研的期望&#xff0c…

JMeter之Windows安装

JMeter之Windows安装 一、安装JDK二、安装JMeter1、下载JMeter2、配置环境变量3、验证JMeter 三、扩展知识1、汉化 一、安装JDK 略 二、安装JMeter 1、下载JMeter 官网地址&#xff1a;https://jmeter.apache.org/download_jmeter.cgi 放到本地目录下 2、配置环境变量 变量…

探索浏览器的内心世界:渲染机制的奥秘

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

im6ull学习总结(三-4)freetype显示单个字体

矢量字体引入 使用点阵字库显示英文字母、汉字时&#xff0c;大小固定&#xff0c;如果放大缩小则会模糊甚至有锯齿出现&#xff0c;为了解决这个问题&#xff0c;引用矢量字体。 矢量字体形成分三步&#xff1a; 第1步 确定关键点&#xff0c; 第2步 使用数学曲线&#xff08…

软件测试|Windows系统配置pytest+allure环境教程

前言 allure可以输出非常精美的测试报告&#xff0c;也可以和pytest进行完美结合&#xff0c;不仅可以渲染页面&#xff0c;还可以控制用例的执行。本文我们将介绍Windows系统中如何配置allure环境。 第一步&#xff1a;配置Java环境 因为allure的运行依赖于Java环境&#x…

Java中CompletableFuture 异步编排的基本使用

一、前言 在复杂业务场景中&#xff0c;有些数据需要远程调用&#xff0c;导致查询时间缓慢&#xff0c;影响以下代码逻辑运行&#xff0c;并且这些浪费时间的逻辑与以后的请求并没有关系&#xff0c;这样会大大增加服务的时间。 假如商品详情页的每个查询&#xff0c;需要如下…

2024年3月10日PMI认证考试的报名时间确定!

⏰中国大陆地区2024年第1期PMI认证考试于3月10日举办 ⏰报名时间&#xff1a; 为减少同一时间集中报名造成的网络拥堵&#xff0c;本次报名将采取以下形式分地区、分批次开放报名。&#x1f447; 1️⃣第1批报名城市&#xff1a;⏰2024年1月11日10:00至1月18日16:00&#xff0c…

【AI之路】使用huggingface_hub通过huggingface镜像站hf-mirror.com下载大模型(附代码,实现大模型自由)

文章目录 前言一、Hugging face是什么&#xff1f;二、huggingface镜像站hf-mirror.com三、大模型一键下载1. 准备工作2. 下载代码 总结后记 前言 要玩AI大模型&#xff0c;Hugging face 不可错过&#xff0c;但资源虽不错&#xff0c;可奈何国内下载速度很慢&#xff0c;动则…

优雅处理并发:Java CompletableFuture最佳实践

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;今天&#xff0c;小黑要和大家聊聊CompletableFuture&#xff0c;这个Java 8引入的强大工具。 在Java传统的Future模式里&#xff0c;咱们都知道&#xff0c;一旦开始了一个异步操作&#xff0c;就只能等它结束…

整形数据在内存中的存储(C语言)

整形数据在内存中的存储 1.整形家族2.(原码、反码、补码)基础知识3.大小端3.1 什么是大小端3.2 为什么有大端和小端3.3 一道关于大小端字节序的面试题3.4 关于整形数据存储的题目(7题)3.4.13.4.23.4.33.4.43.4.53.4.63.4.7 4.总结 1.整形家族 signed可省可不省&#xff0c;一般…

尝试OmniverseFarm的最基础操作

目标 尝试OmniverseFarm的最基础操作。本地机器作为Queue和Agent&#xff0c;同时在本地提交任务。 主要参考了官方文档&#xff1a; Farm Queue — Omniverse Farm latest documentation Farm Agent — Omniverse Farm latest documentation Farm Examples — Omniverse Far…

蜗牛目标检测数据集VOC格式480张

蜗牛&#xff0c;一种缓慢而坚韧的软体动物&#xff0c;以其螺旋形的外壳和黏附力极强的黏液而为人所熟知。 蜗牛体型呈螺旋形&#xff0c;有一个硬壳保护其柔软的身体。壳的形状和纹理因种类而异&#xff0c;有的光滑如玻璃&#xff0c;有的则布满细纹。蜗牛的头部有两对触角…

构建安全可靠的系统:第十一章到第十五章

第三部分&#xff1a;实现系统 原文&#xff1a;Part III. Implementing Systems 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 一旦您分析并设计了您的系统&#xff0c;就该是实现计划的时候了。在某些情况下&#xff0c;实现可能意味着购买现成的解决方案。第十一章…

【AI】CycleGan对抗生成网络遥感影像生成地图效果测试

今天看到一个有趣的项目&#xff0c;CycleGan对抗生成网络把马生成成斑马&#xff0c;还有一个测试用例是用遥感影像生成平面地图的效果&#xff0c;效果如下图所示&#xff0c;我大学是遥感专业&#xff0c;看到遥感影像就触动了我的原神&#xff0c;于是原神启动&#xff0c;…

JavaFx踩坑

github&#xff1a;https://gitee.com/forgot940629/java-fx-demo helloworld 直接用idea即可创建 MANIFEST.MF 没有MANIFEST.MF 直接用idea生成的JavaFX没有MANIFEST.MF这个文件&#xff0c;需要配置 jar包中MANIFEST.MF不一致 target文件中的MANIFEST.MF有Main-Clas…

Beauty algorithm(七)瘦脸

瘦脸的实现采用局部平移法。 一、skills 前瞻 局部平移 二、目标区域定位 左脸: 关键点选择3、5点,基点30 rmax:计算两点5-3间的距离, |x-c|:图像任一点到固定基点c的距离 |m-c|:两固定点距离 右脸: 关键点选择

2024-01-01 K 次取反后最大化的数组和和加油站以及根据身高重建队列

1005. K 次取反后最大化的数组和 思路&#xff1a;每一次取反最小值即可&#xff01;贪心的思路就是先排序&#xff0c;反转负数的值&#xff0c;后在贪心反转最小值 class Solution:def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:count 0while …