[英]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.