当我以5的n值运行此代码时,得到25。当我以n值为3的代码运行时,得到9。我理解输入和输出之间存在n ^ 2关系,但是为什么要这样做5的值,我得到n ^ 2以及如何?有人可以进一步解释吗?
n = input()
n = int(n)
count = 0
for i in range(n):
for j in range(n):
count += 1
print("n =",n, "count =",count)
答案 0 :(得分:3)
for
循环为iterable中的每个值执行一次循环体。在这两个循环中,一个可迭代的对象是range(n)
对象,该对象产生从n
到0
的{{1}}值序列,因此循环体被执行{{1} }次。
对于内部循环,循环主体为n - 1
,但是内部循环本身嵌套在外部循环中。
您可以展开循环并复制其主体n
次。让我们在代码中填写count += 1
:
n
对于n = 3
,count = 0
for i in range(3):
for j in range(3):
count += 1
对象产生n = 3
,range()
和0
,它们分别由外循环分配给1
。然后,可以通过用手动2
分配替换循环并在其下面复制内部循环(调整缩进)来展开外部循环:
i
然后我们可以进一步展开内部循环,分配给i = <value>
:
count = 0
i = 0
for j in range(3):
count += 1
i = 1
for j in range(3):
count += 1
i = 2
for j in range(3):
count += 1
因此,对于j
,我们必须将外部循环展开为3个独立的内部循环,然后将每个内部循环展开为另外3个count = 0
i = 0
j = 0
count += 1
j = 1
count += 1
j = 2
count += 1
i = 1
j = 0
count += 1
j = 1
count += 1
j = 2
count += 1
i = 2
j = 0
count += 1
j = 1
count += 1
j = 2
count += 1
调用,共3次3 == 9 {{1} }。
将其推广到任何n = 3
意味着您将count += 1
或count += 1
应用于最内层循环代码n
的幂2迭代。
当然,对于更复杂的代码,多次复制循环主体以弄清正在发生的事情变得不切实际。相反,您可以通过添加n * n
和n
语句或使用调试器逐步检查代码来告诉Python它在做什么。