我需要测试从1到1000的每个数字是否是3的倍数或5的倍数。
我在 Python 2.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
检查将失败。有关详细信息,请参阅为什么整数除法会产生浮点数而不是另一个整数?。
如果您需要整数除法的余数而不仅仅是测试整除性,请参阅查找数字的除法余数。
您可以使用模运算符来完成此操作,
%
n % k == 0
当且仅当 n
是
k
的精确倍数时,评估为 true。在初等数学中,这称为除法的余数。
在您当前的方法中,您执行除法,结果将是
这是测试整除性的错误方法。
您可以简单地使用
%
模运算符来检查整除性。n % 2 == 0
表示 n 可以被 2 整除,n % 2 != 0
表示 n 不能被 2 整除。
您可以使用 % 运算符 检查给定数字的整除性
检查是否给定的代码。当否时可被 3 或 5整除。小于1000的如下:
n=0
while n<1000:
if n%3==0 or n%5==0:
print n,'is multiple of 3 or 5'
n=n+1
我也有同样的方法。因为我不明白如何使用模块(%)运算符。
6 % 3 == 0
现在你必须将其与你给定的问题联系起来。
if n % 3 == 0
n
) 能被 3 整除,余数为 0。添加您的 then(打印、返回)语句并继续您的
此代码似乎可以满足您的要求。
for value in range(1,1000):
if value % 3 == 0 or value % 5 == 0:
print(value)
或者类似的东西
for value in range(1,1000):
if value % 3 == 0 or value % 5 == 0:
some_list.append(value)
或任何数量的事情。
a = 1400
a1 = 5
a2 = 3
b= str(a/a1)
b1 = str(a/a2)
c =b[(len(b)-2):len(b)]
c1 =b[(len(b1)-2):len(b1)]
if c == ".0":
print("yeah for 5!")
if c1 == ".0":
print("yeah for 3!")
对于少量
n%3 == 0
就可以了。对于非常大的数字,我建议先计算交叉和,然后检查交叉和是否是 3 的倍数:
def is_divisible_by_3(number):
if sum(map(int, str(number))) % 3 != 0:
my_bool = False
return my_bool