小学四则运算题
Posted rekosama
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小学四则运算题相关的知识,希望对你有一定的参考价值。
Python四则运算
GitHub项目地址:https://github.com/rekosama/-/commit/230e563197c9d6cee3d04e8fc2efa8156c3533d9
题目:
(1)能自动生成小学四则运算题目,并且不能出现负数;
(2)能支持真分数的四则运算;
思路:
(1)四则运算加减乘除,采用两个随机数,由于不能出现负数,则对两个随机数进行比较大小再进行减法运算,除法一向特殊,所以在随机数的取值范围中设置不包括0。另外,整数类型除法中两数相除不能出现无限循环小数,故需要对除法做限制。
(2)真分数运算在pycharm中导入fractions库,其余类似。
(3)题库的生成,由于其随机性需要导入random函数。
实现过程:
设计三个函数:
(1)newint() 生成整数四则运算
(2)newfra() 生成真分数四则运算
(3)newtest() 生成制定指定数量的四则运算题目
函数关系:
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 |
以上是关于小学四则运算题的主要内容,如果未能解决你的问题,请参考以下文章