python50-Python流程控制if分支之不要忘记缩进

代码块一定要缩进,否则就不是代码块,如下面的程序

# !/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2024/01

# @Author : Laopi

age = input("请输入你的年龄:")

age = int(age)

if age>18:

print("你已经成年了")

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

if条件后的条件执行体一定要缩进。只有缩进后的代码才能算条件执行体。

那到底要缩进多少?

这个没有特殊规定,你可以缩进1个空格、2个空格、3个空格·····或1个Tab位,这都是符合语法要求的。

从习惯上来说,python一般建议是缩进4个空格

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

# !/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2024/01

# @Author : Laopi

age = input("请输入你的年龄:")

age = int(age)

if age>18:

    print('你已经大于18岁了')

print("你已经成年了")

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

从运行过程可以看出,我们输入的年龄明明小于20,但运行结果还是会打印“20岁以上······这是为什么呢?就是因为这条print语句没有缩进。如果这行代码不缩进,那么Python就不会把这行代码当成条件执行体,它就不受if条件的控制,因此无论用户输入什么年龄,print语句总会执行。

如果忘记正确地缩进,很可能导致程序的运行结果超出我们的预期。例如如下程序

#定义变量b,并为其赋值

b = 7

if b >4:

#如果b>4,则执行下面的条件执行体,只有一行代码作为代码块

print("b大于4")

else:

#否则,执行下面的条件执行体,只有一行代码作为代码块

b-=1

# 对于下面代码而言,它已经不再是条件执行体的一部分,因此总会执行

print("b不大于4")

上面代码中以第10行:print("b不大于4")总会执行,因为这行代码没有缩进,因此它就不属于else后的条件执行体,else后的条件执行体只有b-=1这一行代码。如果要让print(“b不大于4")语句也处于else控制之下,则需要让这行代码也缩进4个空格if,else,elif后的条件执行体必须使用相同缩进的代码块,将这个代码块整体作为条件执行体。当缩进后有多条语句作为条件执行体时,如果忘记了缩进某一行代码,则会引起语法错误。看下面代码(程序清单同上)。

#定义变量c 并为其赋值

c = 5

if c > 4:

# 如果c>4,则执行下面的条件执行体,只有c-=一行代码为条件执行体

c-=1

# 下面是一行普通代码,不属于条件执行体

print("c大于4")

# 此处的else将没有if语句,因此编译出错

else:

#否则,执行下面的执行体,只有一行代码作为代码块

print("c不大于4")

在上面代码中,因为if后的条件执行体的最后一条语句没有缩进,所以系统只把c-= 1一行代码作为条件执行体,当c-=1语句执行结束后,if语句也就执行结束了。后面的print("c大于4")已经是一行普通代码,不再属于条件执行体,从而导致else 语句没有if语句,引发编译错误。运行上面代码,将看到如下错误。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件测试老痞

你的支持,是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值