Python避免缩进错误

前言

上篇文章我们讲了怎么遍历列表,很多同学之前可能学过C/C++或者Java,对代码格式可能不太重视。需要注意的是,C/C++或Java是通过 { } 确定循环体,所以无论你写的代码格式怎么不好看,你只要是把代码写在大括号 { }里面,一般都没有问题。

然而,我们的 Python 是没有 { } 的,所以对格式要求非常严格以确定代码块(如,循环体、函数体等),so,你写 Python 代码时可不能那么简单粗暴了,要像对待女朋友一样,温柔地敲代码还得注意代码整洁。

本文就以遍历列表为例,讲讲 Python 代码格式需要注意些什么。


1. 缩进

Python 根据缩进(一个tab)来判断当前代码行与前一个代码行的关系。

举个栗子:有个魔术师列表,向列表中每位魔术师表达他们的表演非常好并且期待他们下次表演,最后向全体魔术师表达感谢。

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician.title() + ", your trick is amazing!")
    print("I can't wait to see u next trick, " + magician.title() + "\n")

print("Thank u, everyone, That was a great magic show!")

运行结果如图1-1:

1-1

图1-1

第三行和第四行代码相对于 for 语句缩进了,所以这两句 print属于循环体,而第六行代码的 print 语句和 for 语句没有缩进关系,所以它不属于循环体,因此只执行一次。

Python 通过使用缩进让代码更易读;简单地说,它要求你使用缩进让代码整洁和结构清晰。

当你开始编写 Python 代码时,需要注意一些常见的 缩进错误。例如,有时候会将不需要缩进的代码块缩进,而对于必须缩进的代码块却忘了缩进。

接下来会讲一些比较常见的 缩进错误

zhunbeihaolema

2. 忘记缩进

对于位于 for 语句后面且属于循环组成部分的代码行,一定要缩进。

还记得我们 操作Python列表Ⅰ 文章里举的打印列表中每位魔术师名字的栗子嘛,现在我们故意不缩进看会发生什么:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
print(magician)

运行这段代码,哇哦,报错了,结果如图2-1:

2-1

图2-1

Python 没有找到期望的缩进代码块时会报 IndentationError: expected an indented block错误,通过查看这种错误提示,有助于你以后避开它们,以及在它们出现在程序中时进行修复。

3. 忘记缩进额外的代码行

有时候,循环能运行而不会报错,但结果可能会出乎意料。

试图在循环中执行多项任务,却忘记缩进其中的一些代码行时,就会出现这种情况。

例如,如果循环体中的第二行代码(它告诉每位魔术师,我们期待他的下次表演)没有缩进,代码就会写成这样:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician.title() + ", your trick is amazing!")
print("I can't wait to see u next trick, " + magician.title() + "\n")

就会出现如图3-1所示的结果:

3-1

图3-1

第二个 print 语句原本是需要缩进的,但 Python 发现 for 语句后有一个语句是缩进的,因此这段代码语法上没有问题,Python 解释器没有报错。但与我们想要的结果不一样。

我们想要的是,要告诉每一位魔术师,我们期待他的下次表演,而不是仅仅只告诉 Howord

至于为什么最后会是 Howord呢?

因为第二个 print 语句没有缩进,因此它只在循环结束后执行一次。由于循环结束后 magician 的最后值为 Howord,因此只有他收到了消息 I can’t wait to see u next trick, Howord

4. 不必要的缩进

如果你不小心缩进了不需要缩进的代码,Python会检查出这一点并且报错。

比如:

message = "Hello World!"
    print(message)

print 语句不属于上一行代码,因此它不需要缩进,如果你不小心对其进行了缩进,Python 会聪明地指出你的错误,如图4-1:

4-1

图4-1

还是我们熟悉的 IndentationError错误。

为了避免意外缩进错误,请只缩进需要缩进的代码。

5. 循环后不必要的缩进

如果你不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。

这会导致程序逻辑错误。

例如,循环体结束后的代码是要感谢全体魔术师精彩的演出,如果你把它缩进到了循环体中,代码会变成这样:

magicians = ['Kelvin', 'Vicky', 'Howord']
for magician in magicians:
    print(magician.title() + ", your trick is amazing!")
    print("I can't wait to see u next trick, " + magician.title() + "\n")

    print("Thank u, everyone, That was a great magic show!")

由于第六行代码被缩进了,它将针对每一位魔术师执行一次,结果如图5-1:

5-1

图5-1

这是一个逻辑错误,Python不知道你的本意,这段代码符合语法,所以程序没有报错,但结果却不如人意。

如果原本只应执行一次的操作执行了多次,请确定你是否不小心缩进了执行该操作的代码。

结尾语

很多人都认为格式不重要,在平常写代码的时候也不会在意,这会造成一个非常令人头疼的问题:别人很难看的懂你的代码并且一些细节的错误很难被发现。Python 这种强制规定代码格式的做法刚开始确定会让新手头疼,不习惯。但却从一开始帮助新手确立了良好的代码规范,这非常的棒!

不管你以后会不会从事 Python 开发,从今天起重视代码格式吧。

如果你在学习过程中有任何疑问,可以关注文章下方↓↓↓的公众号及时与我联系,我们相互讨论,共同学习。

最后,祝你学有所成。

公众号-猿天罡

欢迎大家点赞、关注、收藏,我是Kelvin,我们下期再见,(ToT)/~~~
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值