# 导航

需求分析

题目生成器的主要功能及工作流程：

1.根据用户输入的参数出题

2.计算该题的答案

3.用户作答

4.比对答案作出正误判断并反馈

拓展功能:

1.对于用户错误的回答，会进行纠错并加入错题集。 输入calc.py -e *（*代表数字）即可重新练习*道错题

2.支持带括号的多元复合运算

设计实现

 1     digit = []
2     sign = []
3     sign_list = ['+','-','×','÷']
4     mul = random.randint(1,3)
5     for i in range(mul+1):
6         int_temp = random.randint(1,10)
7         a = random.randint(1,9)
8         b = random.randint(a+1,10)
9         fra_temp = Fraction(a,b)
10         temp = random.choice([int_temp,fra_temp])
11         digit.append(temp)
12     for i in range(mul):
13         temp = random.choice(sign_list)
14         sign.append(temp)

 1 def ques_builder(digit,sign,sign_order):
2     digit,sign = digit[:],sign[:]
3     mul = len(sign)
4     for i in range(mul):
5         index = sign_order.index(1)
6         if jug(index,sign):
7             digit[index] = '('+str(digit[index])+sign[index]+str(digit[index+1])+')'
8         else:
9             digit[index] = str(digit[index])+sign[index]+str(digit[index+1])
10         del digit[index+1]
11         del sign[index]
12         sign_order = [i-1 for i in sign_order]
13         sign_order.remove(0)
14     ques = digit[0]+'='
15     return ques

 1 def jug(index,sign):
2     i,p = sign[index],sign[index-1]
3     if (i=='+' or i=='-') and (('×'in sign) or ('÷'in sign)):
4         return True
5     if index!=0:
6         if (i=='+' or i=='-') and (p=='-'):
7             return True
8         if (i=='×' or i=='÷') and (p=='÷'):
9             return True
10     return False

    answer = input()
key = str(ques_key(digit,sign,sign_order))
if '/' in key:
if len(temp)==1:
else:
print ('正确!')
return False
else:
print ('不正确!',ques,key)
err = {ques:key}
error_gather(err)
return True

 1 def error_gather(err):
2     errfile = open('error','r')
4     errfile.close()
5     error.update(err)
6     errfile = open('error','w')
7     errfile.write(str(error))
8     errfile.close()
9
10 def error_extract(errnum):
11     errfile = open('error','r')
13     errfile.close()
14     ques = list(error.keys())
15     if len(ques)==0:
16         print('目前没有错题')
17         exit()
18     for i in range(errnum):
19         print(str(i+1)+': '+ques[i],end='')
21         if '/' in error[ques[i]]:
23             if len(temp)==1:
25             else:
28             print('正确!')
29         else:
30             print('不正确!')
31         if i==len(ques)-1:
32             print('已经没有错题了')
33             exit()

测试运行

运行截图：

PSP

 Personal Software Process Stages Estimated Time(min) Actual Time (min) 计划 10 6 ·任务估计 10 6 开发 91 124 ·需求分析 (包括学习新技术) 10 8 ·生成设计文档 5 6 ·设计复审 5 3 ·代码规范 1 1 ·具体设计 5 8 ·具体编码 60 83 ·代码复审 5 2 ·测试（自我测试，修改代码，提交修改） 10 13 报告 30 24 ·测试报告 15 18 ·计算工作量 10 6 ·提出过程改进计划 5 0

总结

posted on 2017-03-03 19:35  Jahowz  阅读(483)  评论(11编辑  收藏  举报