Python if else条件语句详解

news2025/2/21 1:03:15

在刚学习 Python 的时候,我们看到的代码都是顺序执行的,也就是先执行第1条语句,然后是第2条、第3条……一直到最后一条语句,这称为顺序结构

但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄不够,没有权限使用。这时候程序就需要做出判断,看用户是否是成年人,并给出提示。

在 Python 中,可以使用 if else 语句对条件进行判断,然后根据不同的结果执行不同的代码,这称为选择结构或者分支结构

Python 中的 if else 语句可以细分为三种形式,分别是 if 语句、if else 语句和 if elif else 语句,它们的语法和执行流程如下表所示。

if else 分支语句的三种形式
语法格式执行流程
if 表达式:
    代码块

if 表达式:
    代码块 1
else:
    代码块 2

if 表达式 1:
    代码块 1
elif 表达式 2:
    代码块 2
elif 表达式 3:
    代码块 3
...//其它elif语句
else:
    代码块 n

以上三种形式中,第二种和第三种形式是相通的,如果第三种形式中的 elif 块不出现,就变成了第二种形式。另外,elif 和 else 都不能单独使用,必须和 if 一起出现,并且要正确配对。

对语法格式的说明:

  • “表达式”可以是一个单一的值或者变量,也可以是由运算符组成的复杂语句,形式不限,只要它能得到一个值就行。不管“表达式”的结果是什么类型,if else 都能判断它是否成立(真或者假)。
  • “代码块”由具由相同缩进量的若干条语句组成。
  • if、elif、else 语句的最后都有冒号:,不要忘记。

一旦某个表达式成立,Python 就会执行它后面对应的代码块;如果所有表达式都不成立,那就执行 else 后面的代码块;如果没有 else 部分,那就什么也不执行。

执行过程最简单的就是第一种形式——只有一个 if 部分。如果表达式成立(真),就执行后面的代码块;如果表达式不成立(假),就什么也不执行。

对于第二种形式,如果表达式成立,就执行 if 后面紧跟的代码块1;如果表达式不成立,就执行 else 后面紧跟的代码块2。

对于第三种形式,Python 会从上到下逐个判断表达式是否成立,一旦遇到某个成立的表达式,就执行后面紧跟的语句块;此时,剩下的代码就不再执行了,不管后面的表达式是否成立。如果所有的表达式都不成立,就执行 else 后面的代码块。

总起来说,不管有多少个分支,都只能执行一个分支,或者一个也不执行,不能同时执行多个分支。

【实例1】使用第一种选择结构判断用户是否符合条件:

age = int( input("请输入你的年龄:") )
if age < 18 :
    print("你还未成年,建议在家人陪同下使用该软件!")
    print("如果你已经得到了家长的同意,请忽略以上提示。")
#该语句不属于if的代码块
print("软件正在使用中...")

运行结果1:

请输入你的年龄:16↙
你还未成年,建议在家人陪同下使用该软件!
如果你已经得到了家长的同意,请忽略以上提示。
软件正在使用中...

运行结果2:

请输入你的年龄:24↙
软件正在使用中...

从运行结果可以看出,如果输入的年龄小于 18,就执行 if 后面的语句块;如果输入的年龄大于等于 18,就不执行 if 后面的语句块。这里的语句块就是缩进四个空格的两个 print() 语句。

【实例2】改进上面的代码,年龄不符合时退出程序:

import sys
age = int( input("请输入你的年龄:") )
if age < 18 :
    print("警告:你还未成年,不能使用该软件!")
    print("未成年人应该好好学习,读个好大学,报效祖国。")
    sys.exit()
else:
    print("你已经成年,可以使用该软件。")
    print("时间宝贵,请不要在该软件上浪费太多时间。")
print("软件正在使用中...")

运行结果1:

请输入你的年龄:16↙
警告:你还未成年,不能使用该软件!
未成年人应该好好学习,读个好大学,报效祖国。

运行结果2:

请输入你的年龄:20↙
你已经成年,可以使用该软件。
时间宝贵,请不要在该软件上浪费太多时间。
软件正在使用中...

sys 模块的 exit() 函数用于退出程序。

【实例3】判断一个人的身材是否合理:

height = float(input("输入身高(米):"))
weight = float(input("输入体重(千克):"))
bmi = weight / (height * height)  #计算BMI指数
if bmi<18.5:
    print("BMI指数为:"+str(bmi))
    print("体重过轻")
elif bmi>=18.5 and bmi<24.9:
    print("BMI指数为:"+str(bmi))
    print("正常范围,注意保持")
elif bmi>=24.9 and bmi<29.9:
    print("BMI指数为:"+str(bmi))
    print("体重过重")
else:
    print("BMI指数为:"+str(bmi))
    print("肥胖")

运行结果:

输入身高(米):1.7↙
输入体重(千克):70↙
BMI指数为:24.221453287197235
正常范围,注意保持

需要强调的是,Python 是一门非常独特的编程语言,它通过缩进来识别代码块,具有相同缩进量的若干行代码属于同一个代码块,所以你不能胡乱缩进,这样很容易导致语法错误。

在其他语言中(如 C语言、C++、Java等),选择结构还包括 switch 语句,也可以实现多重选择,但是在 Python 中没有 switch 语句,所以当要实现多重选择的功能时,只能使用 if else 分支语句。

if else 如何判断表达式是否成立

上面说过,if 和 elif 后面的“表达式”的形式是很自由的,只要表达式有一个结果,不管这个结果是什么类型,Python 都能判断它是“真”还是“假”。

布尔类型(bool)只有两个值,分别是 True 和 False,Python 会把 True 当做“真”,把 False 当做“假”。

对于数字,Python 会把 0 和 0.0 当做“假”,把其它值当做“真”。

对于其它类型,当对象为空或者为 None 时,Python 会把它们当做“假”,其它情况当做真。比如,下面的表达式都是不成立的:

""  #空字符串
[ ]  #空列表
( )  #空元组
{ }  #空字典
None  #空值

【实例】if elif 判断各种类型的表达式:

b = False
if b:
    print('b是True')
else:
    print('b是False')
n = 0
if n:
    print('n不是零值')
else:
    print('n是零值')
s = ""
if s:
    print('s不是空字符串')
else:
    print('s是空字符串')
l = []
if l:
    print('l不是空列表')
else:
    print('l是空列表')
d = {}
if d:
    print('d不是空字典')
else:
    print('d是空字典')
def func():
    print("函数被调用")
if func():
    print('func()返回值不是空')
else:
    print('func()返回值为空')

运行结果:

b是False
n是零值
s是空字符串
l是空列表
d是空字典
函数被调用
func()返回值为空

说明:对于没有 return 语句的函数,返回值为空,也即 None。

 Python教程,8天python从入门到精通,学python看这套就够了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345899.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BERT在CNN上也能用?看看这篇ICLR Spotlight论文丨已开源

如何在卷积神经网络上运行 BERT&#xff1f;你可以直接用 SparK —— 字节跳动技术团队提出的提出的稀疏层次化掩码建模 ( Designing BERT for Convolutional Networks: Sparse and Hierarchical Masked Modeling )&#xff0c;近期已被人工智能顶会 ICLR 2023 收录为 Spotligh…

论文投稿指南——中文核心期刊推荐(植物保护)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

JavaScript原型、原型链、原型方法

文章目录原型和原型链prototype、 __ proto __ 、constructor原型链原型方法instanceOfhasOwnPropertyObject.create()、new Object()总结原型和原型链 prototype、 __ proto __ 、constructor 首先我们看下面一段代码 // 构造函数Personfunction Person(name, age) {this.na…

无法访问org.springframework.boot.SpringApplication

问题 更新idea版本后使用过程中发生下面的错误 Error:(3, 32) java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: D:\maven-repository\org\springframework\boot\spring-boot\3.0.0\spring-boot-3.0.0.jar(org/springframework/boot/SpringApplicati…

【ChatGPT】如何使用python调用ChatGPT API?

是什么ChatGPT&#xff1f; ChatGPT 是由 OpenAI 开发的一个语言模型。OpenAI 是一家领先的人工智能研究机构。ChatGPT 基于变换器架构&#xff0c;使用深度学习生成会话风格的文本。该模型在大量文本数据上进行训练&#xff0c;并可以针对特定任务进行微调。例如&#xff0c;它…

2023年,产业互联网八大趋势

从全世界的TO B发展线来看&#xff0c;中国的TO B企业不是脚步最快的&#xff0c;但它们却也正在通过汲取中国数字经济高速发展的养料不断成长&#xff0c;同时主动下沉&#xff0c;成为新的产业数字化的底盘&#xff0c;做撑举起未来数字中国的无名力量。 作者|皮爷 出品|…

UDS 诊断

UDS全称为Unified Diagnostic Services&#xff0c;统一的诊断服务。由ISO-14229系列标准定义。 诊断通信的过程从用户角度来看非常容易理解&#xff0c;诊断仪发送诊断请求(request)&#xff0c;ECU给出诊断响应&#xff08;response&#xff09;&#xff0c;而UDS就是为不同…

1.9实验9:配置虚链路

1.4.4实验9:配置虚链路 实验目的(1) 实现OSPF 虚链路的配置 (2) 描述虚链路的作用 实验拓扑配置虚链路实验拓扑如图1-19所示。[1] 图1-19 配置虚链路 实验步骤

第2集丨Java中的数据类型汇总

目录一、数据类型分类二、基本数据类型取值范围数据类型的转换byte和char的关系三、包装类一、数据类型分类 二、基本数据类型 取值范围 比特(bit位) : 数据运算得最小存储单位字节(byte) : 数据最小存储单位bit和byte可以互相转换得&#xff0c;1 byte 8 bit位默认情况下&am…

2023开学季哪款电容笔值得买?高品质电容笔品牌推荐

我们可以看出&#xff0c;原先的苹果电容笔的价格卖得非常昂贵。事实上&#xff0c;对于那些没有过多预算的人来说&#xff0c;平替电容笔是最好的选择。想象一下&#xff0c;一款原装的苹果电容笔&#xff0c;能够购买四款平替电容笔&#xff0c;而平替电容笔在性能上&#xf…

修改windows系统网卡的MAC地址方法

文章目录前言修改MAC地址验证MAC地址是否修改前言 工作中遇到通过绑定IP地址和MAC地址认证才能上网的网络&#xff0c;需要修改指定的IP地址和MAC地址&#xff0c;修改IP地址比较简单&#xff0c;但是MAC地址之前好像没有改过&#xff0c;浅浅的记录一下 修改MAC地址 首先打…

MicroApp初探

微前端 微前端是一种类似于微服务的架构&#xff0c;它将微服务的理念应用于浏览器端&#xff0c;即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立运行、独立开发、独立部署。微前端架构与框架无关&#xff0c;每个微应用都可以使…

VMware虚拟机安装部署CentOS7+Moba远程连接+克隆(步骤)

使用VMware部署centos7操作系统 1. 打开VMware点击“创建新的虚拟机” 2.按提示逐步选择 选择NAT模式&#xff08;只要电脑能联网&#xff0c;虚拟机就能联网&#xff09; 磁盘存为单个文件 点击“使用iso映像文件”&#xff0c;选择已经下载好的镜像文件。 &#xff08;虚…

火爆全网的ChatGPT对话数据可视化,分析数据可视化的应用和发展

ChatGPT为一款由OpenAI开发的人工智能聊天软件。2022年11月30日上映。截至2023年1月底&#xff0c;其月活跃用户超过1亿&#xff0c;是有史以来增长最快的消费应用。今年AIGC&#xff08;是指利用人工智能技术来生成内容&#xff09;频繁出圈&#xff0c;先是一个基于diffusion…

【转载】Visual Studio 下载进度很慢甚至不动怎么办?

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/566305175 现在越来越多的人投身到计算机行业成为了一名码农&#xff0c;对于一个合格的码农来说能熟练的使用Visual Studio&#xff0c;Visual Studio code,idea等是很重要的&#xff0c;也有很多人在软件下载方面就遇到了难…

python【os模块文件读写操作】超详细

一、os 模块是什么&#xff1a;os 模块是python 标准库中整理文件和目录最为常用的模块&#xff0c;该模块提供了非常丰富的方法用来处理文档和目录二、认识文件路径分隔符&#xff1a;- 路径表示"\"在windows操作系统中表示区分文件的存储路径层级关系比如&#xff…

2022爱分析 · DataOps厂商全景报告 | 爱分析报告

报告编委 李喆 爱分析合伙人&首席分析师 廖耘加 爱分析分析师 目录 1. 研究范围定义 2. 市场洞察 3. 厂商全景地图 4. 市场分析与厂商评估 5. 入选厂商列表 1. 研究范围定义 研究范围 在后疫情时代&#xff0c;以数据分析为代表的数据消费场景日益丰富&…

Linux 用户讲解

目录 Linux 用户介绍 Linux用户类型 UID 用户组ID Linux 用户相关命令 id 查看用户信息 useradd 创建新的用户账户 groupadd 创建新的用户组 usermod 修改用户的属性 passwd 修改用户的密码、过期时间等 userdel 删除用户 通过文件的方法新建、编辑用户 /etc/p…

【操作系统】磁盘IO常见性能指标和分析工具实战

1.磁盘读写常见的指标 &#xff08;1&#xff09;IOPS&#xff08;Input/Output Operations per Second&#xff09; 指每秒能处理的I/O个数&#xff0c;表示块存储处理读写&#xff08;输出/输入&#xff09;的能力&#xff0c;单位为次&#xff0c;有顺序IOPS和随机IOPS比如…

设计模式第五讲-装饰器模式和代理模式详解

一. 装饰器模式 1. 背景 在现实生活中&#xff0c;常常需要对现有产品增加新的功能或美化其外观&#xff0c;如房子装修、相片加相框等。在软件开发过程中&#xff0c;有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下&#xff0c;可以…