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...
该如何解决?
答案 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,那就意味着找到剩余物。