第三行由于某种原因未显示

时间:2020-07-08 03:47:44

标签: python-3.x

import time
import math
for i in range(9):
  if math.remainder(i, 3) == 0:
    print('Processing.')
    time.sleep(0.5)
  elif math.remainder(i, 3) == 1:
    print('Processing..')
    time.sleep(0.5)
  elif math.remainder(i, 3) == 2:
    print('Processing...')
    time.sleep(0.5)

输出:

Processing.
Processing..
Processing.
Processing..
Processing.
Processing..

我做错了什么?为什么不显示带有三个“。”的行?怎么了?

Processing.
Processing..
Processing...
Processing.
Processing..
Processing...
Processing.
Processing..
Processing...

该如何解决?

2 个答案:

答案 0 :(得分:1)

math.remainder(2, 3)返回-1.0,因为它返回与最接近整数倍的差,而不是去除尽可能高的整数倍后的剩余数(不是“余数” ”(通常在学校中教授)。这很少是您想要的。只需使用运算符形式:

for i in range(9):
  if i % 3 == 0:
    print('Processing.')
    time.sleep(0.5)
  elif i % 3 == 1:
    print('Processing..')
    time.sleep(0.5)
  elif i % 3 == 2:
    print('Processing...')
    time.sleep(0.5)

请注意,由于i始终是int,所以不需要进行最终测试,并且前两个测试都排除了所有其他选项,因此您可以将elif i % 3 == 2:替换为{ {1}}。

答案 1 :(得分:0)

此代码有效,因此可能是一个math.remainder()问题。

import time
for i in range(9):
  if i%3 == 0:
    print('Processing.')
    time.sleep(0.5)
  elif i%3 == 1:
    print('Processing..')
    time.sleep(0.5)
  elif i%3 == 2:
    print('Processing...')
    time.sleep(0.5)

如果您不熟悉mod,那就意味着找到剩余物。