为什么不能在条件语句的代码中分解出 LCM 变量?

Why can you not factor out the LCM variable in the code for conditional statement?

无法理解因式分解 0 的布尔表达式。

x,y=24,36

LCM=1

counting=True

while counting:
    if (LCM%x and LCM%y) == 0:
        print('The LCM is {}'.format(LCM))
        break
    
    LCM+=1

LCM 计算结果为 24,这是错误的

但是这段代码给出了正确的 LCM:

x,y=24,36

LCM=1

counting=True

while counting:
    if LCM%x==0 and LCM%y == 0:
        print('The LCM is {}'.format(LCM))
        break
    
    LCM+=1

LCM为72,正确

现在为什么不能分解出0?通常,如果我键入类似 2 和 3 == 0 的内容,表达式的计算结果为 false,但语法在上面的示例中不应该类似地工作。所以我很困惑。

因为这里'它像二元运算一样发生而不是逻辑检查语句

(0 和 1) = 0 当 LCM = 24

if (LCM%x and LCM%y) == 0:

发生这种情况是因为此处的值为 0 和 1(Python 将其误认为是二元运算,但您想要其他东西)。

如果它像(24 和 36)那么它会 return 两个中的最大值!所以当你给Python/any语言条件时要小心!

但这里是检查 LCM 是否可以被 x 整除的值

if LCM%x==0 and LCM%y == 0:

是 24%24 == 0?是 36%24 ==0 吗?

PS : 使用默认的Python IDLE,这样简单的操作会让你看得更清楚!

在 python 中,0 == False 的计算结果为 True。因此,当条件 (LCM%x and LCM%y)False 时,(LCM%x and LCM%y) == 0 的计算结果为 True。什么时候发生?每当值 LCM%xLCM%y 中的 为零时。

在你的第二个例子中,你有 LCM%x==0 and LCM%y == 0 只有当 both LCM%xLCM%y 是零。