Python3中模数运算符的奇怪输出

时间:2018-03-28 01:51:05

标签: python-3.x operator-keyword modulo

我正在使用python3中的模块化排序器,并注意到在使用mod时输入变量符号的奇怪行为。我打算用除以周期长度后的余数对值进行排序。

即,c = 4 / 14 = 0 r **4**", "c = 18 / 14 = 1 r **4**", and "c = 32 / 14 = 2 r **4**

所有这些都是第四个位置值,因为它们会离开4.但是,如果任何输入变量是负数,则结果不是我想要的。关于它是如何工作的任何想法(我可能在以后的编码中使用这个奇怪的功能)?

a = 4     #the value for sorting
b = 14    #the length of the cycle before it reaches the 0 position

def modS(val, cyc):
    c = val % cyc
    print(c)

modS(a, b)

如,

a = 4
b = 14

打印4

a = -4
b = 14

打印10

a = 4
b = -14

打印-10

a = -4
b = -14

打印-4

这些印刷值可能对pH计算等内容有用,但不适用于我的目的。

1 个答案:

答案 0 :(得分:0)

我无法发表评论,所以我会尝试回答我认为您试图提出的问题

即使消极

,也要尝试得到你想要的答案

我建议使用the abs() method将所有数字视为正数,例如,

def modS(val, cyc):
    c = abs(val) % abs(cyc)
    print(c)

为您的数据集提供4。

否则,如果您只是想知道为什么会发生,我建议您阅读this other question相同的内容。