我正在尝试将此代码替换为将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)
答案 0 :(得分:2)
您有两个单独的if
,因此您输入第一个is56
至False
,然后立即输入第二个并将其重新设置为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)