Напишите функцию, которая принимает на вход число N и возвращает сумму всех чисел от 1 до N
включительно.
Функция должна называться calculate_sum
.
Функция должна принимать одно целочисленное значение N
в качестве аргумента.
Функция должна вернуть сумму всех чисел от 1 до N.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Требования к тестам с использованием pytest
:
Напишите тесты для функции calculate_sum
с различными значениями N
, включая положительные и отрицательные числа, а также нуль.
Убедитесь, что функция возвращает корректную сумму для всех входных данных.
Пишите ваши варианты в комментариях.
Наше решение:
# sum_of_numbers.py def calculate_sum(N): return sum(range(1, N + 1)) # test_sum_of_numbers.py import pytest from sum_of_numbers import calculate_sum def test_calculate_sum_positive(): assert calculate_sum(5) == 15 def test_calculate_sum_negative(): assert calculate_sum(-5) == 0 def test_calculate_sum_zero(): assert calculate_sum(0) == 0 def test_calculate_sum_large(): assert calculate_sum(100) == 5050
В этом примере функция calculate_sum
принимает число N
, затем использует функцию sum и range
для подсчета суммы чисел от 1 до N
. Тесты проверяют правильность работы функции для различных входных данных.
def calculate_sum(N):
if N >= 1:
K = 1
else:
K = -1
S = (N + 1) * (K * (N – 1 + K)) // 2
return(S)
Эта функция имеет константное время выполнения в отличие от предложенной, которая имеет как минимум порядок N.
Например, взять N= 1000000000000000 или -1000000000000000
и посмотреть время выполнения.
Можно код сделать более лаконичным, используя тернарную опреацию в условии.