Github项目地址:https://github.com/foldline/-
题目:实现自动生成四则运算题目的命令行程序。
(1)题目要求:
a. 能自动生成小学四则运算题目
b. 除了整数外,还要支持真分数的四则运算
(2)思路:
a.四则运算加减乘除,采用两个随机数,由于不能出现负数,所以在对两个随机数进行减法运算的时候,需要进行比较大小,而除法在运算中,除数不能取0。
b. 进行真分数运算应注意假分数的影响
(3)实现过程
定义函数:用def szys()实现随机生成四则运算,用def test()通过调用syzs()实现题库的制作.
所以代码分为三个部分,第一部分是生成随机四则运算,最后输出算式并返回正确答案;第二部是用户通过输入一个整数来输出所需要的算式,当输出的算式达到目标数量后,便一一输出答案;第三部分为主函数,需要用户自己选择模式,当输入是‘1’时,是为四则运算,通过调用syzs()函数得到算式和返回值,用户输入答案后,便与用户输入值进行比较。当输入是‘2’时,是生成题库,并在最后输出答案。
(4)源代码:
# -*- coding: utf-8 -*-
"""
Created on Mon Sep 21 11:34:09 2020
@author: ABC
"""
import random
import profile
#四则运算
def xxsf():
sym = ['+', '-', '×', '÷']
f= random.randint(0, 3)#用于随机出算法题
n1 = random.randint(1, 100)
n2 = random.randint(1, 100)
result = 0
yu = 0
flag = 0
if f== 0:#加法
result = n1 + n2
elif f == 1:#减法,要先比较大小,防止输出负数
n1, n2 = max(n1, n2), min(n1, n2)
result = n1 - n2
elif f== 2:#乘法
result = n1 * n2
elif f == 3:#除法,要比较大小,并循环取整除
n1, n2 = max(n1, n2), min(n1, n2)
result = int(n1 / n2)
yu = n1%n2
flag = 1
print(n1, sym[f], n2, '= ', end='')
return result,yu,flag
#制作题库
def test():
sym = ['+', '-', '×', '÷']
print('输入所需要的题目数量')
n=int(input())
result =[]
yu = []
flag = []
m=0
while m<=(n-1):
print(m+1,end='、')
xxsf1 = xxsf()
result .append(xxsf1[0])
yu .append(xxsf1[1])
flag .append(xxsf1[2])
print(' ')
m=m+1
m=0
print('对应的答案:')
while m<=(n-1):
if flag[m] == 1:
print(m+1,'、',result [m],' 除法余数为:',yu [m])
else:
print(m+1,'、',result [m])
m=m+1
profile.run('xxsf()')#对xxsf函数进行效能分析
print('\n')
profile.run('test()')#对test函数进行效能分析
print('\n')
print('选择想要的模式')
print('1、进行四则运算')
print('2、制作题库(可选择模式有:1与2)')
n=int(input())
#当输入1时,进行四则运算,调用函数xxsf()
if n==1:
while True:
xxsf1 = xxsf()
result = xxsf1[0]
yu = xxsf1[1]
flag = xxsf1[2]
j= input()
s= int(j)
if flag ==1:
x = input()
y = int(x)
if s== result and y== yu:
print('right')
else:
print('error.the answer is', result ,' 余数为:',yu)
elif flag != 1:
if s== result:
print('right')
else:
print('error.the answer is', result )
#当输入2时,进行制作题库
if n==2:
test()
(5)测试运行:
第一个模式
第二个模式
(6)PSP表格:
PSP2.1
Personal Software Process Stages
预估耗时(分钟)
实际耗时(分钟)
Planning
计划
30
20
· Estimate
· 估计这个任务需要多少时间
180
160
Development
开发
180
160
· Analysis
· 需求分析 (包括学习新技术)
/
/
· Design Spec
· 生成设计文档
/
/
· Design Review
· 设计复审 (和同事审核设计文档)
/
/
· Coding Standard
· 代码规范 (为目前的开发制定合适的规范)
/
/
· Design
· 具体设计
30
20
· Coding
· 具体编码
180
120
· Code Review
· 代码复审
30
20
· Test
· 测试(自我测试,修改代码,提交修改)
30
30
Reporting
报告
/
/
· Test Report
· 测试报告
/
/
· Size Measurement
· 计算工作量
/
/
· Postmortem & Process
Improvement Plan
· 事后总结, 并提出过程改进计划
/
/
合计
( 7 )解题思路:
开发出一个命令行小程序,可以实现自动生成小学生100以内四则运算题目的功能。
(1)可以在线逐题练习,系统会自动评判正误并给与反馈
(2)可以自动生成题库并给出参考答案
(3) 实现过程
定义函数:用def szys()实现随机生成四则运算,用def test()通过调用syzs()实现题库的制作.所以代码分为三个部分,第一部分是生成随机四则运算,最后输出算式并返回正确答案;第二部是用户通过输入一个整数来输出所需要的算式,当输出的算式达到目标数量后,便一一输出答案;第三部分为主函数,需要用户自己选择模式,当输入是'1'时,是为四则运算,通过调用syzs()函数得到算式和返回值,用户输入答案后,便与用户输入值进行比较。当输入是'2'时,是生成题库,并在最后输出答案。