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 实现插入排序算法
Jun 05 Python
python中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
Apr 24 Python
各个系统下的Python解释器相关安装方法
Oct 12 Python
详解python之多进程和进程池(Processing库)
Jun 09 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
Python logging设置和logger解析
Aug 28 Python
Python简单实现区域生长方式
Jan 16 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
使用pandas模块实现数据的标准化操作
May 14 Python
python保存图片的四个常用方法
Feb 28 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
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
学习ExtJS 访问容器对象
2009/10/07 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
基于python实现微信模板消息
2015/12/21 Python
Python检测生僻字的实现方法
2016/10/23 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
python读取ini配置文件过程示范
2019/12/23 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
毕业生的自我评价分享
2013/12/18 职场文书
综合实践教学反思
2014/01/31 职场文书
《雷雨》教学反思
2014/02/20 职场文书
临床专业自荐信
2014/06/22 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
租房协议书范例
2014/10/14 职场文书
2014年班组工作总结
2014/11/20 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Python机器学习三大件之一numpy
2021/05/10 Python