第二次结对编程作业
一.博客和Github
二.各自分工
- 于婕负责出牌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算法|