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实现数通设备tftp备份配置文件示例
Apr 02 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
python中global用法实例分析
Apr 30 Python
python连接MySQL数据库实例分析
May 12 Python
Python常用库推荐
Dec 04 Python
Python设计模式之代理模式简单示例
Jan 09 Python
django允许外部访问的实例讲解
May 14 Python
浅析Python装饰器以及装饰器模式
May 28 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
五种Python转义表示法
Nov 27 Python
Python采集壁纸并实现炫轮播
Apr 30 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
Dec 24 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
简单的页面缓冲技术
2006/10/09 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
查找Oracle高消耗语句的方法
2014/03/22 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
js实现随机点名程序
2020/09/17 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
python中的__slots__使用示例
2015/02/26 Python
使用PDB模式调试Python程序介绍
2015/04/05 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
毕业寄语大全
2014/04/09 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
python基础之文件处理知识总结
2021/05/23 Python
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫