我坚持这项任务。 我尝试与我的代码进行不同的组合以获得返回但失败了。 该问题通过使用递归询问在一段时间内发现辐射暴露。
问题:我可以正确地获得所有计算[我使用在线python执行器检查它]但是当进程返回到最终返回时,结果是None
。我不知道为什么我的代码无法返回最终的计算结果。我希望:那里的一些古茹可以给我一些线索谢谢。
global totalExposure
totalExposure=0
def f(x):
import math
return 10*math.e**(math.log(0.5)/5.27 * x)
def radiationExposure(start, stop, step):
time=(stop-start)
newStart=start+step
if(time!=0):
radiationExposure(newStart, stop, step)
global totalExposure
totalExposure+=radiation
radiation=f(start)*step
else:
return totalExposure
测试案例1:
>>> radiationExposure(0, 5, 1)
39.10318784326239
答案 0 :(得分:2)
您似乎忘记了return
子句中的if
。 else
中有一个,但if.
答案 1 :(得分:1)
正如保罗所说,你的if
陈述没有回复。另外,在分配变量radiation
之前,您正在引用变量global totalExposure
totalExposure = 0
def f(x):
import math
return 10 * math.e**(math.log(0.5)/5.27 * x)
def radiationExposure(start, stop, step):
time = (stop-start)
newStart = start+step
if(time!=0):
radiationExposure(newStart, stop, step)
global totalExposure
radiation = f(start) * step
totalExposure += radiation
return totalExposure
else:
return totalExposure
rad = radiationExposure(0, 5, 1)
# rad = 39.1031878433
。一些调整,我能够让它工作。
{{1}}
答案 2 :(得分:1)
没有global
的清洁版
import math
def f(x):
return 10*math.e**(math.log(0.5)/5.27 * x)
def radiationExposure(start, stop, step):
totalExposure = 0
time = stop - start
newStart = start + step
if time > 0:
totalExposure = radiationExposure(newStart, stop, step)
totalExposure += f(start)*step
return totalExposure
rad = radiationExposure(0, 5, 1)
# rad = 39.1031878432624
答案 3 :(得分:1)
@furas'代码迭代而不是递归:
def radiationExposure2(start, stop, step):
totalExposure = 0
time = stop - start
newStart = start + step
oldStart = start
while time > 0:
totalExposure += f(oldStart)*step
time = stop - newStart
oldStart = newStart
newStart += step
return totalExposure
转换为for循环:
def radiationExposure3(start, stop, step):
totalExposure = 0
for time in range(start, stop, step):
totalExposure += f(time) * step
return totalExposure
使用生成器表达式:
def radiationExposure4(start, stop, step):
return sum(f(time) * step for time in range(start, stop, step))
答案 4 :(得分:-1)
正如其他提到的那样,你的if语句没有回复。你似乎忘记了if子句中的返回。在if中有一个但在if中没有。