首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >了解如何在python中使用缩进背后的直觉

了解如何在python中使用缩进背后的直觉
EN

Stack Overflow用户
提问于 2018-07-23 23:27:28
回答 1查看 98关注 0票数 0

我对编程完全陌生,决定从学习Python开始我的旅程。在此过程中,我在了解代码在缩进方面的行为方面遇到了一些问题。我举个例子:

问题:

给定一个整数数组,返回数组中9的个数。

我的第一次尝试是这样的:

代码语言:javascript
复制
def array_count9(nums):
    list_of_9 = []
    for num in nums:
        if num == 9:
            list_of_9.append(1)
        return sum(list_of_9)

这是错误的,我后来发现(经过反复试验),原因是我没有正确地缩进我的最后一行代码。

正确答案应该是:

代码语言:javascript
复制
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将遍历所有数字,并且只有在完成后,才返回到先前的缩进并返回列表。

我不知道,我想我想知道是否有人可以提供一个“演练”在每一行好的发生了什么,或引导我到一个资源,进一步讨论这一点。我在网上找过这样的资源,但一直找不到。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 02:53:23

在许多语言中,缩进被用来使代码看起来整洁且易于阅读。然而,Python并非如此。在Python中,需要缩进来指示语句所属的代码块。例如,让我们看一下下面的代码:

代码语言:javascript
复制
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.

全都做完了!

现在,让我们稍微修改一下代码。

代码语言:javascript
复制
for i in range(0,5):
    print(i)
    print("All done!")

现在,由于两个print语句都在for循环下缩进,因此它们将被执行5次。因此,现在的输出将是:

%0

全都做完了!

1

全都做完了!

2

全都做完了!

3.

全都做完了!

4.

全都做完了!

现在,让我们看一下代码的初始版本。

代码语言:javascript
复制
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循环下缩进。这就是为什么你的以下修正后的版本可以工作:

代码语言:javascript
复制
def array_count9(nums):
    list_of_9 = []
    for num in nums:
        if num == 9:
            list_of_9.append(1)
    return sum(list_of_9)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51482379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档