Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 28, 2020 13:08:24

MrGeo
Зарегистрирован: 2020-04-19
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

Есть вот такой отрезок кода

 def frange(start, end, step):
    t = start
    while t < end:
        yield t
        t += step
def f(x, v):
    if v == 'log(x+4)+x^4':
        return log(x + 4) + x ** 4
    elif v == '(e^(-x)*sin(x))/x':
        return (e ** (-x) * sin(x)) / x
def integ(a, b, n, v):
    h = float((b - a)) / n
    s = 0
    s = (((f(a, v) + f(b, v)) / 2) + s)
    for x in frange(a + h, b, h):
        s = f(x, v) + s
    s = s * h
    return s
def calc_integ():
    a = int(a_num.get())
    b = int(b_num.get())
    n = int(n_num.get())
    v = (variable.get())
    res = integ(a, b, n, v)
При выполнении программы, вылезает ошибка :
Traceback (most recent call last):
File "C:\\Python 3.8.2(64-bit)\lib\tkinter\__init__.py“, line 1883, in __call__
return self.func(*args)
File ”CUsers/Виктя/Desktop/Попытка курсача/prog1.py“, line 40, in calc_integ
res = integ(a, b, n, v)
File ”CUsers/Виктя/Desktop/Попытка курсача/prog1.py", line 28, in integ
s = (((f(a, v) + f(b, v)) / 2) + s)
TypeError: unsupported operand type(s) for +: ‘NoneType’ and ‘NoneType’

Process finished with exit code 0

Просиходит такое, если работать с уравнением '(e^(-x)*sin(x))/x, если же работать с другим, ошибки нет и все считает правильно.

Так же у меня в этой же программе есть дифференцирование
 def diff1(x0, v, dx):
    ra = (((f(x0, v)*(x0+dx)) - (f(x0, v) * x0)) / dx)
    return ra
def diff2(x0, v, dx):
    ra = (((f(x0, v) * (x0 + dx)) - (f(x0, v) * (x0 - dx))) / (2 * dx))
    return ra
def diff3(x0, v, dx):
    ra = (((f(x0, v)*(x0)) - (f(x0, v) * (x0 - dx))) / dx)
    return ra
def calc_diff():
    v = (variable.get())
    x0 = float(x_num.get())
    dx = float(dx_num.get())
    ff = (e ** -(x0) * sin(x0)) / x0
    if v == 'log(x+4)+x^4':
        res2 = diff1(x0, v, dx)
        res3 = diff2(x0, v, dx)
        res4 = diff3(x0, v, dx)
    else:
        res2 = (((ff*(x0+dx)) - (ff * x0)) / dx)
        res3 = (((ff * (x0 + dx)) - (ff * (x0 - dx))) / (2 * dx))
        res4 = (((ff*(x0)) - (ff * (x0 - dx))) / dx)
    result2.configure(text=res2)
    result3.configure(text=res3)
    result4.configure(text=res4)
Тут вылезала такая же ошибка при втором уравнении, зато есть прогонять не через функции diff, а на прямую, как в calc_diff то все работает. Почему? И как можно исправить эту ошибку?

Офлайн

#2 Июнь 28, 2020 13:52:32

MrGeo
Зарегистрирован: 2020-04-19
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

Решил проблему. Ошибка было изза моей невнимательности. Среди этих отрезков кода нет ответа на эту проблему.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version