我对编程完全陌生,决定从学习Python开始我的旅程。在此过程中,我在了解代码在缩进方面的行为方面遇到了一些问题。我举个例子:
问题:
给定一个整数数组,返回数组中9的个数。
我的第一次尝试是这样的:
def array_count9(nums):
list_of_9 = []
for num in nums:
if num == 9:
list_of_9.append(1)
return sum(list_of_9)
这是错误的,我后来发现(经过反复试验),原因是我没有正确地缩进我的最后一行代码。
正确答案应该是:
def array_count9(nums):
list_of_9 = []
for num in nums:
if num == 9:
list_of_9.append(1)
return sum(list_of_9)
这是我反复遇到的问题,我想这是因为我不太理解Python是如何处理缩进的。
我现在知道正确的答案是正确的,因为在我第一次尝试时,我告诉Python在测试第一个整数是否为9之后立即返回列表中对象的和。在正确的示例中,Python将遍历所有数字,并且只有在完成后,才返回到先前的缩进并返回列表。
我不知道,我想我想知道是否有人可以提供一个“演练”在每一行好的发生了什么,或引导我到一个资源,进一步讨论这一点。我在网上找过这样的资源,但一直找不到。
任何帮助都将不胜感激!
发布于 2018-07-24 02:53:23
在许多语言中,缩进被用来使代码看起来整洁且易于阅读。然而,Python并非如此。在Python中,需要缩进来指示语句所属的代码块。例如,让我们看一下下面的代码:
for i in range(0,5):
print(i)
print("All done!")
语句print(i)
在for循环下缩进;这意味着该语句在for循环下。因此,该语句将被执行5次。因为语句print("All done!")
没有缩进,所以它不在for循环下;因此,它将只执行一次。上述代码的输出为
%0
1
2
3.
4.
全都做完了!
现在,让我们稍微修改一下代码。
for i in range(0,5):
print(i)
print("All done!")
现在,由于两个print语句都在for循环下缩进,因此它们将被执行5次。因此,现在的输出将是:
%0
全都做完了!
1
全都做完了!
2
全都做完了!
3.
全都做完了!
4.
全都做完了!
现在,让我们看一下代码的初始版本。
def array_count9(nums):
list_of_9 = []
for num in nums:
if num == 9:
list_of_9.append(1)
return sum(list_of_9)
由于缩进的原因,在for循环下有返回语句。这意味着对于for循环的每一次迭代,都将调用return语句。但是,由于return语句结束了函数,因此for循环在其第一次迭代时停止。您希望在迭代数字之后返回list_of_9数组的总和。因此,return语句将位于for循环之后,因此不会在for循环下缩进。这就是为什么你的以下修正后的版本可以工作:
def array_count9(nums):
list_of_9 = []
for num in nums:
if num == 9:
list_of_9.append(1)
return sum(list_of_9)
https://stackoverflow.com/questions/51482379
复制相似问题