码迷,mamicode.com
首页 > 其他好文 > 详细

小学四则运算题

时间:2019-03-21 14:29:51      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:选择   pos   函数返回值   test   error   pen   效果   第一个   cells   

Python四则运算

GitHub项目地址:https://github.com/rekosama/-/commit/230e563197c9d6cee3d04e8fc2efa8156c3533d9

 

题目:

  1)能自动生成小学四则运算题目,并且不能出现负数;

  (2)能支持真分数的四则运算;

思路:

1)四则运算加减乘除,采用两个随机数,由于不能出现负数,则对两个随机数进行比较大小再进行减法运算,除法一向特殊,所以在随机数的取值范围中设置不包括0。另外,整数类型除法中两数相除不能出现无限循环小数,故需要对除法做限制。

(2)真分数运算在pycharm中导入fractions库,其余类似。

(3)题库的生成,由于其随机性需要导入random函数。

 

实现过程:

 设计三个函数:

 1newint() 生成整数四则运算

 2newfra() 生成真分数四则运算

 3newtest() 生成制定指定数量的四则运算题目

 

函数关系:

  newint()与newfra()为独立的函数,负责生成随机四则运算,newtest()则随机调用上述两个函数生成题目。

 

代码说明:

  1 from fractions import Fraction   #fraction:分数,即在此导入分数模块
  2 import random      #用于随机生成题目
  3 
  4 #整数四则运算
  5 def newint():
  6     fh = [, , ×, ÷]
  7     k = random.randint(0, 3)  #随机生成0到3内的整数,用于fh的下标
  8     n1 = random.randint(0, 100)
  9     n2 = random.randint(0, 100)
 10     result = 0   #存运算结果
 11     if k == 0:
 12         result = n1 + n2
 13     elif k == 1:
 14         n1, n2 = max(n1, n2), min(n1, n2)
 15         result = n1 - n2
 16     elif k == 2:
 17         result = n1 * n2
 18     elif k == 3:
 19         while n2 == 0 or float(n1/n2)*1000%10!=0:  #分母不能为0,运算结果控制在2位小数内。
 20             n1 = random.randint(0, 100)
 21             n2 = random.randint(0, 100)
 22         result = float(n1 / n2)
 23     print(n1, fh[k], n2, = , end=‘‘)
 24     return result
 25 
 26 #分数四则运算
 27 def newfra():
 28     fh = [, , ×, ÷]
 29     k = random.randint(0, 3)
 30     t1 = random.randint(1,20)
 31     t2 = random.randint(t1, 20)  #做分母,控制为真分数
 32     n1 = Fraction(t1, t2)   #即表示n1为分数
 33     t1 = random.randint(1, 20)
 34     t2 = random.randint(t1, 20)
 35     n2 = Fraction(t1, t2)
 36     result = 0
 37     if k == 0:
 38         result = n1 + n2
 39     elif k == 1:
 40         n1, n2 = max(n1, n2), min(n1, n2)
 41         result = n1 - n2
 42     elif k == 2:
 43         result = n1 * n2
 44     elif k == 3:
 45         result = n1 / n2
 46     print(n1, fh[k], n2, = , end=‘‘)
 47     return result
 48 
 49 #newtest()函数是要求用户输入一个整数来输出算式的数量,采用while循环随机生成整数或者真分数运算,
 50 # 将答案保存在result列表的同时输出算式直到算式数量达到要求。最后输出result列表即输出答案。
 51 def newtest():
 52     fh = [, , ×, ÷]
 53     print(输入题库所需要的题目数量)
 54     n=int(input())
 55     result=[]
 56     m=0
 57     while m<=(n-1):
 58         k = random.randint(0, 4)
 59         if k==0:
 60             print(m+1,end=)
 61             result.append(newfra())
 62             print( )
 63         else:
 64             print(m+1,end=)
 65             result.append(newint())
 66             print( )
 67         m=m+1
 68     m=0
 69     print(答案:)
 70     while m<=(n-1):
 71         print(m+1,,result[m])
 72         m=m+1
 73 
 74 #下列为主函数,第一个模式负责调用上述newint()、new函数,
 75 # 并获得函数返回值即算式答案,与用户输入值进行比较。第二个模式则是生成算式题目。
 76 print(请选择需要进行的操作(输入数字代号))
 77 print(1、四则运算)
 78 print(2、制作题库)
 79 n=int(input())
 80 if n==1:
 81     print(input "exit" to Quit)
 82     while True:
 83         k = random.randint(0, 1)  #0表示真分数的运算,1表示整数的运算
 84         if k == 0:
 85             result = newfra()
 86             jg = input()
 87             if jg == exit:
 88                 break;
 89             sr = Fraction(jg)  #化为分数形式
 90             if sr == result: #检测输入(sr)的答案与正确答案是否一致
 91                 print(right)
 92             else:
 93                 print(error. the Tight answer is, result)
 94         else:
 95             result = newint()
 96             jg = input()
 97             if jg == exit:
 98                 break;
 99             sr = float(jg)
100             if sr == result:
101                 print(right)
102             else:
103                 print(error. the Tight answer is, result)
104 if n==2:
105     newtest()

 

运行效果

1四则运算效果

   技术图片技术图片

 

 

(2)制作题库效果

 技术图片

 

 

效能分析:

 技术图片

技术图片

 

 

 

 

PSP表格:

 

 

预计耗时(分钟)

是实际耗时(分钟)

Planning

计划

25

20

Estimate

估计这个任务需要多少时间

/

/

Development

开发

120

240

Analysis

需求分析

10

10

Design Spec

生成设计文档

/

/

Design Review

设计复审(和同事审核设计文档)

/

/

Coding Standerd

代码规范(为目前的开发制定合适的规范)

/

/

Design

具体设计

5

10

Coding

具体编码

70

90

Code Review

代码复审

5

10

Text

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

20

30

Reporting

报告

10

20

Text Report

测试报告

10

20

Size Measurement

计算工作量

5

5

Postmortem & Process Improvement Plan

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

10

5

Sum

合计

300

460

小学四则运算题

标签:选择   pos   函数返回值   test   error   pen   效果   第一个   cells   

原文地址:https://www.cnblogs.com/rekosama/p/10571357.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!