当前位置:首页>python>【python3基础教程】条件控制

【python3基础教程】条件控制

  • 2026-09-02 18:57:22
【python3基础教程】条件控制

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():  # False
  • None:

    if None:  # False
  • 自定义对象的布尔值被显式定义为 False:

    class MyClass:def __bool__(self):return Falseobj = MyClass()if obj:  # False

在 Python 中,if 判断语句会根据条件表达式的布尔值来决定是否执行代码块。以下是一些常见的值和对象在布尔上下文中的表现:

  • True:非零数字、非空字符串、非空容器、对象本身。

  • False:数字 0、空字符串、空容器、None、自定义对象的布尔值被显式定义为 False。

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,否则返回 yresult = "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]

最新文章

随机文章