-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で機能しました。
ありがとう
サンプル入力と間違った+期待される出力を提供してください – Neapolitan
「奇妙な数字」は何も教えてくれません。 Python2とPython3で異なった動作をする入力とは何ですか?また、期待している出力は何ですか(そしてPython2で得られますか?)、代わりにPython3で得られる出力は何ですか? – Amadan
おそらくelifをlimit関数で使うことを意味します。それぞれのブランチのreturn文またはreturn文。それはなぜ最後のものだけが働いているのかを説明するでしょう。 – Neapolitan