一、Github地址:https://github.com/nullcjm/mypage

项目搭档:3117004662梁子豪 3117004648陈俊铭

二、PSP表格:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30

 30

· Estimate

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

 30

 30

Development

开发

 800

840

· Analysis

· 需求分析 (包括学习新技术)

 120

100

· Design Spec

· 生成设计文档

 30

 30

· Design Review

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

 30

 30

· Coding Standard

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

 20

 20

· Design

· 具体设计

 60

 60

· Coding

· 具体编码

 480

 520

· Code Review

· 代码复审

 30

 40

· Test

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

 30

 40

Reporting

报告

 90

 90

· Test Report

· 测试报告

 40

 40

· Size Measurement

· 计算工作量

 20

 30

· Postmortem & Process Improvement Plan

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

 30

 20

合计

 940

 960

 

三、设计实现过程:

四、代码说明:

在遇到把假分数转换成带分数的时候遇到了令我们哭笑不得的情况,或许是当时2个人已经不清醒了,连Fraction最本来的用法都忘了。在生成表达式的分数时用了比较笨的办法,分别生成分子和分母,通过向下取整的‘//’运算获得带分数的整数部分,通过求余运算获得分子部分,本来打算用同样的方法在判对错功能时,突然懵住了,本来想用正则表达式把提交答案的分子分母分离出来再转换成带分数,再与生成的正确答案比较(因为前面把生成的答案变为带分数了),觉得很麻烦。后来经提醒Fraction的最基本用法就有把分数分子分母分离的功能(我们2个真的是憨憨),知道这后转换其实很简单(精神抖擞.jpg)。

def change_fraction(s):
    """
    把分数转换为带分数
    :param s:原分数
    :return :带分数
    """
    fra = Fraction(s)
    if fra.numerator % fra.denominator == 0:
        fra = int(fra.numerator / fra.denominator)
        return str(fra)
    elif fra.numerator > fra.denominator:
        integer = fra.numerator // fra.denominator
        fra = fra - integer
        return "'".join([str(integer), str(fra)])
    else:
        return s

五、测试运行:

1.生成一万道题

2.生成答案

3.检查对错

4.输入指令

六、项目小结:

这次结对编程收获匪浅,两个人的通力协作带来了1+1>2的力量。两人协作的效率比个人要好得多,比起自己百度,还是两人讨论更省事。

真假分数的转化想了很久,网上也只搜到了数学的解决方法,后来去问了别人,得知了Fraction才解决了问题。项目这种事果然是人越多,问题越容易解决。

01-25 16:27