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 中文字符串的处理实现代码
Oct 25 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
在Python中使用itertools模块中的组合函数的教程
Apr 13 Python
Python变量作用范围实例分析
Jul 07 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
python 堆和优先队列的使用详解
Mar 05 Python
简单了解Python3里的一些新特性
Jul 13 Python
Pytorch使用shuffle打乱数据的操作
May 20 Python
Pandas实现批量拆分与合并Excel的示例代码
May 30 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
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
JQuery基础语法小结
2015/02/27 Javascript
Prototype框架详解
2015/11/25 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
优秀演讲稿范文
2013/12/29 职场文书
国培教师自我鉴定
2014/02/12 职场文书
人力资源求职信
2014/05/25 职场文书
信息工作经验交流材料
2014/05/28 职场文书
积极向上的团队口号
2014/06/06 职场文书
创先争优个人承诺书
2014/08/30 职场文书
安装工程师岗位职责
2015/02/13 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
JavaScript实现栈结构详细过程
2021/12/06 Javascript
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
JS函数式编程实现XDM一
2022/06/16 Javascript