首页 > 解决方案 > 打印范围内可被 4 或 5 整除的所有数字,但不能同时被 4 或 5 整除

问题描述

我正在尝试打印从 100 到 200 的所有数字,每行十个,可以被 4 或 5 整除,但不能同时被整除。打印行中的数字正好用一个空格分隔。我想要实现的示例是:

104 105 108 110 112 115 116 124 125 128 
130 132 135 136 144 145 148 150 152 155 
156 164 165 168 170 172 175 176 184 185 
188 190 192 195 196

我试过这个:

i=100
a=100
while i<=200:
    if ((a%3 and a%5)==0) :
        a=a+1
    elif a/3 ==0 and a/5 != 0:
        print(a)
        a=a+1
    else:
        print(a," ")
        a=a+1
    i=i+1

我可以让它打印 100-200 的所有数字,而不是能被 4 和 5 整除的数字,但我不能让它打印能被 4 或 5 整除但不能被 4 和 5 整除的数字。还让它们每行打印 10 个一直很棘手

感谢任何帮助或被放在正确的方向

标签: pythonloopsif-statementwhile-loop

解决方案


“能被 4 或 5 整除,但不能被 4 和 5 整除”是一个或运算,所以这里有一个 python 的operator.xor方法的例子:

import operator

nums = [i for i in range(100,201) if operator.xor(not i % 4, not i % 5)]

for i in range(0, len(nums), 10):
    print(" ".join(str(x) for x in nums[i:i+10]))

推荐阅读