热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用Python给弟弟生成1000道算术题

原标题:用Python给弟弟生成1000道算术题动机:阿姨花了30元给幼儿园的小弟弟买了一本习题,里面都是简单的二元加减

原标题:用Python给弟弟生成1000道算术题


  • 动机:阿姨花了30元给幼儿园的小弟弟买了一本习题,里面都是简单的二元加减法。我一听,惊道:“怎么还花钱买题?我动动手指能给你生成一千条。”

    阿姨觉得二元加减太简单了,想要三元加减法的算术题(x + y + z; x + y - z; x - y - z; x - y + z),因为弟弟还小,只会100以内的加减法,不会负数,所以出的算术题不仅计算结果要在[0, 100]内,算式中的任何两位的计算也要在[0, 100]

    希望弟弟长大后会感谢我,嘻嘻~


  • 思路


    1. 生成在[1,99]内的随机数x, y, z,若它们的计算结果在[0, 100]内,且算式中的任何两位的计算也在[0, 100],就保存在字符串里,作为答案,如"10 + 13 + 9 = 32"

    2. 将字符串存入set中,因为Python的set是无序且不重复的,所以它会自动打乱和去重

    3. 答案写入文件,写入文件时要写入index(题号)

    4. 去掉结果再写入另一个文件,作为题目



  • 用到的方法


    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) + 文章来源站点https://www.yii666.com/" + " + 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文章来源地址42307.html, 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文章来源地址42307.html y + z <= 100)
    www.yii666.com 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 -www.yii666.com 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文件:
      答案题目

    • 排版后的word文档:
      答案
      题目



来源于:用Python给弟弟生成1000道算术题


推荐阅读
  • 深入解析Android Activity生命周期
    本文详细探讨了Android中Activity的生命周期,通过实例代码和详细的步骤说明,帮助开发者更好地理解和掌握Activity各个阶段的行为。 ... [详细]
  • 本文介绍了JSP的基本概念、常用标签及其功能,并通过示例详细说明了如何在JSP页面中使用Java代码。 ... [详细]
  • 利用50行Python代码打造经典游戏,既是休闲娱乐,也是编程学习的利器
    Free Python Games 是一个适合学生和初学者的项目,它不仅提供了高度的组织性和灵活性,还极大地激发了用户的探索与理解能力。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 本文详细介绍了Spring AOP注解的基本概念及其实现方式,并通过实例演示了如何在项目中使用这些注解进行面向切面的编程。旨在帮助开发者更好地理解和运用Spring AOP功能。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 详解MyBatis二级缓存的启用与配置
    本文深入探讨了MyBatis二级缓存的启用方法及其配置细节,通过具体的代码实例进行说明,有助于开发者更好地理解和应用这一特性,提升应用程序的性能。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文探讨了在Python中多线程与多进程的性能差异,特别是在处理CPU密集型任务和I/O密集型任务时的表现。由于全局解释器锁(GIL)的存在,多线程在利用多核CPU方面表现不佳,而多进程则能有效利用多核资源。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
  • 本文深入探讨了HTML5中十五个重要的新特性,为开发者提供了详细的指南。 ... [详细]
  • Struts2框架构建指南
    本文详细介绍了如何使用Struts2(版本2.3.16.3)构建Web应用,包括必要的依赖库添加、配置文件设置以及简单的示例代码。Struts2是Apache软件基金会下的一个开源框架,用于简化Java Web应用程序的开发。 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • Hadoop集群搭建:实现SSH无密码登录
    本文介绍了如何在CentOS 7 64位操作系统环境下配置Hadoop集群中的SSH无密码登录,包括环境准备、用户创建、密钥生成及配置等步骤。 ... [详细]
author-avatar
望奇迹般地神话
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有