Python基础回顾(3)——for循环的储备知识之Python的缩进

  • 文章目录

    前言

    一、for循环初体验

    二、一个神奇的现象

    1.for怎么不循环了?

    2.Python逻辑行与物理行

    3.缩进规则

    总结


前言

        循环是编程中很重要的一项,在学习Python循环之前,要先弄明白缩进。本文主要使用for循环为例子,讲解物理行和代码行是什么,同时讲解缩进的规则。


一、for循环初体验

        上一节讲到了,列表可以遍历,具体用法如下:

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
for day in week:
    print(day)

        这几条语句的输出如下:

Python基础回顾(3)——for循环的储备知识之Python的缩进_第1张图片

        这样就构成了一个简单的for循环,其运行方法如下:

        用上述代码举例 。Python将首先读取其中的第一行代码:or day in week:

        这行代码让Python获取列表week中的第一个值('Monday'),并将其赋值给变量day

        接下来,Python读取下一行代码:print(day)

        它让Python打印week的值——依然是'Monday'。

        鉴于该列表还包含其他值,Python返回到循环的第一行: for day in week:

        Python获取列表中的下一个名字——'Tuesday',并将其存储到变量day中。

        再执行下面这行代码:print(day)

        Python再次打印变量week的值——当前为'Tuesday'。

        接下来,Python再次执行整个循环……以此类推,直到列表中再没有其他的元素的时候,Python就会跳出这个循环,接着执行程序的下一行代码。在这个示例中,for循环后面没有其他的代码,因此程序就此结束。 

        

        通过for循环,可对每个元素执行任何操作。下面来扩展前面的示例,对于每一天,都可以介绍今天是星期几,例如:

for day in week:
    print('Today is', day+'.')

        结果如下:

Python基础回顾(3)——for循环的储备知识之Python的缩进_第2张图片

        原理同上。在for循环中,想包含多少行代码都可以。实际上,你会发现使用for循环对每个元素执行众多不同的操作很有用。

二、一个神奇的现象

1.for怎么不循环了?

        写如下代码:

for day in week:
    print('此时循环还没结束呢!')
    print(day)
print('当代码中的缩进取消时,意味着这一行不在for循环之中。')
print('所以从这一段开始,就不会再循环了!')

        结果如下:

Python基础回顾(3)——for循环的储备知识之Python的缩进_第3张图片

         欸!怎么最后两句话不循环了呀!为什么会这样呢?这时候就不得不讲讲Python的缩进功能了。可以看见,上面代码中的前两个print行于后两个print行有些小区别——前两行开头有一个长长的空格,后两行顶格写。

        这个长长的空格就叫“缩进”。它其实不是简单的空格,而是四个空格组成的一种特殊格式。可以通过敲击空格键四次打出,也可以简单按一下“Tab”键完成缩进。

        讲缩进,那就得先讲讲备用知识。

2.Python逻辑行与物理行

        Python存在两种”行“,分别是物理行和逻辑行。

        物理行是你在编写程序时所看见的、写在一行内的。

        逻辑行是在Python视野中,它能看见的一行语句。

         Python假定每个物理行对应一个逻辑行 。

        比如上述:print(day)   就是一个物理行,它同样也是一个逻辑行。

        如果你想要在一个物理行中使用多于一个逻辑行,那么你需要使用分号来特别地标明这种用法。分号表示一个逻辑行/语句的结束。例如:

for day in week:
    print('此时循环还没结束呢!')
    print(day)

它包含了三个物理行和三个逻辑行。同时也可以写作:

for day in week:
    print('此时循环还没结束呢!') ;print(day)

它包含了两个物理行和三个逻辑行。甚至也可以写作:

for day in week:print('此时循环还没结束呢!');print(day)

这一段代码只有一个物理行,却有三个逻辑行。

在python代码中:

1、使用分号(;)可以将两个或多个逻辑行合并成一个物理行;
2、使用反斜杠(\)可以讲多个物理行合并成一个逻辑行;
3、字典、列表等变量赋值语句,可以直接写成多个物理行。

        一般而言,为了方便读写,在每个物理行只写一句逻辑行。仅仅当逻辑行太长的时候,可以在多于一个物理行写一个逻辑行,以避免使用分号,从而让代码更加易读。

3.缩进规则

        1、逻辑行的“首行”需要顶格,不缩进;

        2、相同逻辑层保持相同的缩进;

        3、用冒号(:)标记一个新的逻辑层,如果要进入下一个逻辑层,需要增加缩进;如果要返回上一个,则要把缩进还原。

基于这个规则,看看上面那个代码吧!

for day in week:
    print('此时循环还没结束呢!')
    print(day)
print('当代码中的缩进取消时,意味着这一行不在for循环之中。')
print('所以从这一段开始,就不会再循环了!')

        这一段代码有5个物理行。

        首先物理行的第一行,因为是逻辑行的首行,表明要开启for循环,所以for顶格不用缩进。

        然后因为要循环的内容(两个print语句)和for后面的语句(day in week),属于不同的逻辑层(理解为干不同的事情),所以需要用冒号标记新的逻辑层。同时,由于进入了新的代码层,需要缩进。

        第二个物理行,是要循环打印一行汉字。同时第三个物理行也是要循环打印列表的内容。所以属于同一个逻辑层,故而保持相同的缩进。

        第四第五个物理行,只要求打印两行汉字,不需要循环。所以不属于“循环的那个逻辑层”,也即需要返回上一个逻辑层,所以把缩进还原。

        用人话总结就是——for循环,首先for顶格,然后需要循环的内容都要缩进。在for缩进之内的都归for管。不想循环的内容(想跳出循环),就要把缩进还原。

        


总结

        以上便是Python缩进的规则。同时在使用循环中,会有五种非常严重的错误。

        1、忘记缩进;就是忘记了循环的内容需要缩进。

        2、忘记缩进额外的代码行;即忘记了循环之内其他语句的缩进。

        3、忘记不缩进(进行了没必要的缩进);即本该顶格写的东西,突然加上缩进,这样会引起报错“IndentationError: unexpected indent

        4、不想循环却缩进;即不想循环的内容,如果加上了缩进,就会被纳入循环。

        5、漏掉冒号;就是忘了告诉Python要进入下一个逻辑层了,它就会错乱(报错)“SyntaxError: invalid syntax”

        

        这五种错误,本质上还是没有理解缩进的正确用法。所谓是熟能生巧,在编写大长段代码的时候,一个缩进的错误,可能会让结果天差地别!

你可能感兴趣的:(Python基础,python,开发语言,算法)