Python сумма чисел диапазона

Python: Агрегация данных (Числа)

Отдельный класс задач, который не обходится без циклов, называется агрегированием данных. К таким задачам относятся: поиск максимального или минимального значения, суммы, среднего арифметического. В их случае результат зависит от всего набора данных.

Чтобы рассчитать сумму, нужно сложить все числа, а чтобы вычислить максимальное, нужно их сравнить. С такими задачами хорошо знакомы бухгалтеры или маркетологи. Они работают в таблицах Microsoft Excel или Google Tables.

В этом уроке разберем, как агрегация применяется к числам и строкам.

Допустим, нам нужно найти суммы набора чисел. Реализуем функцию, которая складывает числа в указанном диапазоне, включая границы. Диапазон — ряд чисел от конкретного начала до определенного конца. Например, диапазон [1, 10] включает целые числа от одного до десяти.

sum_numbers_from_range(5, 7) # 5 + 6 + 7 = 18 sum_numbers_from_range(1, 2) # 1 + 2 = 3 # [1, 1] диапазон с одинаковым началом и концом — тоже диапазон # Он включает одно число — саму границу диапазона sum_numbers_from_range(1, 1) # 1 sum_numbers_from_range(100, 100) # 100 

Чтобы реализовать такой код, понадобится цикл, так как сложение чисел — это итеративный процесс, то есть повторяется для каждого числа. Количество итераций зависит от размера диапазона.

def sum_numbers_from_range(start, finish): # Технически можно менять start # Но входные аргументы нужно оставлять в исходном значении # Это сделает код проще для анализа i = start sum = 0 # Инициализация суммы while i  

Структура цикла здесь стандартная: есть счетчик, который инициализируется начальным значением диапазона, цикл с условием остановки при достижении конца диапазона и изменение счетчика в конце тела цикла. Количество итераций в таком цикле равно finish - start + 1 . Для диапазона [5, 7] — это 7 - 5 + 1, то есть три итерации.

Главные отличия от обычной обработки — логика вычислений результата. В задачах на агрегацию всегда есть переменная, которая хранит внутри себя результат работы цикла. В коде выше это sum . Она изменяется на каждой итерации цикла — прибавляется следующее число в диапазоне: sum = sum + i .

Этот процесс выглядит так:

# Для вызова sum_numbers_from_range(2, 5) sum = 0 sum = sum + 2 # 2 sum = sum + 3 # 5 sum = sum + 4 # 9 sum = sum + 5 # 14 # 14 – результат сложения чисел в диапазоне [2, 5] 

У переменной sum есть начальное значение — с него начинается любая повторяющаяся операция. В примере выше — это 0 .

В математике есть понятие нейтральный элемент, и у каждой операции он свой. Операция с этим элементом не изменяет то значение, над которым работает. Например, в сложении любое число плюс ноль дает само число. При вычитании — то же самое. У конкатенации тоже есть нейтральный элемент — это пустая строка: '' + 'one' будет 'one'.

Задание

Реализуйте функцию multiply_numbers_from_range() , которая перемножает числа в указанном диапазоне включая границы диапазона. Пример вызова:

multiply_numbers_from_range(1, 5) # 1 * 2 * 3 * 4 * 5 = 120 multiply_numbers_from_range(2, 3) # 2 * 3 = 6 multiply_numbers_from_range(6, 6) # 6 

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Полезное

Определения

Источник

Python сумма чисел диапазона

Last updated: Feb 19, 2023
Reading time · 4 min

banner

# Table of Contents

# Sum all numbers in a range in Python

To sum all numbers in a range:

  1. Use the range() class to get a range of numbers.
  2. Pass the range object to the sum() function.
  3. The sum() function will return the sum of the integers in the range.
Copied!
start = 1 stop = 5 total = sum(range(start, stop)) print(total) # 👉️ 10 (1 + 2 + 3 + 4)

We used the range() class to get a range of numbers.

The range class is commonly used for looping a specific number of times in for loops and takes the following arguments:

Name Description
start An integer representing the start of the range (defaults to 0 )
stop Go up to, but not including the provided integer
step Range will consist of every N numbers from start to stop (defaults to 1 )

If you only pass a single argument to the range() constructor, it is considered to be the value for the stop parameter.

Copied!
# 👇️ [0, 1, 2, 3, 4] print(list(range(5))) total = sum(range(5)) print(total) # 👉️ 10

The example shows that if the start argument is omitted, it defaults to 0 and if the step argument is omitted, it defaults to 1 .

If values for the start and stop parameters are provided, the start value is inclusive, whereas the stop value is exclusive.

Copied!
# 👇️ [1, 2, 3, 4] print(list(range(1, 5))) total = sum(range(1, 5)) print(total) # 👉️ 10

If the value for the stop parameter is lower than the value for the start parameter, the range will be empty.

Copied!
# 👇️ [] print(list(range(5, 1))) total = sum(range(5, 1)) print(total) # 👉️ 0

The sum function can be used to calculate the sum of the numbers in the range.

The sum function takes an iterable, sums its items from left to right and returns the total.

The sum function takes the following 2 arguments:

Name Description
iterable the iterable whose items to sum
start sums the start value and the items of the iterable. sum defaults to 0 (optional)

# Sum the numbers in a range with a step in Python

If you need to get a range with a step, pass a value for the third argument of the range() class.

Copied!
start = 1 stop = 5 step = 2 total = sum(range(start, stop, step)) print(total) # 👉️ 4 (1 + 3) # 👇️ [1, 3] print(list(range(start, stop, step)))

When the step argument is provided, the range will consist of every N numbers from start to stop .

The value for the step argument defaults to 1 .

# Creating a reusable function

If you have to do this often, define a reusable function.

Copied!
def sum_numbers(start, stop): return sum(range(start, stop + 1)) print(sum_numbers(1, 3)) # 👉️ 6 (1 + 2 + 3) print(sum_numbers(1, 4)) # 👉️ 10 (1 + 2 + 3 + 4) print(sum_numbers(1, 5)) # 👉️ 15 (1 + 2 + 3 + 4 + 5)

The function takes start and stop values and sums the numbers from start to stop .

Notice that we added 1 to the stop value to make the range inclusive.

If you want to exclude the last number from the range, remove the addition operator.

Copied!
def sum_numbers(start, stop): return sum(range(start, stop)) print(sum_numbers(1, 3)) # 👉️ 3 (1 + 2) print(sum_numbers(1, 4)) # 👉️ 6 (1 + 2 + 3) print(sum_numbers(1, 5)) # 👉️ 10 (1 + 2 + 3 + 4)

# Sum the Integers from 1 to N in Python

Multiply by n + 1 and floor-divide by 2 to get the integers from 1 to N.

The result will be the sum of the integers from 1 to N (including N).

Copied!
# ✅ sum the integers from 1 to 5 n = 5 total = n * (n + 1) // 2 print(total) # 👉️ 15

The example multiplies n by n + 1 and floor-divides by 2 to get the sum of the integers from 1 to n .

The result of using the floor division operator is that of a mathematical division with the floor() function applied to the result.

Here is an example that sums the integers from 1 to 100.

Copied!
n = 100 total = n * (n + 1) // 2 print(total) # 👉️ 5050

All we had to do is update the value of n to get the sum of the integers from 1 to 100 .

If you don't want to use a formula, use the range() class from the previous subheading.

# Sum the numbers in a range that are divisible by N

If you need to sum the numbers in a range that are divisible by N, use a while loop.

Copied!
def sum_divisible_in_range(start, stop, divisor): while start % divisor != 0: start += 1 return sum(range(start, stop, divisor)) print(sum_divisible_in_range(1, 6, 2)) # 👉️ 6 print(sum_divisible_in_range(1, 7, 3)) # 👉️ 9 print(sum_divisible_in_range(1, 8, 4)) # 👉️ 4

we used a while loop to iterate until the start value reaches the divisor .

The last step is to create a range with the start , stop and divisor values and sum them.

# Additional Resources

You can learn more about the related topics by checking out the following tutorials:

I wrote a book in which I share everything I know about how to become a better, more efficient programmer.

Источник

Читайте также:  Add str to set python
Оцените статью