有没有在python中使用mod“%”的替代方法

时间:2018-10-16 10:15:48

标签: python math time mod

我试图循环显示数字列表(大部分为小数),但是我想同时返回0.0和最大数字。 例如

maxNum = 3.0 
steps = 5
increment = 0
time = 10
while increment < time:
    print increment * (maxNum / steps)% maxNum
    increment+=1

我将其作为输出

0.0
0.6
1.2
1.8
2.4
0.0

但我希望最大的数字是3.0,然后从0.0 I.E.开始。

0.0
0.6
1.2
1.8
2.4
3.0
0.0

注意,我必须避免计算部分出现逻辑循环。

3 个答案:

答案 0 :(得分:1)

您可以创建所需的数字,然后使用itertools.cycle在这些数字之间循环:

import itertools
nums  = itertools.cycle(0.6*i for i in range(6))
for t in range(10):
    print(next(nums))

输出:

0.0
0.6
1.2
1.7999999999999998
2.4
3.0
0.0
0.6
1.2
1.7999999999999998

答案 1 :(得分:0)

如果下一个打印的数字是if,则可以使0.0向前看,然后打印maxNum

maxNum = 3.0
steps = 5
increment = 0
time = 10

while increment < time:
    print(round(increment * (maxNum / steps)% maxNum, 2))
    increment+=1
    if (round(increment * (maxNum / steps)% maxNum, 2)) == 0.0:
        print(maxNum)
0.0
0.6
1.2
1.8
2.4
3.0
0.0
0.6
1.2
1.8
2.4
3.0

答案 2 :(得分:0)

只有很小的变化才能达到目的:

maxNum = 3.0
steps = 5
i = 0
times = 10
step = maxNum / steps
while (i < times):
    print(step * (i % (steps + 1)))
    i += 1

0.0
0.6
1.2
1.7999999999999998
2.4
3.0
0.0
0.6
1.2
1.7999999999999998