将简单的特殊mod函数减少到一行(仅逻辑上,不是第三运算符)

时间:2017-01-25 02:37:35

标签: python algorithm math logic

我想要一个简单的函数返回一个数字的mod但是在n%n的情况下我想要值n而不是0。

我的功能是:

def special_mod(m,n):
    if  m%n != 0:
        return m%n
    else 
        return n

我真正想要的是不包含条件的单线逻辑。 FYI:(m + 1)%n,m%(n + 1)不适用于所有输入(我的输入)

逻辑上我想要这样的东西

  1. 原始模式:0 1 2 3 4 5(对于n = 6)我不喜欢

  2. 我的特殊模式:6 1 2 3 4 5(对于n = 6)循环值变为 6后6和1后6

  3. 这可以在不使用m!= n?

    等条件的情况下实现

2 个答案:

答案 0 :(得分:2)

任何原因:(m-1)%n+1都不会起作用,例如:

>>> n = 6
>>> [(m-1)%n+1 for m in range(12)]
[6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5]

答案 1 :(得分:0)

m%n or n(m-1)%n+1可以解决问题。