Реализовать итерационную функцию на python

Рейтинг: 0Ответов: 1Опубликовано: 22.02.2023

введите сюда описание изображения

import math


def main(n, m, a):
    f = 0
    for i in range(1, a + 1):
        for k in range(1, m + 1):
            for j in range(1, n + 1):
                f += (94 * k ** 5 - 67 * math.log10(j) ** 6 - 83 * i ** 4)
    f = "{:.2e}".format(f)
    print(f)
    return f
main(8, 3, 5)

Не работает код, вместо -1.11e+06 выдает -9.14e+05 А при 7, 7, 6 верно выдает 1.05e+08

Ответы

▲ 3Принят

Потому что в качестве функции натурального логарифма нужно использовать math.log, а не math.log10. Тогда будет правильный ответ.

Немного отрефакторил код:

from math import log

def f(n: int, m: int, a: int):
    result = 0
    for i in range(1, a+1):
        for k in range(1, m+1):
            for j in range(1, n+1):
                result += (94 * k**5 - 67 * log(j)**6 - 83 * i**4)

    return f'{result:.2e}'

Проверка:

print(f(8, 3, 5))

Вывод:

-1.11e+06

Проверка 2:

print(f(7, 7, 6))

Вывод:

1.05e+08