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实现类似ftp传输文件的网络程序示例
Apr 08 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
Jul 02 Python
python查看微信好友是否删除自己
Dec 19 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
python 接口返回的json字符串实例
Mar 27 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
关于python的缩进规则的知识点详解
Jun 22 Python
详解pycharm配置python解释器的问题
Oct 15 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
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
Python之web模板应用
2017/12/26 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
python中嵌套函数的实操步骤
2019/02/27 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
如何基于python实现归一化处理
2020/01/20 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
python输入中文的实例方法
2020/09/14 Python
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
人事主管的岗位职责
2013/11/16 职场文书
2013的个人自我评价
2013/12/26 职场文书
个人贷款收入证明
2014/10/26 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
八年级历史教学反思
2016/02/19 职场文书