2016-05-20 3 views
-4
def valMap(x, in_min, in_max, out_min, out_max): 
    return ((x - in_min) * (out_max - out_min)) // (in_max - in_min) + out_min 


def limit(self, input): 

    if -0.2 <= input <= 0.2: 
     input = 192 
    if input < -0.2: 
     input = valMap(input, -0.2, -1, 138, 192) 
    if input > 0.2: 
     input = valMap(input, 0.2, 1, 192, 242) 
    return input 

入力値の範囲は-1から+1です。 これは、最後のifステートメントで期待どおりに機能します。 他のすべてのifステートメントは奇妙な数字を投げ捨てます。Python 3のマッピング値

これはPython2で機能しました。

ありがとう

+3

サンプル入力と間違った+期待される出力を提供してください – Neapolitan

+1

「奇妙な数字」は何も教えてくれません。 Python2とPython3で異なった動作をする入力とは何ですか?また、期待している出力は何ですか(そしてPython2で得られますか?)、代わりにPython3で得られる出力は何ですか? – Amadan

+2

おそらくelifをlimit関数で使うことを意味します。それぞれのブランチのreturn文またはreturn文。それはなぜ最後のものだけが働いているのかを説明するでしょう。 – Neapolitan

答えて

1

これはPythonバージョンとは関係ありません。 if条件が依存していると確信していますか?私が見るところでは、最初の関数呼び出しの結果に応じて、最後のifステートメントでvalMap関数を再度呼び出しています。代わりにelifを使用することを意味しましたか?

+0

ありがとうございます。もちろんelifだったはずです。 – user3603948

関連する問題