繁体   English   中英

打印范围内可以被 4 或 5 整除的所有数字,但不能同时被 4 或 5 整除

[英]print all the numbers in a range that are divisible by 4 or 5, but not both

我试图打印从 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 个一直很棘手

感谢任何帮助或被置于正确的方向

“可被 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]))
for i in range(100, 201):
    if i % 4 == 0 and i % 5 == 0:
        continue
    if i % 4 != 0 and i % 5 != 0:
        continue
    print(i)

要每行打印 10 个,您可以执行以下操作:

printed = 0
for i in range(100, 201):
    if i % 4 == 0 and i % 5 == 0:
        continue
    if i % 4 != 0 and i % 5 != 0:
        continue
    print(i, end=" ")
    if (printed := printed+1) == 10:
        printed = 0
        print()
lines = ""
count_nums_in_one_line = 0

for i in range(100, 201):
    if count_nums_in_one_line == 10:
        lines += "\n"
        count_nums_in_one_line = 0

    if i % 4 == 0 and i % 5 == 0:
        pass

    elif i % 4 == 0 or i % 5 == 0:
        lines += str(i)
        lines += " "
        count_nums_in_one_line += 1

print(lines)

这会做:)

My 2 cents:

l=[i for i in range(100,201) if (i%4==0)!=(i%5==0)]
for i in range(len(l)//10):
    print(*l[i*10:i*10+10])
print(*l[len(l)//10*10:])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM