python缩进格式错误的是_Python避免缩进错误(53)

Python根据缩进来判断代码行与前一个代码行的关系。Python通过使用缩进让代码更易读。简单地说,它要求你使用缩进让代码整洁而结构清晰。在较长的Python程序中,你将看到缩进程度各不相同的代码块,这让你对程序的组织结构有大致的认知。

当你开始编写必须正确缩进的代码时,需要注意一些常见的缩进错误。例如,有时候,程序员会将不需要缩进的代码块缩进,而对于必须缩进的代码块却忘了缩进。通过查看这样的错误示例,有助于你以后避开它们,以及在它们出现在程序中时进行修复。

python大大的图

72854ab8172a

图片发自简书App

我的图

72854ab8172a

图片发自简书App

1.忘记缩进

对于位于for语句后面且属于循环组成部分的代码行,一定要缩进。如果你忘记缩进,Python会提醒你

IndentationError: expected an indented block.缩进错误,预期有一个缩进块。

对应在大大的代码上就是把第五行和第八行用于注释的三引号去掉,程序会提示第七行有缩进错误

72854ab8172a

图片发自简书App

通常,讲紧跟在for语句后面的代码行缩进,可消除这种缩进错误。

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

有时候,循环能够运行而不会报告错误,但结果可能会出乎意料。试图在循环中执行多项任务,却忘记缩进其中的一些代码行时,就会出现这种情况。就像下图显示的一样,对应的代码是九到十二行,忘记缩进第十二行(它告诉每位魔术师,我们期待他的下一次表演),就会出现这种情况:

72854ab8172a

图片发自简书App

for循环后面的第二条print语句(第十二行)原本需要缩进,但Python发现for语句后面有一行代码是缩进的,因此它没有报告错误。最终的结果是,对于列表中的每位魔术师,都执行了第一条print语句,因为它缩进了;而第二条print语句没有缩进,因此它只在循环结束后执行一次。由于变量magician的终值为'carolina',因此只有她收到了消息"I can't wait to see your next trick"。这是一个逻辑错误。从语法上看,这些Python代码是合法的,但由于存在逻辑错误,结果并不复合预期。如果你预期某项操作将针对每个列表元素都执行一次,但它却只执行了一次,请确定是否需要将一行或多行代码缩进。

在这个程序里,显然我们是要对每个魔术师说"I can't wait to see your next trick",因此需要缩进for循环后面第二个print语句(第十二行)。缩进后结果如下

72854ab8172a

图片发自简书App

而且第十二行和第十一行的缩进长度必须一样。如果不一致会出现以下两种错误

72854ab8172a

图片发自简书App

72854ab8172a

图片发自简书App

3.不必要的缩进

如果你不小心缩进了无需缩进的代码行,Python将指出这一点:SyntaxError: invalid syntax。语法错误:无效的语法。这就是上图犯的错误。为避免意外缩进错误,请只缩进需要缩进的代码。在for循环中,只有要在for循环中对每个元素执行的代码需要缩进。

4.循环后不必要的缩进

如果你不小心缩进了应在循环结束后执行的代码,这些代码将针对每个列表元素重复执行。在有些情况下,这可能导致python报告语法错误,但在大多数情况下,这只会导致逻辑错误。

例如,如果不小心缩进了感谢全体魔术师精彩表演的代码行,结果如下

72854ab8172a

图片发自简书App

这也是一个逻辑错误,与忘记缩进循环后额外的代码行类似。Python不知道你的本意,只要代码复合语法,它就会运行。如果原本只应执行一次的代码执行了多次,请确定你是否不应该缩进执行该操作的代码。

将代码修改后结果如下

72854ab8172a

图片发自简书App

5.遗漏了冒号

for语句末尾的冒号告诉python,下一行是循环的第一行。如果你不小心遗漏了冒号,如下图所示,将导致语法错误,因为python不知道你意欲何为。

72854ab8172a

图片发自简书App

修改后结果如下

72854ab8172a

图片发自简书App

这种错误虽然易于消除,但并不那么容易发现。程序员为找出这样的单字符错误,花费的时间多的令人惊讶。这样的错误之所以难以发现,是因为通常在我们的意料之外。

总结一下今天的内容:今天的代码是为了让我们避免缩进错误。而缩进可以出现的错误一共有五种:1.忘记缩进。2.忘记缩进额外的代码行。3.不必要的缩进。4.循环后不必要的缩进。5.遗漏了冒号。其中错误1.3.5.会报错,而错误2.4.大多数情况瞎是逻辑错误,不会报错。

虽然代码简单,但是简单的地方往往是易错的地方,容易被忽略,所以更需要细致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值