2012-03-31 16 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()整数のステップ引数が必要です。 –

+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

次のやりたいように見えます:return stepif文と同じレベルにインデントされてどのよう

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

お知らせ。あなたのコードでは、return stepelseケースでのみ実行されます。 x == 'M'の場合、コードはNoneschema()から返します。

私の推奨するコードでは、いずれの場合もreturn stepが実行されます。

+0

こんにちはGregはコードを編集しました...まだTypeErrorを受け取っています:range()整数のステップ引数が必要です。 –

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 

stepはIFとx!= 'M'の場合にのみ返されます。