1 Востаннє редагувалося DimONN (12.03.2018 22:56:04)

Тема: Задача для створення підпрограм

Доброго дня!

Будь ласка, підкажіть чи правильно складена програма згідно завдання:
http://replace.org.ua/extensions/om_images/img/5aa6e81aad2a8/1.jpg

n =int(input('Введіть n '))

def my_function1(l):
    y = 0
    for i in range(1,l+2):
        y = y + 1/(pow(l,2)+i)
    return y

def my_function2(n):
    f = 1
    for l in range (n+1):
        f=f*my_function1(l)
    return f


print(my_function2(n))

Як можна вдосконалити програму? Дякую!

2

Re: Задача для створення підпрограм

давайте перевіримо, от мені нічим зайнятись..
https://cdn.discordapp.com/attachments/333936584481177600/422863630485159937/unknown.png
прально я обрахував? а ваша прога що показує?

Подякували: DimONN1

3

Re: Задача для створення підпрограм

бляха муха, це ж плюс там.. зара перерахую, чекайте

Подякували: DimONN1

4

Re: Задача для створення підпрограм

так, ось це правильно?
https://cdn.discordapp.com/attachments/333936584481177600/422865453313032194/unknown.png

Подякували: DimONN2

5 Востаннє редагувалося koala (13.03.2018 08:51:51)

Re: Задача для створення підпрограм

Хіба що оформлення виправити - дати нормальні назви функціям, скористатися генераторними виразами та операторами += та *=. А ще в квадрат правильніше зводити l**2 чи навіть просто l*l.

Подякували: DimONN1

6

Re: Задача для створення підпрограм

Ха, таки щось виходить ). Дякую.

А що таке генераторні вирази і як їх використовувати в данному випадку?

7

Re: Задача для створення підпрограм

Це ваша my_function1, якби її писав я:

def series_sum(l):
    return sum( 1/(l*l+i) for i in range(1,l+2) )
Подякували: DimONN2

8

Re: Задача для створення підпрограм

FakiNyan написав:

так, ось це правильно?
https://cdn.discordapp.com/attachments/333936584481177600/422865453313032194/unknown.png

Так, "зійшлись".

Подякували: FakiNyan2

9

Re: Задача для створення підпрограм

Я модифікував код як рекомендовано. Є питання. Чи існує функція подібна до sum(). Щось по типу mult(), щоби функцію 2 зробити подібною до першої.

n =int(input('Введіть n '))

def series_sum(l):
    return sum( 1/(l*l+i) for i in range(1,l+2) )

def my_function(n):
    f = 1
    for l in range (n+1):
        f*=series_sum(l)
    return f

print(my_function(n))

10

Re: Задача для створення підпрограм

Є numpy.prod.
Але загалом радять множити саме так, звичайним циклом.