我正在使用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计算等内容有用,但不适用于我的目的。
答案 0 :(得分:0)
我无法发表评论,所以我会尝试回答我认为您试图提出的问题
我建议使用the abs() method将所有数字视为正数,例如,
def modS(val, cyc):
c = abs(val) % abs(cyc)
print(c)
为您的数据集提供4。
否则,如果您只是想知道为什么会发生,我建议您阅读this other question相同的内容。