看到一个题目:
给定一个数组 nums 和一个值 val,
你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度
这是一个简单的题目,给定一个数组,如果存在val 就原地去删除这个val,然后返回新的数组的长度。
那么我们可以用for循环去取元素,如果元素等于val。那么就删除这个元素。
那么我们的代码应该如何实现呢,我们这里给下示例。
class Solution:
def removeElement(self,nums:list,val)->int:
if len(nums)==0:
return 0
if len(nums)==1:
if nums[0]==val:
return 0
else:
return 1
for item in(nums):
if item==val:
nums.remove(item)
return len(nums)
思路,我们先考虑一些特殊的场景,特殊的场景先简单的排除,这样便于后续的操作。
那么我们可以写些测试用例,去看看,能否满足场景。要学会去测试我们的代码。
from .listremove import Solution
import unittest
class testcase(unittest.TestCase):
def setUp(self) -> None:
self.sonlution=Solution()
def testone(self):
assertreslut=self.sonlution.removeElement([],0)
self.assertEqual(assertreslut,0)
def testtwo(self):
assertreslut=self.sonlution.removeElement([1],0)
self.assertEqual(assertreslut,1)
def testthree(self):
assertreslut=self.sonlution.removeElement([0],0)
self.assertEqual(assertreslut,0)
def testfour(self):
assertreslut=self.sonlution.removeElement([0,1],2)
self.assertEqual(assertreslut,2)
def testfive(self):
assertreslut=self.sonlution.removeElement([0,1],1)
self.assertEqual(assertreslut,1)
def tearDown(self) -> None:
pass
if __name__=="__main__":
unittest.main()
测试结果
代码覆盖率
简单的进行覆盖率的统计。对运行结果进行一个简单的分析,做到心中有数。代码覆盖率的百分之百不代表没bug,但是代码覆盖率没有100%一定漏测。