Python:打印可被x和y整除的范围内的所有数字

Python:打印可被x和y整除的范围内的所有数字,python,Python,我正在尝试打印1-100范围内所有可被x和y整除的数字(即2和3)。现在我有 for x in range(0, 101): if x % (2 and 3) == 0: print("2, 3: ", x) elif x % 2 == 0: print("2: ", x) elif x % 3 == 0: print("3: ", x) 但是它是不准确的,有什么建议吗?(2和3)的计算结果是3,这就是为什么您从未看到执行的条件elif x%3==0,请注意在代码的输出

我正在尝试打印1-100范围内所有可被x和y整除的数字(即2和3)。现在我有

for x in range(0, 101):
    if x % (2 and 3) == 0: print("2, 3: ", x)
    elif x % 2 == 0: print("2: ", x)
    elif x % 3 == 0: print("3: ", x)
但是它是不准确的,有什么建议吗?

(2和3)
的计算结果是
3
,这就是为什么您从未看到执行的条件
elif x%3==0
,请注意在代码的输出中没有
打印(“3:,x)
,因为如果x%(2和3)==0,它已经落入条件

如果((x%2)==0和(x%3)==0):在该行上打印(“2,3:”,x)

(2和3)
的计算结果为
3
,这就是为什么您从未看到执行的条件
elif x%3==0
,请注意在代码的输出中没有
打印(“3:”,x)
,因为如果x%(2和3)=0,它已经陷入了条件

如果((x%2)==0和(x%3)==0),最好使用
if((x%2)==0):在该行上打印(“2,3:,x)

中,如果x%(2和3)==0
首先计算(2和3)的值,则应首先检查2的可除性,然后检查3的可除性。i、 e

if (x % 2) and (x % 3)
括号中的两个表达式返回布尔值,最后使用
进行计算

更正:

for x in range(0, 101):
    if (x % 2) and (x % 3): 
        print("2, 3: ", x)
    elif x % 2 == 0: 
        print("2: ", x)
    elif x % 3 == 0: 
        print("3: ", x)
中,如果x%(2和3)==0,则首先计算(2和3)的值,您应该先检查2的整除性,然后再检查3的整除性。i、 e

if (x % 2) and (x % 3)
括号中的两个表达式返回布尔值,最后使用
进行计算

更正:

for x in range(0, 101):
    if (x % 2) and (x % 3): 
        print("2, 3: ", x)
    elif x % 2 == 0: 
        print("2: ", x)
    elif x % 3 == 0: 
        print("3: ", x)

它不准确的原因是编写
x%(2和3)
python正在解释(2和3)。()

在python中(2和3)将返回3,因为这两个值都是“truthy”,python中的and比较运算符将在这两个项都为
True
时返回最后一个值

根据Rajesh Kumar的建议,你可以

如果x%6==0:#。。。

如果x%2==0和x%3==0:#更详细。。。

它不准确的原因是写
x%(2和3)
python正在解释(2和3)。()

在python中(2和3)将返回3,因为这两个值都是“truthy”,python中的and比较运算符将在这两个项都为
True
时返回最后一个值

根据Rajesh Kumar的建议,你可以

如果x%6==0:#。。。

如果x%2==0和x%3==0:#更详细。。。

如果你有一个数字必须被数字
x
和数字
y
分割,你可以这样看它: 如果在除数
x
或除数
y
的除法后剩下一些余数,则当前考虑的数字
toDivide
不是您要查找的数字,因为您想要的数字中,任何除法都不会导致余数

x = 2
y = 3
for toDivide in range(1, 101):
    # can't divide by x and y
    if toDivide%x and toDivide%y:
        continue
    print((str(x)+", "+str(y) if not toDivide%x and not toDivide%y else (str(x) if not toDivide%x else str(y)))+":"+str(toDivide))

编辑:找到并解决了代码错误

如果您有一个必须按编号
x
和编号
y
划分的编号,您可以如下所示查看该编号: 如果在除数
x
或除数
y
的除法后剩下一些余数,则当前考虑的数字
toDivide
不是您要查找的数字,因为您想要的数字中,任何除法都不会导致余数

x = 2
y = 3
for toDivide in range(1, 101):
    # can't divide by x and y
    if toDivide%x and toDivide%y:
        continue
    print((str(x)+", "+str(y) if not toDivide%x and not toDivide%y else (str(x) if not toDivide%x else str(y)))+":"+str(toDivide))

编辑:在第二行中发现并解决了代码错误

使用x%6而不是x%(2和3),如果你想从1到100,那么将范围更改为(1102)@StefanPochmann刚从接受的答案中了解到这一点,请参见我的评论。在第二行中使用x%6而不是x%(2和3),如果你想从1到100,那么将范围更改为(1102)@StefanPochmann刚从接受的答案中了解到这一点,请参见我的评论。
(2和3)
首先求值与运算符优先级无关。我想说的是括号中的值首先求值。
(2和3)
首先求值与运算符优先级无关。我想说的是括号中的值首先求值。@StefanPochmann确实很完美,我的错,我会相应地编辑答案,谢谢!Python用
2和3
返回
3
来逗我开心。这个信息很难消化。虽然我只是在看到你的答案被编辑后才检查。@StefanPochmann确实很完美,我的错,我会相应地编辑答案,谢谢!Python用
2和3
返回
3
来逗我开心。这个信息很难消化。虽然我只是在看到你的答案被编辑后才检查。