2012-03-31 7 views
1

Привет, может ли кто-нибудь указать мне какое-то руководство, я притворяюсь, что передал значение схемы функций переменной, которая будет использоваться в качестве шага аргумента внутри модуля диапазона. Надеюсь, его ясно .. извините новичков. после некоторых испытаний я получил штраф редактирования.Возвращаемое значение функции до значения аргумента диапазона

import os 
import sys 


def schema(x): 
    if x == 'M': 
     step=1 
    else: 
     step=2 
     return step 

def main(): 
    left_start = 1 
    left_end = 9 
    sch = schema('M') 

    range1= range(left_start,left_end,sch) 
    if 2 in range1: 
     print "In range" 
    else: 
     print "Missing in range" 

if __name__ == '__main__': 
    main() 
+0

А что, молитва, проблема? –

+0

проблема заключается в TypeError: range() целочисленный аргумент шага, ожидаемый, получил NoneType. –

+0

Это потому, что по умолчанию функция возвращает None. Ваша функция схемы не возвращается, когда 'x == 'M'', поэтому она передает' None' в 'range()'. –

ответ

3

В вашем коде есть проблемы с отступом. Следующее:

def schema(x): 
    if x == 'M': 
     step=1 
    else: 
     step=2 
     return step 

следует читать

def schema(x): 
    if x == 'M': 
     step=1 
    else: 
     step=2 
    return step 

В противном случае функция возвращает None когда x == 'M'.

Более краткий способ, чтобы написать эту функцию является:

def schema(x): 
    return 1 if x == 'M' else 2 
+0

Uau Thx aix .. какая поддержка, она просто отлично работает, вы все здоровы. –

1

Похоже, что вы хотите сделать следующее:

def schema(x): 
    if x == 'M': 
     step=1 
    else: 
     step=2 
    return step 

Обратите внимание, как return step с отступом на том же уровне, что и if заявление. В вашем коде return step будет работать только в случае else. В случае, когда x == 'M', ваш код вернет None от schema().

Мой предложенный код будет работать return step в любом случае.

+0

Привет, Грег только что отредактировал код ... все еще получая TypeError: range() целочисленный аргумент шага, ожидаемый, получил NoneType. –

1

Проблема в отступа код:

def schema(x): 
    if x == 'M': 
     step=1 
    else: 
     step=2 
     return step 

он должен как:

def schema(x): 
    if x == 'M': 
     step=1 
    else: 
     step=2 
    return step 

в вашем коде шаг возвращается IF и только если x! = 'M'.

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