我想打印 1-100 之间的数字,跳过可被 3 和 5 整除的数字,当我使用代码 1 时,我没有得到正确的输出,我正在计算 1-100#CODE1i=1a=1while i<=100: if (a%3==0 and a%5==0) : a=a+1 else: print(a) a=a+1 i=i+1但是当我使用 CODE-2 时,我得到了想要的结果#CODE2i=1a=1while i<=100: if ((a%3 and a%5)==0) : a=a+1 else: print(a) a=a+1 i=i+1注意代码的第四行,为什么第一个代码有问题?
3 回答
![?](http://img1.sycdn.imooc.com/545863dc00011d2202200220-100-100.jpg)
梦里花落0921
TA贡献1772条经验 获得超6个赞
考虑一下:
a = 10
(a%3 == 0) and (a%5 == 0) # False
(a%3 and a%5) == 0 # True
第一次尝试给出False错误,因为它需要同时满足两个条件;你需要or代替。如果仔细观察,一些数字(例如15)被排除在外,与同时具有3和5作为因数的数字一致。
如果因为在第二次尝试是正确的a是不整除或者3或5,则表达式计算得到False,并0 == False给出True。更惯用的写法是:
not (a%3 and a%5)
![?](http://img1.sycdn.imooc.com/5333a2320001acdd02000200-100-100.jpg)
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
检查这也有效!100%
def result(N):
for num in range(N):
if num % 3 == 0 and num % 5 == 0:
print(str(num) + " ", end="")
else:
pass
if __name__ == "__main__":
N = 100
result(N)
![?](http://img1.sycdn.imooc.com/533e4cf4000151f602000200-100-100.jpg)
小唯快跑啊
TA贡献1863条经验 获得超2个赞
在他所关注的层面上有一个更清晰的答案
a = 1
while a <= 100:
if a%3 == 0 or a%5 ==0:
a = a+1
else:
print(a)
a = a+1
添加回答
举报
0/150
提交
取消