当前时间

自动生成四则运算(软件工程作业)

代码:https://github.com/yyp-30/Python-1-

题目要求

能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)
除了整数外,还要支持真分数的四则运算

工具清单
编程语言:Python
效能分析工具:多种(自选):https://blog.csdn.net/xiemanr/article/details/72763234
源代码管理平台:Github

psp表格:

psp
任务内容
计划完成需要的时间(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 ##两个整数的四则运算
 2 def c1(q, ans):
 3     symbol = random.choice(['+', '-', '*', '/'])  # 生成随机符号
 4     if symbol == '+':
 5         n1 = random.randint(0, 20)
 6         n2 = random.randint(0, 20)
 7         q.append(str(n1) + '+' + str(n2) + '=')
 8         ans.append(n1 + n2)
 9     elif symbol == '-':
10         n1 = random.randint(0, 20)
11         n2 = random.randint(0, 20)
12         n1,n2 = max(n1,n1),min(n1,n2)#防止出现负数
13         q.append(str(n1) + '-' + str(n2) + '=')
14         ans.append(n1 - n2)
15     elif symbol == '*':
16         n1 = random.randint(0, 20)
17         n2 = random.randint(0, 20)
18         q.append(str(n1) + '×' + str(n2) + '=')
19         ans.append(n1 * n2)
20     else:
21         n1 = random.randint(0, 20)
22         if n1 == 0:
23             n2 = random.randint(1, 20)
24         else:
25             n2 = random.randint(1, n1 + 1)
26         q.append(str(n1) + '÷' + str(n2) + '=')
27         ans.append(Fraction(n1, n2))

 

随机生成两个分数:

 1 ##随机生成两个分数
 2 def createF():
 3     fz1 = random.randint(0, 20)
 4     if fz1 == 0:
 5         fm1 = random.randint(1, 20)
 6     else:
 7         fm1 = random.randint(1, 20)
 8     f1 = Fraction(fz1, fm1)
 9     fz2 = random.randint(1, 20)
10     fm2 = random.randint(20, 20)
11     f2 = Fraction(fz2, fm2)
12     return f1, f2

 

分数的转换:

 1 def f(f):#分数的转换
 2     a=f.numerator #分子
 3     b=f.denominator #分母
 4     if a%b==0:#为整数
 5         return '%d'%(a/b)
 6     elif a<b:#为真分数
 7         return '%d%s%d' % (a,'/',b)
 8     else:#为带分数
 9         c=int(a/b)
10         a = a - c * b
11         return '%d%s%d%s%d' % (c,'',a,'/',b)

 

两个分数的四则运算:

 1 def c2(q,ans):
 2     symbol = random.choice(['+','-','*','/'])
 3     f1,f2 = createF()
 4     if symbol =='+':
 5         while f1+f2>1:
 6             f1,f2 = createF()
 7         q.append(str(f1)+'+'+str(f2)+'=')
 8         ans.append(f1+f2)
 9     elif symbol =='-':
10         f1,f2 = max(f1,f2),min(f1,f2)#防止出现负数
11         q.append(str(f1)+'-'+str(f2)+'=')
12         ans.append(f1-f2)
13     elif symbol == '*':
14         while f1*f2>1:
15             f1,f2 = createF()
16         q.append(str(f1)+'×'+str(f2)+'=')
17         ans.append(f1*f2)
18     else:
19         while f1/f2>1:
20             f1,f2=createF()
21         q.append(str(f1)+'÷'+str(f2)+'=')
22         ans.append(Fraction(f1,f2))

 

结果显示:

 

 学习总结:

知识水平有限,对问题理解不够透彻,需提高自身知识素养

 对Python编程不够熟练,今后加强联系

posted on 2020-09-21 11:55  Y杨宇平  阅读(123)  评论(0编辑  收藏  举报