Python: 渐进猜数字游戏 <8> 代码优化 与 结项

    xiaoxiao2025-06-25  5

    1. 代码优化

      优化什么?

      从评价软件质量的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人员,不可否认,代码的入门的难度越来越低,开发语言越来越像一种工具,不再是某些人的专项。

      如果你有问题,你想解决问题,你有足够的勇气和态度面对问题,那么一定会有很多种方法解决你的问题。

      难,是理由,也是一种面对问题的态度。

      你愿意选择什么?

               

    转载请注明原文地址: https://ju.6miu.com/read-1300331.html
    最新回复(0)