2015-06-30 4 views
-2
total=0 

def f(x): 
    import math 
    return 10*math.e**(math.log(0.5)/5.27 * x) 

def radio(start,stop,step): 
    time=stop-start 
    newstart=start+step 

if time !=0: 
    rad=f(start)*step 
    global total 
    total+=rad 
    radio(newstart,stop,step) 
else: 
    return total 
print radio(0, 5, 1) 
print radio(5, 11, 1) 
print radio(0, 11, 1) 
print radio(40, 100, 1.5) 
+1

Поскольку вы вызываете 'функция radio', которая не возвращает ничего явного, так по умолчанию она возвращается' None' неявно. –

ответ

3

В функциях Python по умолчанию возвращается None.

У вас возникли проблемы с отступом, поэтому ваша функция radio неожиданно завершается, и последующий блок кода считается независимым и не принадлежащим radio. Для того, чтобы решить эту проблему - исправить отступы, как это:

def radio(start,stop,step): 
    time=stop-start 
    newstart=start+step 

    if time !=0: 
     rad=f(start)*step 
     global total 
     total+=rad 
     radio(newstart,stop,step) 
    else: 
     return total 
0

В функции питон давать какие-либо возвращаемое значение, если возвращаемое значение не указано, то по умолчанию None возвращается

Первый раз, когда вы не вызываемая функция радио ничего был возвращен его снова из-за которой никто не был возвращен

чтобы избежать этой проблемы, так как вы используете рекурсивный вызов у ​​вас есть возвращаемое значение каждой функции к другой функции, чтобы использовать возврат при вызове тех же функций называют себя

total=0 


def f(x): 
    import math 
    return 10*math.e**(math.log(0.5)/5.27 * x) 

def radio(start,stop,step): 
    time=stop-start 
    newstart=start+step 

    if time !=0: 
     rad=f(start)*step 
     global total 
     total+=rad 
     return radio(newstart,stop,step) 
    else: 
     return total 
print radio(0, 5, 1) 

Выход:

39.1031878433 
Смежные вопросы