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读取注册表中值的方法
Apr 08 Python
python自动安装pip
Apr 24 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
python requests post多层字典的方法
Dec 27 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
Python原始套接字编程实例解析
Jan 29 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
用Python在Excel里画出蒙娜丽莎的方法示例
Apr 28 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 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内置的Math函数效率测试
2014/12/01 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
input 输入框内的输入事件详细分析
2010/03/17 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
20个实用的JavaScript技巧分享
2014/11/28 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
python获取本机mac地址和ip地址的方法
2015/04/29 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
护理自荐信范文
2013/10/05 职场文书
4s客服专员岗位职责
2013/12/01 职场文书
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
党纪处分决定书
2015/06/24 职场文书