python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图简单了解条件语句的执行过程:
1、if语句
python中if语句的一般形式如下所示:
if condition_1: statement_block_1elif condition_2: statement_block_2else: statement_block_3
如果 "condition_1" 为 True 将执行 "statement_block_1" 块语句
如果 "condition_1" 为False,将判断 "condition_2"
如果"condition_2" 为 True 将执行 "statement_block_2" 块语句
如果 "condition_2" 为False,将执行"statement_block_3"块语句
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
注意:
1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在Python中没有switch – case语句。
实例
以下是一个简单的if实例:
#!/usr/bin/python3var1 = 100if var1:print("1 - if 表达式条件为 true")print(var1)var2 = 0if var2:print("2 - if 表达式条件为 true")print(var2)print("Good bye!")执行以上代码,输出结果为:
1 - if 表达式条件为 true100Goodbye!
从结果可以看到由于变量 var2 为 0,所以对应的 if 内的语句没有执行。
以下实例演示了狗的年龄计算判断:
#!/usr/bin/python3age = int(input("请输入你家狗狗的年龄: "))print("")if age<= 0:print("你是在逗我吧!")elif age == 1:print("相当于 14 岁的人。")elif age == 2:print("相当于 22 岁的人。")elif age>2:human = 22+ (age-2)*5print("对应人类年龄: ", human)### 退出提示input("点击 enter 键退出")2、如何判断
在 Python 中,if 判断语句会根据条件表达式的布尔值(True 或 False)来决定是否执行代码块。Python 中的布尔值不仅限于 True 和 False,许多其他值和对象也可以在布尔上下文中被隐式地视为 True 或 False。以下是一些常见的值和对象在布尔上下文中的表现:
被视为 True 的情况
以下值和对象在布尔上下文中被视为 True:
非零数字(整数、浮点数、复数):
if 1: # Trueif 3.14: # Trueif -5: # Trueif 1+2j: # True
非空字符串:
if "hello": # Trueif " ": # True
非空列表、元组、字典、集合等容器:
if [1, 2, 3]: # Trueif (1, 2, 3): # Trueif {"key": "value"}: # Trueif {1, 2, 3}: # True对象本身(除非对象的布尔值被显式定义为 False):
class MyClass:passobj = MyClass()if obj: # True
被视为 False 的情况
以下值和对象在布尔上下文中被视为 False:
数字 0(整数、浮点数、复数):
if 0: # Falseif 0.0: # Falseif 0 j: # False
空字符串:
if "": # False
空列表、元组、字典、集合等容器:
if []: # Falseif (): # Falseif {}: # Falseif set(): # FalseNone:
if None: # False
自定义对象的布尔值被显式定义为 False:
class MyClass:def __bool__(self):return Falseobj = MyClass()if obj: # False
在 Python 中,if 判断语句会根据条件表达式的布尔值来决定是否执行代码块。以下是一些常见的值和对象在布尔上下文中的表现:
3、if嵌套
在嵌套 if 语句中,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中。
if 表达式1:语句if 表达式2:语句elif 表达式3:语句else:语句elif 表达式4:语句else:语句
示例:
# !/usr/bin/python3num=int(input("输入一个数字:"))if num%2==0:if num%3==0:print ("你输入的数字可以整除 2 和 3")else:print ("你输入的数字可以整除 2,但不能整除 3")else:if num%3==0:print ("你输入的数字可以整除 3,但不能整除 2")else:print ("你输入的数字不能整除 2 和 3")4、if操作运算符
比较运算符
比较运算符用于比较两个值,并返回布尔值(True或False)
| 运算符 | 描述 | 示例 |
|---|
== | 等于 | a == b |
!= | 不等于 | a != b |
> | 大于 | a > b |
< | 小于 | a < b |
>= | 大于等于 | a >= b |
<= | 小于等于 | a <= b |
逻辑运算符(也叫布尔运算符)
布尔运算符用于组合多个条件,并返回布尔值
| 运算符 | 描述 | 示例 |
|---|
and | 逻辑与 | a and b |
or | 逻辑或 | a or b |
not | 逻辑非 | not a |
示例:
a = 10b = 20c = 30if a>b and a>c:print("a is the greatest")elif b>a and b>c:print("b is the greatest")else:print("c is the greatest")位运算符
~是按位取反运算符。它用于对整数的二进制表示进行按位取反操作,即将二进制表示中的每一位取反,0变为1,1变为0
示例:
age = input("请输入你的年龄:")if int(age) >= 18 and int(age) <= 60:print("你可以申请贷款")if ~(int(age) >= 18 and int(age) <= 60):print("你不可以申请贷款")if ~~(int(age) >= 18 and int(age) <= 60):print("你可以申请贷款")if int(age) <18 or int(age) >60:print("你不可以申请贷款")成员运算符
成员运算符用于检查某个值是否存在于某个序列(如列表、字符串、元组、集合)中
| 运算符 | 描述 | 示例 |
|---|
in | 检查值是否在序列中 | x in y |
not in | 检查值是否不在序列中 | x not in y |
示例:
my_list = [1, 2, 3, 4, 5]if 3 in my_list:print("3 is in the list")else:print("3 is not in the list")身份运算符
身份运算符用于比较两个对象是否是同一个对象(即是否指向同一个内存地址)
| 运算符 | 描述 | 示例 |
|---|
is | 检查两个对象是否是同一个对象 | a is b |
is not | 检查两个对象是否不是同一个对象 | a is not b |
示例:
a = [1, 2, 3]b = [1, 2, 3]if a is b:print("a and b are the same object")else:print("a and b are different objects")三元运算符
三元运算符是一种简洁的条件表达式,用于根据条件返回两个值中的一个。
| 运算符 | 描述 | 示例 |
|---|
x if condition else y | 如果条件为真,返回 x,否则返回 y | result = "Yes" if condition else "No" |
示例:
condition = Trueresult = "Yes" if condition else "No"print(result) # 输出: Yes
5、三元运算符
在 Python 中,三元运算符(也称为条件表达式)可以用于简洁地实现条件逻辑。它通常用于简单的条件判断,特别是在列表推导式、字典推导式和生成器表达式中。以下是三元运算符在推导式中的全部应用示例:
1. 列表推导式中的三元运算符
示例 1:根据条件生成列表
# 生成一个列表,其中偶数为正数,奇数为负数numbers = [1, 2, 3, 4, 5]result = [x if x%2 == 0 else -x for x in numbers]print(result) # 输出: [-1, 2, -3, 4, -5]
示例 2:根据条件过滤列表
# 生成一个列表,只包含大于 2 的数字,否则为 0numbers = [1, 2, 3, 4, 5]result = [x if x>2 else 0 for x in numbers]print(result) # 输出: [0, 0, 3, 4, 5]
2. 字典推导式中的三元运算符
示例 1:根据条件生成字典
# 生成一个字典,键为数字,值为正数或负数numbers = [1, 2, 3, 4, 5]result = {x: x if x%2 == 0 else -x for x in numbers}print(result) # 输出: {1: -1, 2: 2, 3: -3, 4: 4, 5: -5}示例 2:根据条件过滤字典
# 生成一个字典,只包含大于 2 的数字,否则值为 0numbers = [1, 2, 3, 4, 5]result = {x: x if x>2 else 0 for x in numbers}print(result) # 输出: {1: 0, 2: 0, 3: 3, 4: 4, 5: 5}3. 集合推导式中的三元运算符
示例 1:根据条件生成集合
# 生成一个集合,其中偶数为正数,奇数为负数numbers = [1, 2, 3, 4, 5]result = {x if x%2 == 0 else -x for x in numbers}print(result) # 输出: {-1, 2, -3, 4, -5}示例 2:根据条件过滤集合
# 生成一个集合,只包含大于 2 的数字,否则为 0numbers = [1, 2, 3, 4, 5]result = {x if x>2 else 0 for x in numbers}print(result) # 输出: {0, 3, 4, 5}4. 生成器表达式中的三元运算符
示例 1:根据条件生成生成器
# 生成一个生成器,其中偶数为正数,奇数为负数numbers = [1, 2, 3, 4, 5]result = (x if x%2 == 0 else -x for x in numbers)print(list(result)) # 输出: [-1, 2, -3, 4, -5]
示例 2:根据条件过滤生成器
# 生成一个生成器,只包含大于 2 的数字,否则为 0numbers = [1, 2, 3, 4, 5]result = (x if x>2 else 0 for x in numbers)print(list(result)) # 输出: [0, 0, 3, 4, 5]
5. 嵌套推导式中的三元运算符
示例 1:嵌套列表推导式
# 生成一个嵌套列表,其中偶数为正数,奇数为负数matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]result = [[x if x%2 == 0 else -x for x in row] for row in matrix]print(result) # 输出: [[-1, 2, -3], [4, -5, 6], [-7, 8, -9]]
示例 2:嵌套字典推导式
# 生成一个嵌套字典,其中偶数为正数,奇数为负数matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]result = {i: {j: x if x%2 == 0 else-x for j, x in enumerate(row)} for i, row in enumerate(matrix)}print(result) # 输出: {0: {0: -1, 1: 2, 2: -3}, 1: {0: 4, 1: -5, 2: 6}, 2: {0: -7, 1: 8, 2: -9}}总结
三元运算符在推导式中的应用非常灵活,可以用于列表推导式、字典推导式、集合推导式和生成器表达式。它可以帮助你在一行代码中实现条件逻辑,使代码更加简洁和高效。以下是三元运算符在推导式中的通用形式:
[expression if condition else other_expression for item in iterable]