Python语句中的Python循环崩溃:如果c!= i& c!= a& c!= b:

时间:2015-08-04 18:13:50

标签: python

我在while循环中遇到if语句的问题,每次都在同一个地方崩溃:如果c!= i& c!= a& c!= b:。当我评论这个陈述时,它有效。有谁知道为什么? 这是代码片段:

while COUNT < GENERATIONS:       
    for i in range(0,NP):
        while True:
            a = randint(0,NP-1)
            if a != i:
                break
        while True:
            b = randint(0,NP-1)
            if b != i & b != a:
                break
        while True:
            c = randint(0,NP-1)
            if c != i & c != a & c != b:
                break

2 个答案:

答案 0 :(得分:1)

您使用了错误的运算符,因此您得到了一个非常不同的表达式。

感谢operator precedence而不是测试(c != i) & (c != a) & (c != b),您实际测试表达式c != (i & c) != (a & c) != b,其中&执行按位ic以及ac个操作数的操作。

您想使用逻辑 and运算符,该运算符的优先级低于比较值:

while True:
    a = randint(0,NP-1)
    if a != i:
        break
while True:
    b = randint(0,NP-1)
    if b != i and b != a:
        break
while True:
    c = randint(0,NP-1)
    if c != i and c != a and c != b:
        break

请注意,如果您想选择3个唯一的随机数,可以将random.sample()xrange()对象({3}}用于Python 3)一起使用:

range()

答案 1 :(得分:0)

您使用的是按位NSString *serverIP = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CompanyNameDevServerIP"]; 运算符,而不是布尔&关键字。将and更改为&,您的代码实际上会进行布尔比较。