2012-03-31 74 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

什么,祈祷,是问题? – 2012-03-31 19:14:30

+0

问题是TypeError:range()整数步参数预期,得到NoneType。 – 2012-03-31 19:25:59

+0

这是因为函数默认返回None。当'x =='M''时,您的模式函数不会返回,因此它将'None'传递给'range()'。 – 2012-03-31 19:28:33

回答

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 

否则,该函数返回Nonex == 'M'

一个编写功能更简洁的方法是:

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

Uau Thx aix ..什么样的支持,它只是完美的工作,你都很棒。 – 2012-03-31 19:35:34

1

看起来要做到以下几点:

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

通知的return step是怎么缩进到相同的水平if声明。在您的代码中,return step只会在else的情况下运行。在x == 'M'的情况下,您的代码将从schema()返回None

无论哪种情况,我建议的代码都会运行return step

+0

嗨格雷格只是编辑代码...仍然收到TypeError:范围()整数步骤参数预计,得到NoneType。 – 2012-03-31 19:29:51

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'时才返回。