创建一个Python函数,对从0到一个数字N的所有数字进行求和。如果提供一个非正数或非整数,该函数应返回0。
在这个视频中,即该系列的第一个视频,我向你展示了如何使用三种不同的解决方案来解决一个简单的Python问题,同时确保我们写出单元测试。一个好的习惯要从早期开始学习和培养。
这是我们的热身练习,更多的练习将陆续展开。
Python解决方案1--使用递归
def sum_all_up(number:int) -> int:
if number > 0:
return number + sum_all_up(number - 1)
else:
return 0
Python 解决方案 2 - 在 Python 中使用 sum() 和 range() 函数
def sum_all_up(number:int) -> int:
return sum(range(number + 1))
Python解决方案3--使用numpy.range(..).sum()。
import numpy
def sum_all_up(number: int) -> int:
return numpy.arange(number + 1).sum()
使用Python unittest库进行单元测试
import unittest
class TestStringMethods(unittest.TestCase):
def test_sum_all_up_of_zero_returns_zero(self):
self.assertEqual(0, sum_all_up(0))
def test_sum_all_up_of_one_returns_one(self):
self.assertEqual(1, sum_all_up(1))
def test_sum_all_up_of_two_returns_three(self):
self.assertEqual(3, sum_all_up(2))
def test_sum_all_up_of_three_returns_six(self):
self.assertEqual(6, sum_all_up(3))
def test_sum_all_up_of_four_returns_ten(self):
self.assertEqual(10, sum_all_up(4))
def test_sum_all_up_of_negative_number_returns_0(self):
self.assertEqual(0, sum_all_up(-10))
if __name__ == '__main__':
unittest.main(argv=['first-arg-is-ignored'], exit=False)
......
----------------------------------------------------------------------
Ran 6 tests in 0.013s
OK