Python初学者练习:计算从0到N的所有整数的总和

115 阅读1分钟

创建一个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