这个问题在这里已有答案:
打印功能的输出根据其在代码中的位置而有所不同,这对我来说很清楚。 但是我无法断定它为什么这样做。
1.
fruits = ["apple", "banana", "cherry"]
for x in fruits:
if x == "banana":
continue
print(x)
2.
fruits = ["apple", "banana", "cherry"]
for x in fruits:
if x == "banana":
continue
print(x)
3.
fruits = ["apple", "banana", "cherry"]
for x in fruits:
if x == "banana":
continue
print(x)
1号将输出apple
和cherry
,而2号将不打印,3号将仅打印cherry
。
我明白continue
会跳过香蕉的循环,因此不打印它,但我不确定为什么2.什么都不打印,3。打印樱桃。
3,print(x)
不是循环的一部分。所以它打印x
的最后一个值(樱桃)。
在2中,print(x)
永远不会执行,因为它只是在继续之后 - 这使得控件转到循环的顶部。
数字2中的print()无法访问,因为它位于continue
后面,永远不会被执行。
1.每个水果都印有香蕉除外。因为当x等于香蕉时,if语句变为true,并且跳过该迭代,控件不会移动到print语句。这里的打印在外面,但在for循环内。这将打印每个值,除非有continue语句。在2.如果声明内部打印。因此,只有当x == banana时,它才会尝试打印,但在此之前继续!因此在print语句之前跳过其余代码。在3.打印在for循环之外。因此,在for循环结束后,将打印出樱桃X的值。(因为它是列表中的最后一个值)
在第一种情况下,print语句在“for”循环内,但在“if”语句之外(什么也不做)所以输出是:
"apple"
"banana"
"cherry"
在第二种情况下,print位于“IF”内,但它遵循“continue”语句(从“if”退出脚本执行的指令。):它永远不会被执行。
如果要在包含“banana”的情况下打印变量,则必须删除continue语句,或者在print语句之后写入
在第三种情况下,print语句在“FOR”循环之外,并将最后一个赋值的内容打印到“X”变量 - 在本例中为“cherry”。