Python趣味挑战之给幼儿园弟弟生成1000道算术题


Posted in Python onMay 28, 2021

一、前言

阿姨花了30元给幼儿园的小弟弟买了一本习题,里面都是简单的二元加减法。我一听,惊道:“怎么还花钱买题?我动动手指能给你生成一千条。”

阿姨觉得二元加减太简单了,想要三元加减法的算术题(x + y + z; x + y - z; x - y - z; x - y + z),因为弟弟还小,只会100以内的加减法,不会负数,所以出的算术题不仅计算结果要在[0, 100]内,算式中的任何两位的计算也要在[0, 100]内。

希望弟弟长大后会感谢我,嘻嘻~

二、思路

生成在[1,99]内的随机数x, y, z,若它们的计算结果在[0, 100]内,且算式中的任何两位的计算也在[0, 100]内,就保存在字符串里,作为答案,如"10 + 13 + 9 = 32";将字符串存入set中,因为Python的set是无序且不重复的,所以它会自动打乱和去重;把答案写入文件,写入文件时要写入index(题号)去掉结果再写入另一个文件,作为题目

三、方法

1.生成随机整数:

import random
x = random.randint(1, 99)	# 生成[1, 99]内的整数

2.set:

s = set()	# 初始化要用set()
x = 1
s.add(x)	# 将x插入s

3.将结果存入文件

text = "Hello world!"
with open(file, 'a') as f:	# 追加文本到文件
	# 每次输入前清空文件
	f.seek(0)
    f.truncate()
	# 将文本写入文件
    f.write(text)

四、代码

import random

def fun1(x, y, z):
    s = str(x) + " + " + str(y) + " + " + str(z) + " = " + str(x + y + z)
    return s

def fun2(x, y, z):
    s = str(x) + " + " + str(y) + " - " + str(z) + " = " + str(x + y - z)
    return s

def fun3(x, y, z):
    s = str(x) + " - " + str(y) + " + " + str(z) + " = " + str(x - y + z)
    return s

def fun4(x, y, z):
    s = str(x) + " - " + str(y) + " - " + str(z) + " = " + str(x - y - z)
    return s

def generate(num):
    s = set()
    while len(s) < num:
        x = random.randint(1, 99)
        y = random.randint(1, 99)
        z = random.randint(1, 99)
        if ((x + y >= 0 and x + y <= 100)
                and (y + z >= 0 and y + z <= 100)
                and (x + z >= 0 and x + z <= 100)
                and (x + y + z >= 0 and x + y + z <= 100)):
            s.add(fun1(x, y, z))
        if ((x + y >= 0 and x + y <= 100)
                and (y - z >= 0 and y - z <= 100)
                and (x - z >= 0 and x - z <= 100)
                and (x + y - z >= 0 and x + y - z <= 100)):
            s.add(fun2(x, y, z))
        if ((x - y >= 0 and x - y <= 100)
                and (- y + z >= 0 and - y + z <= 100)
                and (x + z >= 0 and x + z <= 100)
                and (x - y + z >= 0 and x - y + z <= 100)):
            s.add(fun3(x, y, z))
        if ((x - y >= 0 and x - y <= 100)
                and (- y - z >= 0 and - y - z <= 100)
                and (x - z >= 0 and x - z <= 100)
                and (x - y - z >= 0 and x - y - z <= 100)):
            s.add(fun4(x, y, z))
    return s

def save_in_file(answers, answer_file, question_file):
    with open(answer_file, 'a') as f:
        # 每次输入前清空文件
        f.seek(0)
        f.truncate()

        cnt = 1
        for ans in answers:
            text = str(cnt) + ")  " + ans + '\n'
            f.write(text)
            cnt += 1

    with open(question_file, 'a') as f:
        f.seek(0)
        f.truncate()

        cnt = 1
        for ans in answers:
            ques = str(cnt) + ")  " + ans[: ans.find('=') + 1] + "\n"
            f.write(ques)
            cnt += 1


save_in_file(generate(1000), 
"C:\\Users\\sibyl\\Desktop\\calculation\\answer.txt", 
"C:\\Users\\sibyl\\Desktop\\calculation\\question.txt")

五、结果

生成的txt文件:

Python趣味挑战之给幼儿园弟弟生成1000道算术题Python趣味挑战之给幼儿园弟弟生成1000道算术题

排版后的word文档:

Python趣味挑战之给幼儿园弟弟生成1000道算术题
Python趣味挑战之给幼儿园弟弟生成1000道算术题

到此这篇关于Python趣味挑战之给幼儿园弟弟生成1000道算术题的文章就介绍到这了,更多相关Python生成算术题内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python回溯法实现数组全排列输出实例分析
Mar 17 Python
使用Python生成url短链接的方法
May 04 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
阿里云ECS服务器部署django的方法
Aug 29 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
详解Python 中的 defaultdict 数据类型
Feb 22 Python
python 调用js的四种方式
Apr 11 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 #Python
利用Python+OpenCV三步去除水印
python实现自定义日志的具体方法
May 28 #Python
python 爬取京东指定商品评论并进行情感分析
python b站视频下载的五种版本
May 27 #Python
教你怎么用python selenium实现自动化测试
Python Django框架介绍之模板标签及模板的继承
May 27 #Python
You might like
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
javascript动画浅析
2012/08/30 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
python def 定义函数,调用函数方式
2020/06/02 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
python 下划线的不同用法
2020/10/24 Python
Python如何急速下载第三方库详解
2020/11/02 Python
英国女性时尚品牌:Apricot
2018/12/04 全球购物
预备党员思想汇报
2014/01/08 职场文书
小学数学国培感言
2014/03/10 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python