我是否错误地使用了模运算符?

时间:2016-05-26 18:35:53

标签: python syntax operators modulo

如果我的理解是正确的,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 +计数%3或1 +计数%5永远不等于0.我错过了什么?

编辑: 我似乎也错过了基础数学。

2 个答案:

答案 0 :(得分:3)

不要使用按位OR,并使用paranthesis(operator precedence)!

尝试:

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

答案 1 :(得分:1)

public partial class Form1 : Form { public Form1() { InitializeComponent(); DataTable dt = new DataTable(); DataColumn prodName = new DataColumn("Products"); dt.Columns.Add(prodName); dt.Rows.Add("a"); dt.Rows.Add("b"); dt.Rows.Add("c"); comboBox1.DataSource = dt; comboBox1.DisplayMember = "Products"; comboBox1.ValueMember = "Products"; } } public class Person { public string FirstName { get; set; } public string LastName { get; set; } } 的运营商优先级与%相同且高于/,这意味着:

+

,它永远不会是1+count % 3 == 1 + (count % 3) ,因为modulo返回0到2之间的值。