Напишите функцию, которая принимает на вход число 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
и посмотреть время выполнения.
Можно код сделать более лаконичным, используя тернарную опреацию в условии.