belos
Сен. 15, 2014 00:00:02
Добрый день!
Я написал следующий код
def f(x):
import math
return 10*math.e**(math.log(0.5)/5.27 * x)
def radiationExposure(start, stop, step):
if start+step < stop:
return f(start+step/2)*step + radiationExposure((start+step), stop, step)
Для расчета интегральной суммы. Но компилятор выдает There's an error in your program: expected an indented block.
В чем может заключаться моя ошибка?
vrabey
Сен. 15, 2014 00:17:49
belos
В чем может заключаться моя ошибка?
переводчик google вот что говорит:
“Там в об ошибке в программе: Ожидается отступом блок”
belos
Сен. 15, 2014 00:25:50
Спасибо! Я исправил. Все скомпелировалось, но теперь другая ошибка:
TypeError: unsupported operand type(s) for +: ‘float’ and ‘NoneType’
В чем ее причина?
Заранее спасибо!
vrabey
Сен. 15, 2014 00:44:10
belos
TypeError: unsupported operand type(s) for +: ‘float’ and ‘NoneType’
может быть:
это выражение
возвращает float
а функция в какой то момент (условие
не выполняется) возвращает
а float и None сложить нельзя - unsupported operand type(s) for +
belos
Сен. 15, 2014 01:01:20
А как можно уйти от этой ошибки?
То есть сделать так чтобы код заработал и начал считать интеграл?
FishHook
Сен. 15, 2014 12:56:39
belos
А как можно уйти от этой ошибки?
А каков по вашему должен быть результат сложения float и None?
PooH
Сен. 16, 2014 06:39:01
belos
А как можно уйти от этой ошибки?То есть сделать так чтобы код заработал и начал считать интеграл?
def radiationExposure(start, stop, step):
if start + step < stop:
return f(start+step/2)*step + radiationExposure((start+step), stop, step)
else:
return 0
PS: А рекурсию вы здесь использовали в качестве упражнения или по незнанию лучших способов?
belos
Сен. 16, 2014 13:06:48
Спасибо!
Я упражнялся в понимании и использовании рекурсии.