[英](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)
) 计数,
output
。结果:
x
xx
xxx
xxxx
xxxxx
x_count = 2
,因此在内循环的第二次迭代中, print 语句将执行 2 次,因为循环从 0 - 2 ( range(2)
) 计数
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.