Как найти сумму ряда питон

Перейти к содержанию

На чтение 1 мин Просмотров 12.7к. Опубликовано 21 ноября, 2021 Обновлено 21 ноября, 2021

Дано натуральное число N. Напишите программу для вычисления следующей суммы ряда (начиная с единицы):

Задача. Сумма ряда (Python)

Что оценивается

Задание считается успешно выполненным, если:

  • результат вывода соответствует условию;
  • input содержит корректное приглашение для ввода;
  • переменные имеют значащие имена, не только a, b, c, d.

Допускается вывод без описания, достаточно вывести сумму ряда.

Советы и рекомендации

Обратите внимание: если мы воспользуемся формулой для расчёта члена ряда, то 

при n = 0, член ряда равен 1;

при n = 1, мы получим -1/2;

при n = 2, мы получим 1/4;

при n = 3, мы получим -1/8.

Решение задачи:

number = int(input('Введите натуральное число: '))
s = 1
x = 1
for n in range(1, number + 1):
    x = ((-1) ** n) / (2 ** n)
    s = x + s
print('Член ряда ', x,'сумма ряда ', s)

( 37 оценок, среднее 4.3 из 5 )

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    You have been given a series 1/1! + 2/2! + 3/3! + 4/4! +…….+ n/n!, find out the sum of the series till nth term. Examples:

    Input :n = 5
    Output : 2.70833
    
    Input :n = 7
    Output : 2.71806

    Python3

    def sumOfSeries(num):

        res = 0

        fact = 1

        for i in range(1, num+1):

            fact *= i

            res = res + (i/ fact)

        return res

    n = 5

    print("Sum: ", sumOfSeries(n))

    Output:

    Sum: 2.70833

    Time Complexity: O(N)

    Auxiliary Space: O(1)

    Please refer complete article on Program to find the sum of a Series 1/1! + 2/2! + 3/3! + 4/4! +…….+ n/n! for more details!

    Last Updated :
    11 Aug, 2022

    Like Article

    Save Article

    Решение задач в Python. Сумма ряда натуральных чисел

    Попробуем на практике разобрать работу циклов, про которые рассказано в одном из наших уроков. Выполним предложенное задание, использовав несколько разных методик и видов циклов.

    Задача

    Программа выводит сумму первых членов натурального ряда чисел до введённого n-числа включительно.

    Решение задачи с помощью цикла while

    Произведём расчёт, используя цикл с предусловием while.

    n=int(input(Введите последнее число из ряда натуральных чисел=))
    
    i=1
    s=0
    while i<=n:
    s=i+s
    i=i+1
    print (Сумма чисел от 1 до, n, =, s)

    1. Сперва задаем в переменную n самое большое натуральное число (в пределах разумного).
    2. Обнулим на входе сумму s.
    3. Цикл будет выполняться до тех пор, пока внутренняя переменная не достигнет значения n.

    Результат выполнения программы

    Решение задачи с помощью цикла for

    Быстрее происходит расчёт при помощи цикла for.

    n=int(input(Введите последнее число=))
    
    s=0
    for i in range(1,n+1):
    s=i+s
    print (Сумма чисел от 1 до, n, =, s)

    Посмотрите, в цикле записано максимальное число не n, а n+1. Это связано с тем, что цикл должен выполняться на один шаг больше, чтобы последнее значение промежуточной суммы было учтено.

    Результат выполнения программы

    сумма чисел на питоне

    Решение задачи с помощью списка

    Ту же самую задачку можно решить, используя список. По сути, это ничего не меняет, но, как видите, код при этом занимает всего две строки:


    n=int(input(Введите последнее число=))
    print (Сумма чисел от 1 до, n, =, sum([i for i in range(1,n+1)]))

    Результат выполнения программы

    сумма чисел на питоне

    Задача на последовательность Функция перевода целого двоичного числа в десятичное

    Нужно найти сумму чисел в следующей последовательности: 2, 22, 222, 2222, …, 2(n), – где, n – количество разрядов в последнем числе

    Для примера, n = 5 последнее число будет 22222, а сумма чисел в последовательности – 24690.

    n = 5  # кол-во разрядов
    last_num = 0  # итоговое число
    i = 1  # счетчик разрядов
    sum = 0  # 2 + 22 + 222 + 2222 + 22222 => 24690
    
    while n > 0:
        last_num += 2 * i
        i *= 10
        n -= 1
    print(last_num)
    while last_num != 0:
        sum += last_num // 10
        last_num //= 10
    print(sum)
    

    Понимаю, что код кривой, так как только начал учит Python.
    Подскажите пожалуйста, как найти сумму чисел, поскольку условие sum += last_num // 10 “отсекает” первую двойку и по итогу сумма получается из чисел 2222 + 222 + 22 + 2 = 2468, вместо 22222 + 2222 + 222 + 22 + 2 = 24690.

    strawdog's user avatar

    strawdog

    23.4k4 золотых знака19 серебряных знаков33 бронзовых знака

    задан 22 июл 2022 в 13:30

    Владимир's user avatar

    2

    Основная ошибка – излишняя сложность. У вас идея верная, но уберите две строки. Python призывает к лаконичности и ясности, начинайте решение с продумывания самого лаконичного и ясного варианта. Но ясность важнее лаконичности.

    n = 5  # кол-во разрядов
    last_num = 0  # итоговое число
    i = 1  # счетчик разрядов
    sum1 = 0  # 2 + 22 + 222 + 2222 + 22222 => 24690
    
    while n > 0:
        last_num += 2 * i
        i *= 10
        n -= 1
        sum1 += last_num
    print(sum1)
    

    ответ дан 22 июл 2022 в 13:43

    Сергей's user avatar

    СергейСергей

    4,9296 золотых знаков11 серебряных знаков29 бронзовых знаков

    3

    У вас появляется ошибка, потому что вы отсекаете последнюю цифру дважды (sum += last_num // 10 и last_num //= 10). Нужно убрать одно из действий:

    n = 5  # кол-во разрядов
    last_num = 0  # итоговое число
    i = 1  # счетчик разрядов
    sum_ = 0  # 2 + 22 + 222 + 2222 + 22222 => 24690
    
    while n > 0:
        last_num += 2 * i
        i *= 10
        n -= 1
    print(last_num)
    while last_num != 0:
        sum_ += last_num
        last_num //= 10
    print(sum_)
    

    22222
    24690

    Кстати, код вполне нормальный. Только имя sum в python зарезервировано под функцию, поэтому его не стоит использовать в качестве названия переменной.

    В таких случаях можно добавлять ‘_’ к концу имени.

    ответ дан 22 июл 2022 в 13:39

    Vestalt's user avatar

    VestaltVestalt

    7132 серебряных знака17 бронзовых знаков

    6

    Можно не отсекать, а накапливать:

    • term – слагаемое: 0, 2, 22, 222, …, 2(n);
    • sum_ – накопительная сумма: 2 + 22 + 222 + …;
    • n – счётчик итераций.

    Проще некуда:

    n = 5
    sum_ = 0
    term = 0
    while n > 0:
        term = 10 * term + 2
        sum_ += term
        n -= 1
    print(sum_)
    

    Если применить немного изобретательности, слагаемые можно считать напрямую. На одну переменную меньше, но понять что происходит сложнее:

    n = 5
    sum_ = 0
    while n > 0:
        sum_ += 2 * (10 ** n - 1) // 9
        n -= 1
    print(sum_)
    

    И ещё немного изобретательности: есть замкнутая формула для ответа. Одна строка и долгие объяснения почему так:

    n = 5
    print(2 * ((10 ** (n + 1) - 1) // 9 - n - 1) // 9)
    

    ответ дан 22 июл 2022 в 15:20

    Stanislav Volodarskiy's user avatar

    1

    В одну строчку по приколу, но тут используется строковое представление цифры для удобства:

    n = 5
    k = '2'
    print(sum(int(k*i) for i in range(1, n+1)))
    # 24690
    

    Просто “размножаем” цифру нужное число раз (для этого она должна быть строкой), превращаем в число, всё это в цикле и дальше суммируем.

    ответ дан 22 июл 2022 в 15:55

    CrazyElf's user avatar

    CrazyElfCrazyElf

    65.4k5 золотых знаков19 серебряных знаков50 бронзовых знаков

    10

    Еще вариант:

    from functools import reduce
    
    n = 5
    d = 2
    res = [0] * n
    q = 0
    for i in range(n, 0, -1):
        q, res[i-1] = divmod(q + i * d, 10)
    
    print(*res, sep='')                     # 24690
    print(''.join(map(str,res)))            # 24690
    print(reduce(lambda x, y: 10*x+y, res)) # 24690
    

    Или так:

    from itertools import accumulate, repeat
    
    n = 5
    d = 2
    print(sum(accumulate(repeat(d, n), lambda x, y: x * 10 + y))) # 24690
    

    ответ дан 23 июл 2022 в 15:53

    TigerTV.ru's user avatar

    TigerTV.ruTigerTV.ru

    3,1851 золотой знак10 серебряных знаков21 бронзовый знак

    2

      • Actions

        Automate any workflow

      • Packages

        Host and manage packages

      • Security

        Find and fix vulnerabilities

      • Codespaces

        Instant dev environments

      • Copilot

        Write better code with AI

      • Code review

        Manage code changes

      • Issues

        Plan and track work

      • Discussions

        Collaborate outside of code

      Explore

      • All features

      • Documentation

      • GitHub Skills

      • Blog

    • For

      • Enterprise

      • Teams

      • Startups

      • Education

      By Solution

      • CI/CD & Automation

      • DevOps

      • DevSecOps

      Case Studies

      • Customer Stories

      • Resources

      • GitHub Sponsors

        Fund open source developers

      • The ReadME Project

        GitHub community articles

      Repositories

      • Topics

      • Trending

      • Collections

    • Pricing

    Добавить комментарий