繁体   English   中英

(python) 在嵌套循环中,为什么以及如何缩进 print() 影响结果

[英](python) In nested loops, why and how does indenting print() affect the result

你好只是在玩,看到这两个代码导致两种不同的结果。 显然结果会有所不同,但为什么呢? 它们的工作方式有何不同? 提前致谢!

第一个代码

number = [5,2,5,2,2]

for x_count in number:

    output = ""

    for count in range(x_count):

        output = output + "x"

    print(output)

结果

第二个代码

number = [5,2,5,2,2]

for x_count in number:

    output = ""

    for count in range(x_count):

        output = output + "x"

        print(output)

结果

range() function 返回一个数字序列,从 0 开始并递增 1,并在指定数字之前停止。

您只需要逐步走下循环即可弄清楚发生了什么:

第一个程序

您有一个 5 和 2 的整数列表。共有5项。

number = [5,2,5,2,2]

在第一个外部循环中,x_count 变量保存列表中每个项目的值

for x_count in number:

这意味着:

  • 第一次迭代, x_count = 5
  • 第二次迭代, x_count = 2
  • 第三次迭代, x_count = 5 ...依此类推

接下来,您将创建一个变量output来保存一个字符串:

output = ""

内部循环是棘手的地方:

for count in range(x_count):

范围 function 将生成从零到x_count的值范围,请记住x_count变量的值取决于外部循环的当前迭代。 所以范围 function 参数看起来像这样:

  • 第一次外循环迭代 - range(5)
  • 第二次外循环迭代 - range(2)
  • 第三次外循环迭代 - range(5) ...等等

在内部循环中,您将字符串“x”连接到output的现有值。 并且只有在内循环完成时,才打印output的值(因为打印语句位于内循环之外,即在外循环上下文中)。 这意味着:

  • 第一次内循环迭代, output的值为"xxxxx" ,因为内循环最多计数 5( range(x_count) where x_count = 5
  • 第二次内循环迭代, output的值为"xx" ,因为内循环最多计数 2( range(x_count) where x_count = 2

...等等。

在内部循环之外打印 range 的值只会给你 5 个字符串,因为打印语句在外部循环内,而外部循环最多只能计数 5( number列表的长度)。

第二个节目

第一个程序中的所有内容都适用,除了 print 语句的上下文。 在这种情况下, print语句位于内部循环上下文中,这意味着它仅在内部循环的上下文中发生迭代时才打印值。 它将按以下顺序打印output的值:

  • 在外部循环的第一次迭代中, x_count = 5因此在内部循环的第一次迭代中,print 语句将被调用 5 次,因为循环从 0 到 5 ( range(5) ) 计数,
    • 对于内部循环中的每次迭代,将一个新的“x”字符串连接到output

结果:

x
xx
xxx
xxxx
xxxxx
  • 在外循环的第二次迭代中, x_count = 2 ,因此在内循环的第二次迭代中, print 语句将执行 2 次,因为循环从 0 - 2 ( range(2) ) 计数
    • output 重置为空字符串
    • 对于每次迭代,将“x”连接到output

结果:

x
xx

对列表中的下 3 个项目重复此流程。 你得到:

范围(5):

x
xx
xxx
xxxx
xxxxx

范围(2):

x
xx

范围(2):

x
xx

当两个循环都完成时,将它们放在一起,您将得到: 结果:

x
xx
xxx
xxxx
xxxxx
x
xx
x
xx
xxx
xxxx
xxxxx
x
xx
x
xx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM