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 03 Python
Python基本语法经典教程
Mar 11 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
利用nohup来开启python文件的方法
Jan 14 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
如何使用python操作vmware
Jul 27 Python
python命名空间(namespace)简单介绍
Aug 10 Python
使用python实现对元素的长截图功能
Nov 14 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 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
laravel邮件发送的实现代码示例
2020/01/31 PHP
JQuery 入门实例1
2009/06/25 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
python简单实现计算过期时间的方法
2015/06/09 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
单利模式及python实现方式详解
2018/03/20 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
tensorflow自定义激活函数实例
2020/02/04 Python
初二物理教学反思
2014/01/29 职场文书
公司薪酬管理制度
2014/01/31 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
赔偿协议书范本
2014/09/12 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
辩护词范文大全
2015/05/21 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
深入理解redis中multi与pipeline
2021/06/02 Redis