IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> if语句(python) -> 正文阅读

[Python知识库]if语句(python)

if语句(python)




在编程时经常需要检查一系列条件,并据此决定采取什么措施。在python中,if语句让你能够检查程序的当前状态,并采取相应的措施。

一个简单示例

对于大多数汽车,应以首字母大写的方式打印其名称,但对于汽车名‘bmw’,应以全大写的方式打印:

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

条件测试

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

检查是否相等

大多数条件测试将一个变量的当前值同特定值进行比较。最简单的条件测试检查变量的值是否与特定值相等:

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

一个等号是陈述,两个等号则是发问。

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

在python中检查是否相等时区分大小写。例如,两个大小写不同的值被视为不相等:

>>> car = 'Audi'
>>> car == 'audi'
False

如果大小写不重要,这种行为有其优点。但如果大小写无关紧要,只想检查变量的值,可将变量的值转换为小写,再进行比较:

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

检查是否不相等

要判断两个值是否不等,可结合使用惊叹号和等号(!=),其中惊叹号表示不:

>>> requested_topping = 'mushroom'
>>> if requested_topping != 'anchovies':
>>> 	print("Hold the anchovies")
Hold the anchovies.

数值比较

检查数值非常简单。例如,下面的代码检查一个人是否是18岁:

>>> age = 18
>>> age == 18
True

还可检查两个数是否相等:

>>> answer = 17
>>> if age != 42:
>>> 	print("That is not the correct answer. Please try again!")
That is not the correct answer. Please try again!

条件语句中可包含各类数学比较,如小于、小于等于、大于、大于等于:

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

检查多个条件

你可能想同时检查多个条件。例如,有时候需要再两个条件都为True时才执行相应的操作,而有时候只要求一个条件为True。在这些情况下,关键字and和or可助你一臂之力。
1. 使用and检查多个条件
要检查是否两个条件都为True,可使用关键字and将两个条件测试合而为一。如果每个测试都通过了,整个表达式就为True;如果至少一个测试没通过,整个表达式就为False。
例如,要检查是否两个人都不小于21岁,可使用下面的测试:

>>> 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. 使用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

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

有时候,执行操作前必须检查列表是否包含特定的值。例如,结束用户的注册过程前,可能需要检查他提供的用户名是否已包含在用户名列表中。
要判断特定的值是否包含在列表中,可用关键词in

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

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

还有些时候,确定特定的值未包含在列表中很重要:

>>> 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.

布尔表达式

随着你对编程的了解越来越深入,将遇到术语布尔表达式,它不过是条件测试的别名。与条件表达式一样,布尔表达式的结果要么为True,要么为False。
布尔通常用于记录条件,如游戏是否正在运行,或者用户是否可以编辑网站的特定内容:

game_active = True
can_edit = False

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


if语句

理解条件测试后,就可以开始编写if语句了。if语句有很多种,选择使用哪种取决于要测试的条件数。

简单的 if 语句

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

if conditional_test:
	do something

if-else 语句

我们经常需要在条件测试通过时执行一个操作,在没有通过时执行另一个操作。在这种情况下,可使用python提供的 if-else 语句。if-else 语句块类似于简单的 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 结构中,总是会执行两个操作中的一个。

if-elif-else 结构

我们经常需要检查超过两个的情形,为此可使用python提供的 if-elif-else 结构,python只执行 if-elif-else 结构中的一个代码块。它一次检查每个条件测试,指导遇到通过了的条件测试。测试通过后,python将执行紧跟在它后面的代码,并跳过余下的测试。比如门票价格的确定:

>>> age = 12
>>> if 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 = 12
>>> if age < 4:
>>> 	price = 0
>>> elif age < 18:
>>> 	price = 25
>>> else:
>>> 	price = 40
>>> print(f"Your admission cost is ${price}.")
Your admission cost is 25.

使用多个elif 代码块

可根据需要使用任意数量的 elif 代码块:

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

省略 else 模块

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

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

最后的 else 换成 elif ,这比使用 else 代码块更清晰写。经过这样的修改后,每个代码块都仅在通过了相应的测试时才会执行。
else 是一个包罗万象的语句,只要不满足任何 if 或 else 中的条件测试,其中的代码就会执行。这可能引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif 代码块来代替 else 代码块。这样就可以肯定,仅当满足相应的条件时,代码才会执行。

测试多个条件

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

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

Adding mushroom.
Adding extra cheese.

Finished making your pizza!

如果像下面这样转而使用 if-elif-else 结构,代码将不能正确运行,因为有一个测试通过之后,就会跳过余下的测试:

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

Finished making your pizza!

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


使用 if 语句处理列表

检查特殊元素

>>> requested_toppings = ['mushroom', 'green pepers', 'extra cheese']
>>> for requested_topping in requested_toppings:
>>> 	print(f"Adding {requested_topping}")
>>> print("\nFinished making your pizza!")
Adding mushroom.
Adding green peppers.
Adding extra cheese.

Finished making your pizza!

输出很简单,因为这就是一个简单的 for 循环。然而,如果披萨店的青椒用完了,该如何处理?为妥善地处理这种情况,可在 for 循环中包含一条 if 语句:

>>> requested_toppings = ['mushroom', '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 mushroom.
Sorry, we are out of green peppers right now.
Adding extra cheese.

Finished making your pizza!

确定列表不是空的

到目前位置,我们对于处理的每个列表都做了一个简单的假设——假设它们都是少包含一个元素。因为马上就要让用户来提供存储在列表中的信息,所以不能再假设循环运行时列表不是空的。有鉴于此,在运行 for 循环前确定列表是否为空很重要。
下面在制作披萨前检查顾客点的配料列表是否为空。如果列表为空,就向顾客确认是否要点原为披萨;如果列表不为空,就像前面的示例那样制作披萨:

>>> 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。如果 requested_toppings 不为空,就运行与前一个示例相同的 for 循环;否则,就打印一条消息,询问顾客是否确实要点不加任何配料的原味披萨。

使用多个列表

>>> 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_toppings}.")
>>> 	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!
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:30:34  更:2022-03-24 00:30:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:41:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码