【python基础(四)】if语句详解

文章目录

  • 一. 一个简单示例
  • 二. 条件测试
    • 1. 检查多个条件
      • 1.1. 使用and关联多个条件
      • 1.2. 使用or检查多个条件
      • 1.3. in的判断
    • 2. 布尔表达式
  • 三. if语句
    • 1. 简单的if语句
    • 2. if-else语句
    • 3. if-elif-else结构
    • 4. 使用多个elif代码块
    • 5. 省略else代码块
  • 四. 使用if语句处理列表
    • 1. 检查特殊元素
    • 2. 确定列表不是空的

  1. 如何编写结果要么为True要么为False的条件测试;
  2. 如何编写简单的if语句、if-else语句和if-elif-else结构,并且在程序中使用这些结构来测试特定的条件,以确定这些条件是否满足;
  3. 如何在利用高效的for循环的同时,以不同于其他元素的方式对特定的列表元素进行处理。

一. 一个简单示例

if __name__ == '__main__':cars = ['audi', 'bmw', 'subaru', 'toyota']for car in cars:if car == 'bmw':print(car.upper())else:print(car.title())

 

二. 条件测试

每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试。
如果条件测试的值为True,Python就执行紧跟在if语句后面的代码;如果为False,Python就忽略这些代码。

1. 检查多个条件

1.1. 使用and关联多个条件

要检查是否两个条件都为True,可使用关键字and将两个条件测试合而为一。
例如,要检查是否两个人都不小于21岁

>>> age_0 = 22>>> age_1 = 18>>> age_0 >= 21 and age_1 >= 21False

为改善可读性,可将每个测试分别放在一对圆括号内,但并非必须这样做。

(age_0 >= 21) and (age_1 >= 21)

 

1.2. 使用or检查多个条件

关键字or也能够让你检查多个条件,但只要至少一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or的表达式才为False。

至少一个人的年龄不小于21岁:

>>> age_0 = 22>>> age_1 = 18>>> age_0 >= 21 or age_1 >= 21True

 

1.3. in的判断

要判断特定的值是否已包含在列表中,可使用关键字in

创建一个列表,其中包含用户点的比萨配料,然后检查特定的配料是否包含在该列表中。

>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'onions' in requested_toppings
True

使用关键字not in,来判断值不包含在列表中。

 

2. 布尔表达式

与条件表达式一样,布尔表达式的结果要么为True,要么为False,首字母不能小写。

game_active = True
can_edit = False

 

三. if语句

1. 简单的if语句

最简单的if语句只有一个测试和一个操作:

if conditional_test:dosomething
age = 19if age >= 18:print("You are old enough to vote!")

在if语句中,缩进的作用与在for循环中相同。

 

2. if-else语句

  age = 17if age >= 18:print("You are old enough to vote!")print("Have you registered to vote yet?")else:print("Sorry, you are too young to vote.")print("Please register to vote as soon as you turn 18!")

 

3. if-elif-else结构

Python只执行if-elif-else结构中的一个代码块。它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试

一个根据年龄段收费的游乐场:
▲ 4岁以下免费;▲ 4~18岁收费25美元;▲ 18岁(含)以上收费40美元。

  age = 12if age < 4:print("Your admission cost is $0.")elif age < 18:print("Your admission cost is $25.")else:print("Your admission cost is $40.")

❶处的if测试检查一个人是否不满4岁。如果是,Python就打印一条合适的消息,并跳过余下测试。❷处的elif代码行其实是另一个if测试,仅在前面的测试未通过时才会运行。

 
优化
为了让代码更简洁,可不在if-elif-else代码块中打印门票价格,而只在其中设置门票价格,并在它后面添加一个简单的函数调用print():

  age = 12if age < 4:
❶     price = 0elif age < 18:
❷     price = 25else:
❸     price = 40print(f"Your admission cost is ${price}.")

 

4. 使用多个elif代码块

下面假设增加一个条件测试:对于65岁(含)以上的老人,可半价(即20美元)购买门票:

  age = 12if age < 4:price = 0elif age < 18:price = 25elif age < 65:price = 40else:price = 20print(f"Your admission cost is ${price}.")

 

5. 省略else代码块

Python并不要求if-elif结构后面必须有else代码块。使用一条elif语句来处理特定的情形更清晰:

  age = 12if age < 4:price = 0elif age < 18:price = 25elif age < 65:price = 40elif age >= 65:price = 20print(f"Your admission cost is ${price}.")

else是:只要不满足任何if或elif中的条件测试,其中的代码就会执行。这可能引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块

 

四. 使用if语句处理列表

1. 检查特殊元素

如果要添加青椒,则说明已经用完了

  requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']for requested_topping in requested_toppings:if requested_topping == 'green peppers':print("Sorry, we are out of green peppers right now.")else:print(f"Adding {requested_topping}.")print("\nFinished making your pizza!")

 

2. 确定列表不是空的

如果顾客要在比萨中添加炸薯条,该怎么办呢?可使用列表和if语句来确定能否满足顾客的要求。

❶ available_toppings = ['mushrooms', 'olives', 'green peppers','pepperoni', 'pineapple', 'extra cheese']❷ requested_toppings = ['mushrooms', 'french fries', 'extra cheese']for requested_topping in requested_toppings:if requested_topping in available_toppings:print(f"Adding {requested_topping}.")else:print(f"Sorry, we don't have {requested_topping}.")print("\nFinished making your pizza!")

 
参考:《python编程:从入门到实践(第二版)》

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

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

相关文章

2023-11-23 LeetCode每日一题(HTML 实体解析器)

2023-11-23每日一题 一、题目编号 1410. HTML 实体解析器二、题目链接 点击跳转到题目位置 三、题目描述 「HTML 实体解析器」 是一种特殊的解析器&#xff0c;它将 HTML 代码作为输入&#xff0c;并用字符本身替换掉所有这些特殊的字符实体。 HTML 里这些特殊字符和它们…

Endnote软件添加期刊引用格式

在下述网址中&#xff0c;找到你想要添加的期刊&#xff0c;下载引用格式文件&#xff08;后缀为.ens格式&#xff09; https://endnote.com/downloads/styles/?wpv_post_searchInformationfusion&wpv_aux_current_post_id12829&wpv_view_count12764-TCPID12829 下载…

SQLY优化

insert优化 1.批量插入 手动事务提交 主键顺序插入&#xff0c;主键顺序插入性能高于乱序插入 2.大批量插入数据 如果一次性需要插入大批量数据&#xff0c;使用Insert语句插入性能较低&#xff0c;此时可以使用MYSQL数据库提供的load指令进行插入 主键优化 主键设计原则 …

Java实现王者荣耀小游戏

主要功能 键盘W,A,S,D键&#xff1a;控制玩家上下左右移动。按钮一&#xff1a;控制英雄发射一个矩形攻击红方小兵。按钮控制英雄发射魅惑技能&#xff0c;伤害小兵并让小兵停止移动。技能三&#xff1a;攻击多个敌人并让小兵停止移动。普攻&#xff1a;对小兵造成基础伤害。小…

vue3 终端实现 (vue3+xterm+websocket)

目录 一、xterm介绍 二、效果展示 三、vue文件实现代码 一、xterm介绍 xterm是一个使用

【C++初阶】STL详解(七)Stack与Queue的模拟实现

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…

力扣labuladong一刷day17天前缀和数组

力扣labuladong一刷day17天前缀和数组 一、303. 区域和检索 - 数组不可变 题目链接&#xff1a;https://leetcode.cn/problems/range-sum-query-immutable/ 思路&#xff1a;本题即为让写一个类用于计算指定区间内的数字和&#xff0c;但如果直接采用for循环的方式&#xff0…

Unity调用dll踩坑记

请用写一段代码&#xff0c;让unity无声无息的崩溃。 你说这怕是有点难哦&#xff0c;谁会这么不幸呢&#xff1f;不幸的是&#xff0c;我幸运的成为了那个不幸的人。 unity里面调用dll的方式是使用 DllImport &#xff0c;比如有一个 Hello.dll&#xff0c;里面有一个 char* …

图片如何去除水印?试试这三种去水印方法!

从事自媒体行业的小伙伴们&#xff0c;你们是否经常为文章配图而烦恼呢&#xff1f;下载的图片大部分带有各种各样的水印或者多余元素&#xff0c;让人感到困扰。今天&#xff0c;我要分享三个去水印的妙招&#xff0c;这是新媒体人必备的图片处理技能&#xff0c;快来一起学起…

【MATLAB源码-第87期】基于matlab的Q-learning算法栅格地图路径规划,自主选择起始点和障碍物。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 Q-learning是一种无模型的强化学习算法&#xff0c;适用于有限的马尔可夫决策过程&#xff08;MDP&#xff09;。它的核心是学习一个动作价值函数&#xff08;action-value function&#xff09;&#xff0c;即Q函数&#xf…

面试官:【js多维数组扁平化去重并排序】

文章目录 前言方法一方法二方法三方法四总结后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;JavaScript &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&a…

【腾讯云云上实验室-向量数据库】Tencent Cloud VectorDB在实战项目中替换Milvus测试

为什么尝试使用Tencent Cloud VectorDB替换Milvus向量库&#xff1f; 亮点&#xff1a;Tencent Cloud VectorDB支持Embedding&#xff0c;免去自己搭建模型的负担&#xff08;搭建一个生产环境的模型实在耗费精力和体力&#xff09;。 腾讯云向量数据库是什么&#xff1f; 腾…

rsync配置和守护进程实践

目录 一、rsync概念 1.rsync简介 2.rsync特点 3、增量和全局传输 二、Rsync工作方式 1.准备好rsync备份服务器 2.本地的数据传输模式 3.远程的数据传输模式 4.rsync数据推拉模式 三、实践 1.准备三台虚拟机 2.都安装rsync服务 3.拉取远程文件 3.推送文件 4.rsyn…

Oracle用户(User)和表空间(Tablespace)

3. 用户和表空间 3.1. 用户 1)概念 Oracle数据库中,用户(User)是访问数据库的途径和认证方式,同时,用户也是数据库对象的逻辑集合。我们通过数据库用户和密码来登录数据库,然后,可以在该用户下创建和操作数据库对象。 2)创建和配置 创建Oracle用户,需要具备创建…

python系统编程

文章目录 系统编程系统工具概述sys模块os模块 脚本运行上下文当前工作路径命令行参数shell环境变量标准流 文件和目录工具文件工具目录工具 并行系统工具进程分支线程 系统编程 系统工具 概述 python系统模块: 模块名作用*sys负责导出与怕以后呢解释器本身相关的组件*os包含…

Django DRF序列化器serializer

以下案例由浅到深&#xff0c;逐步深入&#xff0c;通过实例介绍了序列化器的使用方法&#xff0c;和其中遇到的常见问题的解决。 一、序列化器serializers.Serializer 1、urls.py urlpatterns [path("api/<str:version>/depart/",views.DepartView.as_vie…

缓存雪崩、击穿、穿透及解决方案_保证缓存和数据库一致性

文章目录 缓存雪崩、击穿、穿透1.缓存雪崩造成缓存雪崩解决缓存雪崩 2. 缓存击穿造成缓存击穿解决缓存击穿 3.缓存穿透造成缓存穿透解决缓存穿透 更新数据时&#xff0c;如何保证数据库和缓存的一致性&#xff1f;1. 先更新数据库&#xff1f;先更新缓存&#xff1f;解决方案 2…

【问题解决】RuntimeError: apex.optimizers.FusedSGD requires cuda extension 问题解决

在使用 apex 库时&#xff0c;按照官方的方式安装后&#xff0c;虽然安装成功&#xff0c;但调用的时候会报错如下&#xff0c;也就是说其实没有成功安装可调用 cuda 的 apex&#xff1a; RuntimeError: apex.optimizers.FusedSGD requires cuda extension我找了很多解决方式&…

【蓝桥杯省赛真题46】Scratch魔术表演 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解

目录 scratch魔术表演 一、题目要求 编程实现 二、案例分析 1、角色分析

微信小程序bindtap和catchtap的区别?

子元素用bindtap绑定事件后&#xff0c;执行的时候&#xff0c;会冒泡到父元素&#xff08;触发父亲元素上绑定的bindtap事件&#xff09; 如果不想冒泡到父元素&#xff0c;可以用catchtap代替 bindtap事件绑定不会阻止冒泡事件向上冒泡 catchtap事件绑定可以阻止冒泡事件向上…