Python: 渐进猜数字游戏 <8> 代码优化 与 结项
2016-08-15 10:11
411 查看
1. 代码优化
优化什么?
从评价软件质量的6个要素来解答这个问题。软件质量6要素:1)功能性;2)可靠性;3)易使用性;4)效率;5)可维修性;6)可移植性
软件开发对于代码的评价也需要从这6个要素着手,为了达到软件质量的要求,代码应满足可读性和可维护性,需要从代码架构、设计和实现来满足。
首先,代码必须保证功能,以保证软件可用、可靠,同时保证软件执行的效率等非功能需要。测试是一种有效的手段。
其次,代码必须满足可读性,以保证代码在软件的生命中可以被不同的人阅读、修正错误、改进功能。代码开发文档、注释可以在很大程度上保证可读性。
1)给代码加说明 / 注释
* 文件说明:名称, 摘要, 详细说明, 作者, 时间, 更新记录。。。。。。
* 函数 / 类 / 方法说明:函数/类/方法名, 摘要, 参数列表说明。。。。。。
* 必要的注释:变量,逻辑单元,算法说明。。。。。。
简洁、明确、清晰的注释是代码实现的良好习惯,个人和团队良好的编码规范中对注释的要求必不可少。
2)测试代码
* 单元测试(参见,The Python Standard Library, 25.3.unittest
— Unit testing framework)
* 专门测试(具体方法,参见The art of software testing(《软件测试的艺术》 梅耶(Myers, G. J.)))
由专门的测试人员,制定测试策略、设计测试用例,执行特定的功能测试 / 集成测试 / 系统测试。。。。。。
2. 结项Python猜数字游戏
断断续续、改改停停,总算完成了Python猜数游戏,完成了对Pthon语言的初步介绍。
开发语言是一门工具,了解和使用一门工具可以帮助你更加有效的解决现实世界的问题。
使用工具解决问题,业余与专业也许就在于此:基本使用 还是 研究与创新。
正如你能熟练使用手机和各种APP,但不必了解手机怎么造出来的、APP怎么实现的,否则你要么崩溃掉,要么成为专家。
不论测试还是开发,不论是IT人员还是非IT人员,不可否认,代码的入门的难度越来越低,开发语言越来越像一种工具,不再是某些人的专项。
如果你有问题,你想解决问题,你有足够的勇气和态度面对问题,那么一定会有很多种方法解决你的问题。
难,是理由,也是一种面对问题的态度。
你愿意选择什么?
优化什么?
从评价软件质量的6个要素来解答这个问题。软件质量6要素:1)功能性;2)可靠性;3)易使用性;4)效率;5)可维修性;6)可移植性
软件开发对于代码的评价也需要从这6个要素着手,为了达到软件质量的要求,代码应满足可读性和可维护性,需要从代码架构、设计和实现来满足。
首先,代码必须保证功能,以保证软件可用、可靠,同时保证软件执行的效率等非功能需要。测试是一种有效的手段。
其次,代码必须满足可读性,以保证代码在软件的生命中可以被不同的人阅读、修正错误、改进功能。代码开发文档、注释可以在很大程度上保证可读性。
1)给代码加说明 / 注释
* 文件说明:名称, 摘要, 详细说明, 作者, 时间, 更新记录。。。。。。
* 函数 / 类 / 方法说明:函数/类/方法名, 摘要, 参数列表说明。。。。。。
* 必要的注释:变量,逻辑单元,算法说明。。。。。。
简洁、明确、清晰的注释是代码实现的良好习惯,个人和团队良好的编码规范中对注释的要求必不可少。
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # Copyright (c) 2016,Liexun Studio # All Rights Reserved. # # File Name: GunessNum.py # Summary: Guness Num Game # 1. Generate random number and check the number correction # 2. Get user input and check the number correction # 3. Compare random and user input, output result # # Version: 1.0 # Author: Roy # End Date: 08/15/2016 # # Update Version: 1.X # Author: # End Date: ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #encode="utf-8" import random GC = 5 #define try account for guess randNum = 0 def startGame(): print "*************************************************************" print "************************ Guess Number ***********************" print "*************************************************************" def randNumber(): #Get system random number: 4 bits, without duplication randNum = random.sample(xrange(0,9),4) ##print type(randNum) print "\nSystem random number: " + str(randNum) + "\n" return randNum #check the correction of number def checkNum(inNum): #Is number? if inNum.isdigit() == True: #4 digit? if len(inNum) == 4: #duplicate? for i in range(4): if inNum.count(inNum[i]) == 1: if i != 3: pass else: print "Correct!" return True else: print "Duplicate, re-input." return False break else: print "Not 4 digit, re-input." return False else: print "Not number, re-input." return False #compare and output result: XAXB def compNum(rnum,inum): ca = 0 cb = 0 for i in range(4): if inum[i] in rnum: if rnum[i] == inum[i]: ca += 1 else: cb += 1 return str(ca) + "A" + str(cb) + "B" #try to guess number as system define: GC def gunessNumber(): randNum = randNumber() inNum = raw_input(u"Input your guess number: ") #get user input for gc in range(GC): while not checkNum(inNum): #get user input and check the correction inNum = raw_input(u"Input your guess number: ") else: print str(gc+1) + "--" + compNum(map(lambda x: str(x), randNum),inNum) #ouput the result if compNum(map(lambda x: str(x), randNum),inNum) == "4A0B": #iteration until guess the correct numer or achieve the system define number print "Congratulations!!!" break elif gc < 4: inNum = raw_input(u"Input your guess number: ") else: print "Unfortunately, Faild, Please try again." if __name__ == '__main__': startGame() gunessNumber()
2)测试代码
* 单元测试(参见,The Python Standard Library, 25.3.unittest
— Unit testing framework)
#encode="utf-8" import unittest from GunessNum import checkNum class Test_GunessNumber(unittest.TestCase): #Executed before each test, initialize test def setup(): pass #Executed after each test, clear up test def teardown(): pass def test_checknumber(self): self.assertFalse(checkNum("123")) self.assertFalse(checkNum("1233")) self.assertFalse(checkNum("12356")) self.assertTrue(checkNum("1234")) if __name__ == '__main__': test_suite = unittest.TestSuite() test_suite.addTest(Test_GunessNumber("test_checknumber")) runner = unittest.TextTestRunner() runner.run(test_suite)
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)] on win32 Type "copyright", "credits" or "license()" for more information. >>> =================== RESTART: G:\Project\Python\Test_GN.py =================== Not 4 digit, re-input. Duplicate, re-input. Not 4 digit, re-input. Correct! . ---------------------------------------------------------------------- Ran 1 test in 0.020s OK >>>
* 专门测试(具体方法,参见The art of software testing(《软件测试的艺术》 梅耶(Myers, G. J.)))
由专门的测试人员,制定测试策略、设计测试用例,执行特定的功能测试 / 集成测试 / 系统测试。。。。。。
2. 结项Python猜数字游戏
断断续续、改改停停,总算完成了Python猜数游戏,完成了对Pthon语言的初步介绍。
开发语言是一门工具,了解和使用一门工具可以帮助你更加有效的解决现实世界的问题。
使用工具解决问题,业余与专业也许就在于此:基本使用 还是 研究与创新。
正如你能熟练使用手机和各种APP,但不必了解手机怎么造出来的、APP怎么实现的,否则你要么崩溃掉,要么成为专家。
不论测试还是开发,不论是IT人员还是非IT人员,不可否认,代码的入门的难度越来越低,开发语言越来越像一种工具,不再是某些人的专项。
如果你有问题,你想解决问题,你有足够的勇气和态度面对问题,那么一定会有很多种方法解决你的问题。
难,是理由,也是一种面对问题的态度。
你愿意选择什么?
相关文章推荐
- Python: 渐进猜数字游戏 <1> 代码、测试与猜数字
- Python: 渐进猜数字游戏 <7> 数字比较 与 猜数字游戏V0.1版
- Python: 渐进猜数字游戏 <6> 运算符和函数
- Python: 渐进猜数字游戏 <2> 我的游戏
- Python: 渐进猜数字游戏 <5> 控制语句
- Python: 渐进猜数字游戏 <3> 基本输入输出
- Python: 渐进猜数字游戏 <4> 数据类型及随机数
- 一笔画游戏路径搜索代码<未优化>
- <Think Python>中统计文献单词的处理代码
- 弦月下的SQL<8> SQL存储过程和触发器代码
- Python<8>有关字典
- 【代码】<python数据分析> 向量加法比较
- Android 布局Layout 性能优化<8>
- 优化网站提高搜索:首页html代码的<head>和</head>之间的内容
- C语言冒泡排序及选择排序优化<代码>
- Android Lint工具 优化代码 <12>
- <<A Byte Of Python>>第10章的例子——备份文件和目录
- 海量数据库查询优化<转>
- 解决并清除SQL被注入<script>恶意病毒代码的语句
- [转]在<iframe>内嵌窗口中调用父窗口的javascript代码