第二次结对编程作业

一.博客和Github

朱玥轩
于婕
github
UI视频

二.各自分工

  • 于婕负责出牌AI算法,写博客。
  • 朱玥轩负责前端开发,写博客。

三.PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟 实际耗时(分钟)
Planning 计划 30 24
Estimate 估计这个任务需要多少时间 30 24
Development 开发 1510 1730
Analysis 需求分析 (包括学习新技术) 600 780
Design Spec 生成设计文档 30 20
Design Review 设计复审 30 10
Coding Standard 代码规范 (为目前的开发制定合适的规范) 10 10
Design 具体设计 60 40
Coding 具体编码 360 300
Code Review 代码复审 60 90
Test 测试(自我测试,修改代码,提交修改) 360 480
Reporting 报告 90 90
Test Repor 测试报告 30 30
Size Measurement 计算工作量 30 30
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 30
totall 合计 1630 1844

四.思路描述与设计实现说明

1.网络接口的使用

图出自百度

网络接口的使用就是用的python的requests库调用助教提供的接口。

2.代码组织与内部实现设计(类图)

3.说明算法的关键与关键实现部分流程图

算法的关键部分是发牌后在玩家的13张手牌中先选出最大牌型(若牌型相同则比较牌面)先分好尾墩,再从剩余的
8张牌中码好中墩,剩余3张为前墩

五.关键代码解释

有价值的代码片段及其解释

用requests库来调用接口

import requests, json
github_url = "
data = json.dumps({'name':'test', 'description':'some test repo'})
r = requests.post(github_url, data, auth=('user', '*****'))
print r.json

判断牌型(以顺子为例)

def foo1(m1):
    def foo(m1):
        # 字典作为容器
        m = dict()
        for i in range(len(m1)):
        	# 初始长度为1
            n=1
            # 如果里面条件成立,开始循环
            while 1:
            	# 如果下标加上顺子长度大于等于列表长度, 则退出循环
                if i+n >= len(m1):
                    break
                # 如果列表下标 i+n的元素 减去 i的元素, 差值是n, 则长度加1, 字典更新出key和value, 寻找长度加1(因为以及排序了, 所以如果是顺子, 肯定索引差值就等于数值差值)
                elif m1[i+n] - m1[i] == n:
                    max_length = n+1
                    m['%s' % m1[i]] = max_length
                    n += 1
                # 如果数值差值不等于索引差值, 则长度保留为上一次的差值,  退出循环.
                else:
                    break

六.性能分析与改进

算法和代码本身都有很多问题,挣扎到最后都没有成品OTZ

1.描述你改进的思路

没有详细的改进思路,进一步查资料再作调整

2.展示性能分析图和程序中消耗最大的函数

七.遇到的代码模块异常或结对困难及解决办法

1.问题描述

  • 朱玥轩:

    • python写GUI比较难写。
    • 接口调用不怎么会,看了很多csdn博客更不知道写的是调用接口的代码还是写接口的代码。
    • 接口调用一开始不知道用哪种方法,urllib2, httplib2,pycurl,requests难以抉择 。
    • 后端的调用难以实行,一开始没想到还要调用后端。
  • 于婕:

    • 对用什么算法实现发牌码牌没有思路
    • 不懂使用第三方库
    • 写代码过程中错漏很多

2.做过哪些尝试

  • 朱玥轩:

    • 尝试用之前第一次结对的界面来做ui,发现找不到实现的方法,改用python的easygui。
    • 接口调用尝试用python的requests库。
  • 于婕:

    • 查阅资料找到合适的算法
    • 尝试使用pygame

3.是否解决

1.朱玥轩:部分解决
2.于婕:部分解决

4.是否有收获

1.朱玥轩:这次下定决心学了python,非常感谢b站的视频让我恶补了之前想学又没学的python。在此次作业过程中,也了解到一些接口调用的算法,也学到了比较浅显的Tkinter。
2.于婕:了解了python受欢迎的地方以及和c++、java等语言的不同之处,懂得使用第三方工具

九.评价你的队友

1.值得学习的地方

  • 朱玥轩:小伙伴真的很负责啊,把很多事情都安排的井井有条的,分工也很明确,此次结对过程中也很努力,经常熬夜学习,比我还能熬,头发却比我还多,哭
  • 于婕:队友学习能力实践能力都比我强很多,很会跟别人沟通,合作意识比我强太多,两次结对作业都多亏了她的鼓励和帮忙。

2.需要改进的地方:

  • 朱玥轩:希望小伙伴能够多多交流一下实践上的问题吧,也希望不要这么熬夜咯,连续三天熬夜对身体真的很不好。
  • 于婕:我们两个都有些拖延症,编程的路上我们都有很长的路要走,希望之后也能一起加油提升自己的能力。

十.学习进度条

|第N周|新增代码(行)|累计代码(行|本周学习耗时(小时)|累计学习耗时(小时)|重要成长|
|:------😐:------: |:------: | :------: | :------: |
|1|0|0|5|5|学习了一些python|
|2|100|100|5|10|学习了一些python和接口知识|
|3|300|400|13|28|学到了一些tkinter知识,学到了较多的python算法|

posted on 2019-10-15 22:36  猪肝儿  阅读(181)  评论(3编辑  收藏  举报