2016-09-25 7 views
-1

私はこの投稿を見ましたが、on limiting numbers,ですが、範囲内になければ数値を切り捨てることに気付きました。Pythonは範囲内の数値ループを作ります

そうのようなこれを行う方法があります:

variable = 25

あなたの範囲は1〜20であれば、variable 5になることができますか?

variable = 41の場合は1になりますか?

私はこれを試してみました:0-20の範囲、および40の数と

def loop(number, maxn, minn): 
    if number > maxn: 
     number = maxn - number 
    return number 

を、私は-20を得ましたか!?

+0

問題について詳しく説明できますか。何を試しましたか?あなたは数字に有効な値を設定しようとしていますが、それが範囲外ならば1に設定しますか? – dmlittle

+4

用語は_モジュロ演算_です。この操作がどのように呼び出されたのか分かりましたので、自分で解決策を見つけることができます。 –

+0

@dmlittle数値が範囲より大きい場合、最初からループバックしたいので、入力が範囲の最大値よりも5大きい場合は、範囲の最小値より5大きいはずです。 – MasterHolbytla

答えて

0

ちょっと分かりました。

私は、負の数と範囲を含むほとんどのケースでうまくいくと思います。

+0

あなたは 'if'をスキップすることができます。 'while'は同じ条件を使用しているので自動的にチェックを行います。 – Ouroborus

+0

@Ouroborusありがとう、私はそれについて忘れてしまった。 – MasterHolbytla

+0

@MasterHolbytla 'loop(49、38、40)'は最大値よりも大きい47を返します。 – VPfB

0

1つのオプションは、variable = (|variable| % (MAX - MIN + 1)) + MINを設定することです。これにより、MINMAXの間の数値が与えられます。 variableMAXMINは非負整数、およびMAX >= MIN >= 0ある場合にのみ、一貫作品

注意。

|variable| % (MAX - MIN + 1)は、必ずしも負ではなく、MAX - MIN + 1|variable|は非負であるため、モジュロは負でない必要があります。したがって、最小値はゼロです。後にMINを追加するので、合計で最低の数字はMINになります。

多くても、|variable| % (MAX - MIN + 1)は、モジュロ演算子の性質により、MAX - MINである。その後MINを追加するとMAXとなります。したがって、最高出力はMAXになります。

なしvariableMAXより低いよりMIN以上の数値を与えないであろう、そして包括MINMAX間のすべてnためvariableようn = (|variable| % (MAX - MIN + 1)) + MINの等しい数が、常に存在します。

+0

これがうまくいく理由の説明を追加してください。 MINとMAXが負の場合は動作しますか? –

+0

これはまだ最初からやり直すようには思われません... – MasterHolbytla

関連する問題