我是不是用错了模运算符了?

2024-07-07 09:04:58 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我的理解是正确的,5%5应该等于0。但是,当我运行此代码时:

endless = 0
while endless == 0:
    n = int(input("Provide a number here:  "))
    count = 0
    sum = 0
    while count < n:
        if 1+count % 3 == 0 | 1+count % 5 == 0:
            sum += 1 + count
        count += 1
        if count >= n:
            print(sum)

它总是返回0,这意味着1+count%3或1+count%5从不等于0。我错过了什么?你知道吗

编辑: 我好像也错过了基础数学。你知道吗


Tags: 代码编辑numberinputifherecount数学
2条回答

%的运算符优先级与/相同且高于+,这意味着:

1+count % 3 == 1 + (count % 3)

它永远不会是0,因为模返回一个介于0和2之间的值。你知道吗

不要使用按位或,而要使用旁命题(operator precedence)!你知道吗

尝试:

(1+count) % 3 == 0 or (1+count) % 5 == 0:
^       ^          ^^ ^       ^

相关问题 更多 >