Python这个缩进让我焦头烂额!最奇葩的缩进...

 
 

例如以下程序。编程

 
 

运行上面代码,若是输入年龄小于20,将会看到以下运行结果。学习

 
 

从上面代码能够看出,若是输入的年龄大于20,则程序会执行总体缩进的代码块。spa

再次重复:Python不是格式自由的语言,所以你不能为所欲为地缩进,必须按Python语法要求缩进。下面详细介绍在缩进过程当中可能致使的错误。3d

不要忘记缩进orm

代码块必定要缩进,不然就不是代码块。例如以下程序。视频

 
 

上面程序的if条件与下面的print语句位于同一条竖线上,这样在if条件下就没有受控制的代码块了。所以,上面程序执行时会报出以下错误。blog

 
 

 

注意:if条件后的条件执行体必定要缩进。只有缩进后的代码才能算条件执行体。io

接下来读者会产生一个疑问:代码块(条件执行体)到底要缩进多少呢?这个随意。你能够缩进1个空格、2个空格、3个空格……或1个Tab位,这都是符合语法要求的。但从编程习惯来看,Python一般建议缩进4个空格。编译

有些时候,Python解释器不会报错,但并不表明程序没有错误。例如以下代码form

 
 

解释执行上面程序,程序不会报任何错误。但若是输入一个小于20的年龄,则可看到以下运行过程。

 
 

从运行过程能够看出,咱们输入的年龄明明小于20,但运行结果仍是会打印“20岁以上……”。这是为何呢?就是由于这条print语句没有缩进。若是这行代码不缩进,那么Python就不会把这行代码当成条件执行体,它就不受if条件的控制,所以不管用户输入什么年龄,print语句总会执行。

若是忘记正确地缩进,极可能致使程序的运行结果超出咱们的预期。例如以下程序。

 
 

面代码中以粗体字标识的代码行:print("b不大于4")总会执行,由于这行代码没有缩进,所以它就不属于else后的条件执行体,else后的条件执行体只有b - =1这一行代码。

若是要让print("b不大于4")语句也处于else控制之下,则须要让这行代码也缩进4个空格。

if、else、elif后的条件执行体必须使用相同缩进的代码块,将这个代码块总体做为条件执行体。当if后有多条语句做为条件执行体时,若是忘记了缩进某一行代码,则会引发语法错误。看下面代码(程序清单同上)。

 
 

在上面代码中,由于if后的条件执行体的最后一条语句没有缩进,因此系统只把c - = 1一行代码做为条件执行体,当c -= 1语句执行结束后,if语句也就执行结束了。后面的print("c大于4")已是一行普通代码,再也不属于条件执行体,从而致使else语句没有if语句,引起编译错误。在学习中有迷茫不知如何学习的朋友小编推荐一个学Python的学习q u n 227  -435-  450能够来了解一块儿进步一块儿学习!免费分享视频资料

运行上面代码,将看到以下错误。

 
 

为了改正上面的代码,须要让print("c大于4")也缩进4个空格。

不要随意缩进

须要说明的是,虽然Python语法容许代码块随意缩进N个空格,但同一个代码块内的代码必须保持相同的缩进,不能一会缩进2个空格,一会缩进4个空格。

例如以下代码。

 
 

上面程序中第二条print语句缩进了5个空格,在这样的状况下,Python解释器认为这条语句与前一条语句(缩进了4个空格)不是同一个代码块(这就是游标卡尺笑话的由来),所以Python解释器会报错。运行上面代码,将会报出以下错误。

 
 

把代码改成以下形式。

 
 

上面程序中第二条print语句只缩进了3个空格,它与前一条print语句(缩进了4个空格)一样不属于同一个代码块,所以Python解释器仍是会报错。运行上面代码,则会报出以下错误。

 
 

经过上面介绍能够看出,Python代码块中的全部语句必须保持相同的缩进,既不能多,也不能少。

注意:位于同一个代码块中的全部语句必须保持相同的缩进,既不能多,也不能少。

另外,须要说明的是,对于不须要使用代码块的地方,千万不要随意缩进,不然程序也会报错。例如以下简单的程序。

 
 

上面程序只有两条简单的执行语句,并无包括分支、循环等流程控制,所以不该该使用缩进。解释执行上面代码,将会看到以下错误。

 

  

 



来源:https://www.jianshu.com/p/253fcbfc0fde

相关文章
相关标签/搜索