如果声明没有触发

时间:2016-10-24 18:09:25

标签: python if-statement

我正在尝试将此代码替换为将i设置为56并将i设置为0,我似乎无法触发第二个if语句。第一个有效。

  while True:
        print 'is55 before if logic is' + str(is56)
        if is56 == True:
            i = 0 
            is56 = False 
            #print 'true statement' + str(i)
            print 'True is56 statement boolean is ' + str(is56)
        if is56 == False:   
            i = 56 
            is56 = True                
        print  'i is ' + str(i)

4 个答案:

答案 0 :(得分:2)

您有两个单独的if,因此您输入第一个is56False,然后立即输入第二个并将其重新设置为True 。相反,您可以使用else子句:

while True:
    print 'is55 before if logic is' + str(is56)
    if is56:
        i = 0 
        is56 = False 
    else: # Here!
        i = 56 
        is56 = True                
    print  'i is ' + str(i)

答案 1 :(得分:1)

有任何异议吗?

while True:
    print 'is55 before if logic is' + str(is56)
    i = is56 = 0 if is56 else 56             
    print  'i is ' + str(i)

答案 2 :(得分:0)

第一个if块中的更改会立即被下一个块反转。

您想要用单个if块替换单独的if/else块。

另外,您可以简单地使用itertools.cycle对象来实现此目的:

from itertools import cycle

c = cycle([0, 56])

while True:
    i = next(c)
    print  'i is ' + str(i)
    # some code

答案 3 :(得分:0)

如果没有elif,原始代码(如果有效)将执行两个块。为什么不:

def print_i(i):
    print 'i is ' + str(i)

while True: 
    print_i(56)
    print_i(0)