【问题标题】:Python make a number loop within a rangePython在一个范围内进行数字循环
【发布时间】:2017-02-03 00:29:15
【问题描述】:

所以我看到了这个帖子,on limiting numbers,,但我注意到如果它不在范围内,它会切断一个数字。

有没有办法做到这一点:

variable = 25

如果你的范围是1-20,variable可以变成5吗?

或者如果variable = 41,它变成1了吗?

我试过这个:

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

范围为 0-20,数字为 40,我得到 -20?!?

【问题讨论】:

  • 你能详细说明一下这个问题吗?你试过什么?您是否尝试为数字设置有效值,如果超出范围,则将其设置为 1?
  • 术语是模运算。既然知道了这个操作是怎么调用的,相信你自己也能找到解决办法。
  • @dmlittle 如果一个数字大于范围,我希望它从开始循环回来,因此,如果输入比范围的最大值大 5,它应该大于 5范围的最小值。
  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只会在发布者已经尝试自己解决问题时提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 提供一个算法(不是代码,而是你的想法)为什么41给我们1

标签: python


【解决方案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

没有variable 将给出一个低于MIN 或高于MAX 的数字,并且总是有相同数量的variable 使得n = (|variable| % (MAX - MIN + 1)) + MIN,对于@987654344 之间的所有n @ 和 MAX 包括在内。

【讨论】:

  • 请解释为什么这应该起作用。如果 MIN 和 MAX 为负数,它会起作用吗?
  • 这似乎仍然不能让它从头开始...
【解决方案2】:

刚刚想通了。

def loop(n, minn, maxn):

    while n > maxn:
        n = n - (maxn - minn)
    while n < minn:
        n = n + (maxn - minn)

    return n

我认为这应该适用于大多数情况,包括负数和范围。

【讨论】:

  • 您可以跳过ifs。 whiles 将自动处理检查,因为它们使用相同的条件。
  • @Ouroborus 谢谢,我忘了。
  • @MasterHolbytla loop(49, 38, 40) 返回大于最大值的 47。
  • @VPfB 哇。刚试过。这可能是因为 49 - 40
  • @MasterHolbytla 我不知道什么结果是正确的以及为什么。 38? 39?还是40?你的问题不清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
相关资源
最近更新 更多