2012-03-31 55 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'時才返回。