我正在尝试理解一个复杂的流程控制,我无法开始工作,所以我简化了它,也不了解它的工作原理。
简化的流量控制是:
smurf = True
print('smurf status: ', smurf)
jackets = list(range(5))
print(jackets)
for j in jackets:
print('la la la la', j, '\n')
while smurf is True:
print('jacket is :', j)
if j == jackets[-3]:
smurf = False
break
print('smurf is FALSIOOOO')
j += 1
print('smurf with jacket ',j-1, ' be ok')
print('END OF SMURFGATE') 输出为:
smurf status: True
[0, 1, 2, 3, 4]
la la la la 0
jacket is : 0
smurf with jacket 0 be ok
jacket is : 1
smurf with jacket 1 be ok
jacket is : 2
la la la la 1
la la la la 2
la la la la 3
la la la la 4
END OF SMURFGATE我认为会发生的(但没有发生)是,一旦j次迭代达到测试条件,while循环将停止,流控制将跳到脚本的最后一行,并输出'END of SMURFGATE‘。
所需输出:
smurf status: True
[0, 1, 2, 3, 4]
la la la la 0
jacket is : 0
smurf with jacket 0 be ok
la la la la 1
jacket is : 1
smurf with jacket 1 be ok
la la la la 2
jacket is : 2
END OF SMURFGATE发布于 2020-05-07 15:34:04
对于for -循环,您缺少了一个额外的中断,现在您只中断了while循环。试试这个:
smurf = True
print('smurf status: ', smurf)
jackets = list(range(5))
print(jackets)
for j in jackets:
print('la la la la', j, '\n')
while smurf is True:
print('jacket is :', j)
if j == jackets[-3]:
smurf = False
break
print('smurf is FALSIOOOO')
j += 1
print('smurf with jacket ',j-1, ' be ok')
break # To escape the for-loop
print('END OF SMURFGATE') 输出:
smurf status: True
[0, 1, 2, 3, 4]
la la la la 0
jacket is : 0
smurf with jacket 0 be ok
jacket is : 1
smurf with jacket 1 be ok
jacket is : 2
END OF SMURFGATEhttps://stackoverflow.com/questions/61652097
复制相似问题