Python if else语句用法规范(注意事项)

2023-05-16

在使用 if elif else 条件语句时,需要初学者根据实际应用场景,自行设计表达式和代码块,而在这两部分中,有些细节需要初学者注意。

1) 代码块不要忘记缩进

代码块一定要缩进,否则就不是代码块。例如如下程序:

s_age = input("请输入您的年龄:")
age = int(s_age)
if age > 20 :
print("年龄已经大于20岁了")

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

IndentationError: expected an indented block

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

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

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

s_age = input("请输入您的年龄:")
age = int(s_age)
if age > 20 :
    print("年龄已经大于20岁了")
print("20岁以上的人应该学会承担责任...")

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

请输入您的年龄:12
20岁以上的人应该学会承担责任...

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

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

#定义变量b,并为其赋值
b = 5
if b > 4 :
    #如果b>4,则执行下面的条件执行体,只有一行代码作为代码块
    print("b大于4")
else:
    #否则,执行下面的条件执行体,只有一行代码作为代码块
    b -= 1
#对于下面代码而言,它己经不再是条件执行体的一部分,因此总会执行
print("b不大于4")

上面代码中,最后一行代码总会执行,因为这行代码没有缩进,因此它就不属于 else 后的条件执行体,else 后的条件执行体只有b -= 1这一行代码。

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

if、else、elif 后的条件执行体必须使用相同缩进的代码块,将这个代码块整体作为条件执行体。当 if 后有多条语句作为条件执行体时,如果忘记了缩进某一行代码,则会引起语法错误。看下面代码:

# 定义变量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 语句,引发编译错误。

运行上面代码,将看到如下错误:

SyntaxError : invalid syntax

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

2) if 代码块不要随意缩进

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

例如如下代码:

s_age = input("请输入您的年龄:")
age = int(s_age)
if age > 20 :
    print("年龄已经大于20岁了")
     print("20岁以上的人应该学会承担责任...")

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

IndentationError : unexpected indent

把代码改为如下形式:

s_age = input("请输入您的年龄:")
age = int(s_age)
if age > 20 :
    print("年龄已经大于20岁了")
   print("20岁以上的人应该学会承担责任...")

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

IndentationError: unindent does not match any outer indentation level

通过上面介绍可以看出,Python 代码块中的所有语句必须保持相同的缩进,换句话说,位于同一个代码块中的所有语句必须保持相同的缩进,既不能多,也不能少。

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

msg = "Hello, Charlie"
    print(msg)

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

Indentat ionError:unexpected indent

3) if 表达式不要遗忘冒号

从 Python 语法解释器的角度来看,Python 冒号精确表示代码块的开始点这个功能不仅在条件执行体中如此,后面的循环体、方法体、类体全部遵守该规则。

如果程序遗忘了冒号,那么 Python 解释器就无法识别代码块的开始点。例如如下程序:

age = 24
if age > 20
    print("年龄已经大于20岁了")
    print("20岁以上的人应该学会承担责任...")

上面 if 条件后忘了写冒号,因此 Python 就不知道条件执行体的开始点。运行上面程序,将会报出如下错误:

SyntaxError : invalid syntax

上面介绍的有关代码块的知识,不仅适用于 if 分支的代码块,也适用于作为循环体的代码块等。后面我们还会见到大量的 Python 代码块缩进、代码块必须以冒号开头的示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python if else语句用法规范(注意事项) 的相关文章

随机推荐

  • Android 源码系统添加系统服务

    以下内容基于Android12 源码进行整理 下面内容是基于Camera升降机服务添加过程整理 1 在Context java 中添加服务名称 Context java 在源码中位置 frameworks base core java an
  • sun.misc.Launcher 找不到

    问题 xff1a sun misc Launcher 找不到 xff0c 报错 xff1a Access restriction The type Launcher is not API restriction on required li
  • ubuntu 设置不了分辨率 解决方法

    要设置xorg conf xff0c ubuntu12 04默认没有这个文件 xff0c 所以要生成它 先ctrl xff0b alt xff0b f1切到文字模式 xff0c 停掉Xwindow服务 xff0c 执行 sudo etc i
  • Android Banner2.1.0

    由于最近更新了studio xff0c 好多东西需要更新 xff0c 那就彻底一点吧 xff0c banner原来用的1 4 9的 xff0c 新版的更新了好多 xff0c 之前的方法不能用了 xff0c 不多说直接上代码 依赖 xff1a
  • Ubuntu:如何显示系统托盘图标(systray)

    1 问题说明 Ubuntu 11版本开始 xff0c 默认关闭了托盘图标的显示 xff0c 需要手动执行命令或额外工具配置 xff0c 添加到白名单 Ubuntu 13 04更彻底 xff0c 默认配置根本没有托盘图标 xff0c 除了ja
  • 火锅店连锁企业使用哪款生鲜管理系统软件比较好呢?

    到目前为止 xff0c 餐饮行业的发展越来越好 xff0c 不管是节假日还是平常的日子里 xff0c 基本上餐馆总是会有很多人 xff0c 相比较来说连锁店铺的管理对于一般店铺来说更加的繁琐 xff0c 那是因为大多数的商品都是由总部统一配
  • 2021-10-26OriginPro 2021 v9.8如何修改为中文

    OriginPro 2021 v9 8如何修改为中文 xff1f 知乎 zhihu com https zhuanlan zhihu com p 376311895 按照这个方法亲测有效
  • Android 启动模式singleTask和onNewIntent什么时候调用

    设置启动模式我们不仅可以节省内存的使用 xff0c 还能达到更好的体验 如果IntentActivity处于任务栈的顶端 xff0c 也就是说之前打开过的Activity xff0c 现在处于 onPause onStop 状态的话 其他应
  • Centos7里在gnome桌面创建文件夹快捷方式

    需求 我的home文件夹特别小 xff0c 空间都分配在 data里 xff0c 所以我平常都是到 data路径下 所以我想在桌面上放一个可以直接到 data路径下的快捷键 STEP1 首先是到一个合适的地方 我放在了 data syste
  • 硬盘被格式化重装系统,以前的文件还能恢复吗

    硬盘被格式化重装系统 以前的文件还能恢复吗 今天早上起来就发现电脑有点问题 xff0c 一直提示我有中毒的迹象 xff0c 但是杀毒软件却一直提示我没有问题 xff0c 不知道是不是病毒太过新颖 xff0c 还是免费的杀毒软件不够好用 一阵
  • 聊聊mac系统的 secoclient和iTerm2

    secoclient是啥 xff0c 就是华为出品的VPN网络设置工具 可以连接其他公司的服务器 下载地址 xff1a https secoclient updatestar com 网上百度secoclient下载 xff0c 有很多 x
  • Android Selinux介绍,如何添加selinux 权限

    Selinux简介 SELinux是安全增强型 Linux xff08 Security Enhanced Linux xff09 简称 SELinux 它是一个 Linux 内核模块 xff0c 也是 Linux 的一个安全子系统 优势
  • android 启动app event log

    pid 951 为system server 进程 1 冷启动 Time pid TAG Messag 01 20 33 418 951 wm stack created 22 01 20 33 421 951 wm task create
  • ASP.NET 实现主题切换实例

    通常我们经常看到网页 xff0c 一些软件提供换肤功能 xff0c 各种主题间切换 ASP NET 2 0 中可以用Theme和skin以及CSS轻松实现这个功能 首先简单介绍一下三种技术 xff1a 主题 xff08 Theme xff0
  • MacBook远程控制工具VNC Viewer_亲测使用

    MacBook远程控制工具VNC Viewer 亲测使用 官方下载地址 https www realvnc com en connect download viewer MacBook远程桌面Windows使用Microsoft Remot
  • Android注解(annotation)介绍及其应用

    我的新书 Android App开发入门与实战 已于2020年8月由人民邮电出版社出版 xff0c 欢迎购买 点击进入详情 文章目录 介绍自定义注解注解的应用 xff1a 反射注解的应用 xff1a APT其它 介绍 Annotation
  • Maven配置本地仓库 Maven项目使用本地仓库

    Maven配置本地仓库 Maven项目使用本地仓库 项目部署或开发环境没有外网的情况下 需要配置本地仓库 由于是在内网环境 xff0c maven无法连接互联网 xff0c 所以只能事先将jar下载到本地 xff0c 然后通过配置pom文件
  • Shell脚本

    做 Java 的肯定都接触过 Linux 系统 xff0c 那么很多时候我们在开发的过程中都是把我们项目打成一个jar包 xff0c 或者是war包的形式 xff0c 然后通过 XFTP 上传到我们服务器的指定目录 xff0c 然后运行一端
  • Android开发工具——ADB(Android Debug Bridge) <三>DalvikVM之jdwp线程

    jdwp java debug wire protocol 是dalvik VM的一个线程 xff0c 可以建立在adb或者tcp基础上 xff0c 与DDMS或debugger进行通信 代码位置 dalvik vm jdwp framew
  • Python if else语句用法规范(注意事项)

    在使用 if elif else 条件语句时 xff0c 需要初学者根据实际应用场景 xff0c 自行设计表达式和代码块 xff0c 而在这两部分中 xff0c 有些细节需要初学者注意 1 代码块不要忘记缩进 代码块一定要缩进 xff0c