《Python从入门到实践》读书笔记——第五章 if语句

1. 一个简单示例

cars = ['audi', 'bwm', 'subaru', 'toyota']for car in cars:if car == 'bwm':print(car.upper())else:print(car.title())#
Audi
BWM
Subaru
Toyota

2. 条件测试

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

2.1 检查是否相等

>>> car = 'bmw'
>>> car == 'bmw'
True
>>> car = 'audi'
>>> car == 'bmw'
False

2.2 检查是否相等时忽略大小写

>>> car = 'Audi'
>>> car == 'audi'
False
>>>
>>> car = 'Audi'
>>> car.lower() == 'audi'
True
>>> car
'Audi'

2.3 检查是否不相等

requested_topping = 'mushrooms'if requested_topping != 'anchovies':print("Hold the anchovies!")#
Hold the anchovies!

2.4 数值比较

>>> age =19
>>> age < 21
True
>>> age <= 21
True
>>> age > 21
False
>>> age >= 21
False
>>> age == 21
False

2.5 检查多个条件

2.5.1 使用 and 检查多个条件

要检查两个条件是否 为True, 可使用关键词and将两个条件测试合而为一. 如果每个测试都通过了, 整个表达式就为True; 如果至少一个测试没有通过, 整个表达式就为False

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

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

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

2.5.2 使用 or 检查多个条件

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

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

2.6 检查特定值是否包含在列表中

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

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

2.7 检查特定值是否不包含在列表中

关键字 ** not in**

banned_users = ['andrew', 'carolina', 'david']
user = 'marie'if user not in banned_users:print(f"{user.title()},you can post a response if you wish.")#
Marie,you can post a response if you wish.

2.8 布尔表达式

术语 不二表达式 不过是条件测试的别名, 与条件表达式一样, 布尔表达式的结果要么为True, 要么为False

布尔值通常用于记录条件, 如游戏是否正在运行, 或者用户是否可以编辑网站的特定内容.

game_active = True
can_edit = False

在跟踪程序状态或程序中重要的条件方面, 布尔值提供了一种高效的方式

3 if语句

3.1 简单的if语句

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

if conditional_test:do something

在 if 语句中, 缩进的作用与在 for 循环中相同.
在紧跟 if 语句后面的代码块中, 可根据需要包含任意数量的代码行.

age = 19
if age >= 18:print("You are old enough to vote!")print("Have you registered to vote yet?")

3.2 if-else 语句

age = 17
if 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!")
#
Sorry, you are too young to vote.
Please register to vote as soon as you turn 18!

if-else 结构非常适合用于让Python执行两种操作之一的情形. 在这样简单的 if-else 结构中, 总是会执行两个操作中的一个

3.3 if-elif-else 结构

我们经常需要检查超过两个的情形, 为此可使用Python提供的 if-elif-else 结构. Python只执行 if-elif-else 结构中的一个代码块. 它依次检查每个条件测试, 直到遇到了通过了的条件测试. 测试通过后, Python将执行紧跟在它后面的代码,并跳过余下的测试.

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.")#
Your admission cost is $25.

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

age = 12if age < 4:price = 0
elif age < 18:price = 25
else:price = 40print(f'You admission cost is ${price}')

3.4 使用多个elif语句

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

3.5 省略 else代码块

Python并不要求 if-elif 结构后面必须有 else 代码快. 在有些情况下, else代码块很有用; 而在其他一些情况下, 使用一条 elif语句来处理特定的情形更清晰:

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

else是一条包罗万象的语句,只要不满足任何 if 或 elif 中的条件测试, 其中的代码就会执行. 这可能会引入无效甚至恶意的数据. 如果知道最终要测试的条件,应考虑使用一个 elif 代码块来代替else 代码块. 这样就可以肯定, 仅当满足相应的条件时 , 代码才会执行.

3.6 测试多个条件

if-elif-else 结构功能强大,但仅适合用于只有一个条件满足的情况:遇到通过了的测试后,Python就跳过余下的测试.这种行为很好,效率很高,让你能够测试一个特定的条件.
有时必须检查你关心的所有条件, 在这种情况下,应使用一系列不包含 elif 和 else 代码块的简单 if 语句. 在可能有多个条件为True 且需要在每个条件为True时都采用相应措施时, 适合使用这种方法.

requested_toppings = ['mushrooms', 'extra cheese']if 'mushrooms' in requested_toppings:print("Adding mushrooms.")
if "pepperoni" in requested_toppings:print("Adding pepperoni.")
if 'extra cheese' in requested_toppings:print("Adding extra cheese.")print("\nFinished making your pizza!")#
Adding mushrooms.
Adding extra cheese.Finished making your pizza!

:::info
总之,如果只想执行一个代码块, 就使用 if-elif-else 结构; 如果要执行多个代码块, 就使用一系列独立的 if 语句
:::

4. 使用if语句处理列表

4.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!")#
Adding mushrooms.
Sorry, we are out of green peppers right now.
Adding extra cheese.Finished making your pizza!

4.2 确认列表不是空的

requested_toppings = []if requested_toppings:for requested_topping in requested_toppings:print(f"Adding {requested_topping}.")print("\nFinished making your pizza!")else:print("Are you sure you want a plain pizza?")#
Are you sure you want a plain pizza?

在if语句中将列表名用作条件表达式时, Python将在列表至少包含一个元素时返回True, 并在列表为空时返回False.

4.3 使用多个列表

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!")#
Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.Finished making your pizza!

5. 设置if语句的格式

在条件测试的格式设置方面, PEP8 提供的唯一建议是, 在诸如==、 >=和<=等比较运算符两边各添加一个空格. 例如

if age < 4:

这样的空格不会影响Python对代码的解读, 而只是让代码阅读起来更容易.

《Python从入门到实践》读书笔记——第五章 if语句相关推荐

  1. python基础学习[python编程从入门到实践读书笔记(连载五)]:数据可视化项目第16章

    文章目录 下载数据 制作全球地震散点图:JSON格式 end 几个实验结果: 每日最高气温: 地震图绘制: 下载数据 CSV文件格式 在文本文件中存储数据,一个简单方式是将数据作为一系列以逗号分隔的值 ...

  2. python基础学习[python编程从入门到实践读书笔记(连载一)]

    写在前面:本文来自笔者关于<python编程从入门到实践>的读书笔记与动手实践记录. 程序员之禅 文章目录 02变量和简单数据类型 03 列表简介 04 操作列表 05 if语句 06 字 ...

  3. 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学

    <深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...

  4. Python从入门到实践习题答案(第九章 类)

    在学习<Python从入门到实践>,代码是自己编写的噢(虽然有些代码有参考其他大佬),点个赞再走8~ 9-1 餐馆:创建一个名为 Restaurant 的类,其方法__init__()设置 ...

  5. python基础学习[python编程从入门到实践读书笔记(连载三)]:django学习笔记web项目

    文章目录 Django项目:学习笔记web网页 项目部署 参考 自己部署的网站,还是小有成就感的,毕竟踩过很多坑,实战技能也有些许进步. 网站链接:http://lishizheng.herokuap ...

  6. python基础学习[python编程从入门到实践读书笔记(连载二)]:外星人入侵项目

    第一版游戏demo 添加计分系统:中间是最高得分,右边是本次得分. 显示余下的飞船数 主函数如下,完整程序将上传到笔者的github:https://github.com/shizhengLi/lea ...

  7. 《Microsoft Sql server 2008 Internals》读书笔记--第五章Table(4)

    <Microsoft Sql server 2008 Internals>索引目录: <Microsoft Sql server 2008 Internal>读书笔记--目录索 ...

  8. 《Microsoft Sql server 2008 Internals》读书笔记--第五章Table(6)

      <Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/2303 ...

  9. python编程从入门到实践读书笔记-《Python编程:从入门到实践》项目部分读书笔记(二)...

    鸽了一个暑假没有更新,现在趁着还没开学更一下.咕咕咕 上期作业: 请创建一个Django项目,命名为Blog,建不建立虚拟环境随便你,最后本地跑成了就行. 步骤: ①在需要创建工程的文件夹下打开cmd ...

最新文章

  1. 编译android不再需要jdk1.5
  2. 速腾雷达客户端软件使用说明
  3. C# 从DataSet导出到Excel
  4. 小程序获取设备信息以及实现短信验证码登录
  5. 为JavaOne 2014做好准备!
  6. ikbc机械键盘打字出现重复_超小无线机械键盘,绝佳移动打字体验
  7. 配置 Syslog 守护程序
  8. java集合性能测试,关于Map和List的性能测试
  9. SpringBoot配置文件加密
  10. java中什么泛型_Java中的泛型
  11. 状态码301和302的区别?
  12. jquery append和after, prepend和before的区别
  13. 三创赛优秀作品_创新藏在每一个细节里———记第三届3S杯全国大学生物联网技术与应用“三创”大赛一等奖获奖作品...
  14. java jaas_JAAS(auth和rbac哪个好)
  15. PyQt5-Label背景颜色和文本颜色的设置
  16. 麦腾股份正式挂牌新三板,创业孵化市场或将深度洗牌
  17. 凡客被裁员工“三问陈年” 官方不予回应
  18. 类的加载、连接和初始化
  19. SE16N-采购价格不同条件类型的取数逻辑
  20. 篮球记分牌c语言程序和报告,基于单片机的篮球比赛电子记分牌最终版(备份存档)...

热门文章

  1. h5 生成图片并保存到手机(浏览器)
  2. Moodle专题网站链接
  3. 中国科学院朱清时:量子意识(人人能懂版)
  4. 多大样本量才能模拟出中心极限定理
  5. Plants vs. Zombies
  6. CS61A Lab 12
  7. sql server 日期时间比较函数
  8. 如何实现远程控制网络设备
  9. js中条件三目运算符?:
  10. 电容传感器FDC2214计算工具FDC_Tools-development5的使用