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 self,cls,decorator的理解
Jul 13 Python
一些Python中的二维数组的操作方法
May 02 Python
Python变量和数据类型详解
Feb 15 Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
启动Atom并运行python文件的步骤
Nov 09 Python
pygame游戏之旅 按钮上添加文字的方法
Nov 21 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
python实现京东订单推送到测试环境,提供便利操作示例
Aug 09 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
python3中numpy函数tile的用法详解
Dec 04 Python
python实现canny边缘检测
Sep 14 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
模拟flock实现文件锁定
2007/02/14 PHP
php下通过POST还是GET来传值
2008/06/05 PHP
php自定义session示例分享
2014/04/22 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
PHP错误处理函数
2016/04/03 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
ExtJS下grid的一些属性说明
2009/12/13 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
python3.5仿微软计算器程序
2020/03/30 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python实现手机通讯录搜索功能
2018/02/22 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
三个python爬虫项目实例代码
2019/12/28 Python
详解python算法常用技巧与内置库
2020/10/17 Python
python处理写入数据代码讲解
2020/10/22 Python
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
元旦促销方案
2014/03/15 职场文书
品质主管岗位职责
2014/03/16 职场文书
升学宴学生答谢词
2015/01/05 职场文书