文档章节

自动生成小学四则运算题目(Python实现)

o
 osc_fmg49rzg
发布于 2019/03/20 23:43
字数 900
阅读 7
收藏 0

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

Github项目地址:

https://github.com/pirigg/-

题目描述:

  通过python语言编写一个能够自动生成小学四则运算的程序(注意是给小学生用的,要是结果出现负数的话他们会很迷茫的!),同时,除了整数外,还要支持真分数的四则运算。

 


 

Psp表格:

PSP2.1

任务内容

计划完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

50

60

 Estimate

估计这个任务需要多少时间,并规划大致工作步骤

20

30

Analysis

需求分析 (包括学习新技术)

60

90

Design

具体设计

50

60

Coding

具体编码

400

500

test

测试(自我测试,修改代码,提交修改)

200

250

Postmortem & Process

Improvement Plan

事后总结 ,并提出过程改进计划

30

50

Summary

合计

 

810

 

1040


1.程序设计


 

首先以“1+1=”为例,我们要生成简单的四则运算题目需要两个整数或是分数,为了将答案与算式分类,我们分别用两个列表来储存。

q[]用来存储问题,ans[]用来存储答案。我们可以通过random模块生成一定区间里的随机数,分数也可以通过随机生成分子和分母的形式随机生成。同时分数可以使用Fraction模块,可以同时实现分数与整数的运算以及分子和分母的约分。

下面是各个函数的代码:

2.实现代码


 

def c1(q, ans): 
    symbol = random.choice(['+', '-', '*', '/'])  # 生成随机符号
    if symbol == '+':
        n1 = random.randint(0, 20)
        n2 = random.randint(0, 20)
        q.append(str(n1) + '+' + str(n2) + '=')
        ans.append(n1 + n2)
    elif symbol == '-':
        n1 = random.randint(0, 20)
        n2 = random.randint(0, 20)
        n1,n2 = max(n1,n1),min(n1,n2)#防止出现负数
        q.append(str(n1) + '-' + str(n2) + '=')
        ans.append(n1 - n2)
    elif symbol == '*':
        n1 = random.randint(0, 20)
        n2 = random.randint(0, 20)
        q.append(str(n1) + '×' + str(n2) + '=')
        ans.append(n1 * n2)
    else:
        n1 = random.randint(0, 20)
        if n1 == 0:
            n2 = random.randint(1, 20)
        else:
            n2 = random.randint(1, n1 + 1)
        q.append(str(n1) + '÷' + str(n2) + '=')
        ans.append(Fraction(n1, n2))

 

def createF(): #生成分数
    fz1 = random.randint(0, 20)
    if fz1 == 0:
        fm1 = random.randint(1, 20)
    else:
        fm1 = random.randint(1, 20)
    f1 = Fraction(fz1, fm1)
    fz2 = random.randint(1, 20)
    fm2 = random.randint(20, 20)
    f2 = Fraction(fz2, fm2)
    return f1, f2

  

def c2(q,ans):    #两个分数的四则运算
    symbol = random.choice(['+','-','*','/'])
    f1,f2 = createF()
    if symbol =='+':
        while f1+f2>1:
            f1,f2 = createF()
        q.append(str(f1)+'+'+str(f2)+'=')
        ans.append(f1+f2)
    elif symbol =='-':
        f1,f2 = max(f1,f2),min(f1,f2)  #防止出现负数
        q.append(str(f1)+'-'+str(f2)+'=')
        ans.append(f1-f2)
    elif symbol == '*':
        while f1*f2>1:
            f1,f2 = createF()
        q.append(str(f1)+'×'+str(f2)+'=')
        ans.append(f1*f2)
    else:
        while f1/f2>1:
            f1,f2=createF()
        q.append(str(f1)+'÷'+str(f2)+'=')
        ans.append(Fraction(f1,f2))   

 更新升级:


 

在原有程序的基础上,我添加了一个转换假分数答案为带分数答案(存储在ans2[]列表中)的函数f(f),以便当学生给出带分数答案时程序不会认为是错误的。

def f(f):  #分数的转换
    a=f.numerator  #分子
    b=f.denominator  #分母
    if a%b==0:  #为整数
        return '%d'%(a/b)
    elif a<b:  #为真分数
        return '%d%s%d' % (a,'/',b)
    else:       #为带分数
        c=int(a/b)
        a = a - c * b
        return '%d%s%d%s%d' % (c,'',a,'/',b)

 更新并修改了主函数后代码运行结果如下:

3.学习总结


 

尽管我从完成本次作业的过程中学到了许多,像是粗略掌握了Fraction模块以及一些程序题目的解题思想,但在写程序的过程中我发现了自己许多许多的不足,这次的作业代码也是匆匆忙忙赶出来的,还有很多要补充的方面,像是括号以及长运算题等等,在以后精进自己的水平后便会适时补上。

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
用python实现简单小学生四则运算

GitHub仓库地址:https://github.com/cherry43002/python 1、 需求分析: 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!) 除了整数外,还要支持真分...

osc_3fzeg1rk
2019/03/20
10
0
Python实现自动生成小学四则运算题目

GitHub仓库地址:https://github.com/cherry43002/python 1、 需求分析: 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!) 除了整数外,还要支持真分...

osc_v9knegpw
2019/04/04
2
0
Python实现自动生成四则运算题目

Github项目地址:https://github.com/Aiyaxc/zuoye- 题目:实现自动生成四则运算题目的命令行程序。 (1)题目要求: a. 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数...

osc_m7kgvwdg
2019/03/25
7
0
python_第一次作业 四则运算

四则运算: 码云链接 https://gitee.com/kyrie_dong/lkdFFR/tree/master 小学生的四则运算】--PSP表格 psp 任务计划 计划完成需要的时间(min) 实际完成需要的时间 Planning 计划 120 80 E...

osc_851bq07r
2019/03/21
3
0
小学四则运算题

Python四则运算 GitHub项目地址:https://github.com/rekosama/-/commit/230e563197c9d6cee3d04e8fc2efa8156c3533d9 题目:   (1)能自动生成小学四则运算题目,并且不能出现负数;   (...

osc_851bq07r
2019/03/21
3
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenCV开发笔记(六十七):红胖子8分钟带你深入了解特征点暴力匹配(图文并茂+浅显易懂+程序源码)

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址:h...

红模仿_红胖子
33分钟前
24
0
将向量附加到向量[重复] - Appending a vector to a vector [duplicate]

问题: This question already has an answer here: 这个问题已经在这里有了答案: Concatenating two std::vectors 22 answers 连接两个std :: vectors 22个答案 Assuming I have 2 standa......

javail
34分钟前
19
0
获得所有文件夹的大小

有两个工具 https://www.getfoldersize.com/ http://www.uderzo.it/main_products/space_sniffer/index.html...

ethanleellj
48分钟前
18
0
interactjs 拖拽 缩放 的交互库

只提供事件钩子和数据, 并不会直接修改dom, 需要自己手动根据数据修改样式 拖拽并记录移动的位置 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</t......

阿豪boy
52分钟前
19
0
为什么在iOS7中,UITableView顶部的UITableViewStyleGrouped样式具有额外的填充

问题: Starting in iOS7, there is additional space at the top of my UITableView 's which have a style UITableViewStyleGrouped . 从iOS7开始,我的UITableView顶部还有一个额外的空间......

fyin1314
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部