我正在尝试让这个程序返回1001以下的所有可能的3和5的倍数,然后将它们全部加在一起并打印出来但由于某种原因,这些代码行似乎只打印一个数字而且这个数字是数字2显然是错误的。有人能指出我为什么这个代码严重错误的正确方向?
n = 0
x = n<1001
while (n < 1001):
s = x%3 + x%5
print s
答案 0 :(得分:2)
你有一些错误:
没有看到你要求总和的部分,所以你可以使用for-in循环或只是一个简单的循环:
sum = 0
for i in range(1001):
if(i % 3 == 0 or i % 5):
sum += i
print(sum)
(Python 3)
你需要在某个时刻通过递增n来停止。这是一些代码:
nums = []
n = 0
while (n < 1001):
# in here you check for the multiples
# then append using nums.append()
n += 1
这将创建一个循环和一个列表,该列表记录0到1000中的每个数字。在正文中,检查任一条件并附加到列表,然后打印出列表中的值。
num
是一个列表,您可以在其中存储所有适用的值(可以用3和5整除的数字,用模数计算)。在满足条件时附加到该列表。这是一些代码:
nums = []
n = 0
while (n < 1001):
if(n % 3 == 0 or n % 5 ==0):
nums.append(n)
n += 1
print(n) #or for loop for each value
说明:名为num
的数字列表存储可被3或5整除的数字。循环从零开始到1000,对于所有可被3或5整除的值,它们将被添加到列表中。然后它打印列表。
当然,有一个范围更简单的方法:
for i in range(1001):
if(i % 3 == 0 or i % 5 == 0):
print(i)
这将逐个打印出所有值。它是1001,因为上限是独占的。
答案 1 :(得分:0)
在你的代码中:
1. x=n<1001
- 生成一个布尔值;我们无法进行数学运算。
解决方案1: 下面的代码将帮助您。
s=0
for i in range(1,1002):
if( i%3 == 0 or i%5 == 0):
s = s + i
print(s)
解决方案:2 您还可以使用另一种方法。
var = [i for i in range(1,1002) if i%3==0 or i%5 ==0]
print(sum(var))
答案 2 :(得分:0)
true=1
false=0
这样:
x = n<1001
我们有x = 1,因为0 <1001为真
s = x%3 + x%5
1/3的余数为1,而1/5为1