最佳答案
我需要测试从1到1000的每个数字是3的倍数还是5的倍数。
我在 Python2.x 中尝试了这段代码:
n = 0
s = 0
while (n < 1001):
x = n/3
if isinstance(x, (int, long)):
print 'Multiple of 3!'
s = s + n
if False:
y = n/5
if isinstance(y, (int, long)):
s = s + n
print 'Number: '
print n
print 'Sum:'
print s
n = n + 1
这个想法是尝试除以数字,看看结果是否是一个整数。但是,我没有得到预期的结果。
如何测试该数字是否为整数?
在2.x 中,像这样的除法将产生一个整数,丢弃其余部分; 请参阅 如何强制除法为浮点数? 除法一直四舍五入到0?了解详细信息。
在3.x 中,除法将生成一个浮点值; 结果是 不是“一个整数”即使是一个整数,因此 isinstance
检查将失败。详情请参阅 为什么整数除法产生一个浮点数而不是另一个整数?。
如果您需要整数除法的余数,而不仅仅是测试整除性,请参阅 求一个数的除法余数。