为什么打印输出不同

时间:2019-04-01 15:46:24

标签: python python-3.x

print函数的输出因其在代码中的位置而异,这一点我很清楚。
但是我不能得出结论为什么这样做。

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将输出applecherry,数字2将不输出任何内容,数字3将仅输出cherry

我确实知道continue会跳过香蕉的循环,因此不打印它,但是我不确定为什么2.什么都不打印而3.打印出樱桃。

4 个答案:

答案 0 :(得分:1)

在3中,print(x)不是循环的一部分。因此,它将打印x的最后一个值was(cherry)。

在2中,print(x)永远不会执行,因为它紧接在继续之后-这使控件进入了循环的顶部。

答案 1 :(得分:0)

数字2中的print()无法访问,因为它位于continue后面,将永远不会执行。

答案 2 :(得分:0)

在1。 除香蕉外,所有水果均被印刷。因为当x等于香蕉时,if语句变为true,并且该迭代被跳过,因此控件不会移至print语句。这里的打印在if循环之外,但在for循环内部。除非存在继续语句,否则将打印每个值。 在2。 打印在if语句中。因此,仅当x == banana时,它才会尝试打印,但在此之前继续!因此,其余的代码在print语句之前被跳过。 在3。 打印不在for循环中。因此,在for循环完成之后,将打印出樱桃的X值。(因为它是列表中的最后一个值)

答案 3 :(得分:0)

在第一种情况下,print语句位于“ for”循环内,但位于“ if”语句之外(不执行任何操作),因此输出为:

"apple"
"banana"
"cherry"

在第二种情况下,打印位于“ IF”内部,但紧跟在“ continue”语句之后(指令从“ if”退出脚本的执行。):它将永远不会执行。

如果要在变量2包含“香蕉”的情况下打印变量,则必须删除continue语句,或在print语句之后写入它。

在第三种情况下,print语句在“ FOR”循环之外,并将最后一个赋值的内容打印到“ X”变量-在本例中为“ cherry”。