在Python中,条件控制至关重要,任何编程语言中,条件控制都是基础,它可以出现在Python中的任何位置。Python作为一种易学易用的编程语言,当然也提供了丰富的条件控制工具。Python允许程序根据不同的条件执行不同的代码块,从而实现更复杂的逻辑。那么下面我们一起来学习条件控制语句。
1. 基本语法
在 Python 中,条件语句用于根据条件的真假(True 或者 False)执行不同的代码块。下图是if语句的执行过程:从结构上看,条件语句决定了代码的执行方向,if
语句检查一个条件是否为真,如果为真,则执行 if
代码块中的代码。
语法如下:
if condition:
# 如果条件为真,则执行这里的代码块
statement1
statement2
# 可以有多个语句
# 可选,可以添加一个或多个 elif 语句
elif condition2:
# 如果条件2为真,则执行这里的代码块
statement3
statement4
# 可以有多个语句
# 可选,可以添加一个 else 语句
else:
# 如果上述条件都不为真,则执行这里的代码块
statement5
statement6
# 可以有多个语句
注意:
- 可以有一个或多个
elif
(else if)语句,用于检查多个条件。如果之前的if
或elif
条件为假,会继续检查下一个条件。 - 可以有一个可选的
else
语句,用于指定如果上述条件都为假时要执行的代码块。
1.1 if语句
if
语句用于在代码中创建条件分支,根据条件的真假来执行不同的代码块。
下面来看一段示例代码:
x = 10
if x > 5:
print("x 大于 5")
这里的逻辑是,如果x
的值大于5,就会打印出"x大于5"。否则,这个print
语句就不会被执行。我们这里x=10,那么肯定会输出 x 大于 5 。大家一定要跟着练一下,下去试试。
1.2 if-else语句
if-else
语句,允许在条件为假时执行另一段代码块。可以看上面1.1的代码只有一个if,也就是说,if存在即可,elif、else都是可选的,可以存在0到多个,只要合理即可。
if-else语法如下:
if condition:
# 如果条件为真,执行这里的代码
else:
# 如果条件为假,执行这里的代码
下面继续来看一段示例代码:
x = 10
if x > 5:
print("x 大于 5")
else:
print("x 小于等于 5")
这里如果x大于5,那么输出x 大于 5,否则输出x 小于等于 5,输出如下结果:
x 大于 5
1.3 if-elif-else语句
elif
是else if
的缩写,允许我们在前一个条件为假时检查另一个条件。elif可以检查多个条件,其语法如下:
if condition1:
# 如果条件1为真,执行这里的代码
elif condition2:
# 如果条件2为真,执行这里的代码
else:
# 如果以上条件都不为真,执行这里的代码
示例代码:
x = 10
if x > 5:
print("x 大于 5")
elif x == 5:
print("x 等于 5")
else:
print("x 小于 5")
这将输出:
x 大于 5
2. if语句嵌套
有时候我们会面对多种条件的逻辑,这时候需要嵌套条件语句,可以在一个 if
语句块内部嵌套另一个 if
语句块,这样可以根据更复杂的条件来执行代码块。
嵌套的 if
语句示例:
x = 10
y = 5
if x > 5:
print("x 大于 5")
if y > 5:
print("y 大于 5")
else:
print("y 小于等于 5")
else:
print("x 小于等于 5")
这里外部的 if
语句检查 x
是否大于 5。如果条件为真,它会执行内部的 if
语句块。如果 y
大于 5,它会打印 "y 大于 5"。如果 y
小于等于 5,它会打印 "y 小于等于 5"。
那么,这将输出:
x 大于 5
y 小于等于 5
3. 三元运算符
三元运算符是条件语句中,一种简化的条件表达式,也就是用一行代码中,根据条件为真或为假执行不同的操作。三元运算符的语法如下:
x = true_value if condition else false_value
条件中的 condition
是一个条件表达式,如果它为真,x
将被赋值为 true_value
,否则将被赋值为 false_value
。
下面简单演示一下:
x = 10
y = 20
max_value = x if x > y else y
print(max_value) # 输出:20
这里的逻辑是:如果 x
大于 y
,max_value
将被赋值为 x
的值,否则将被赋值为 y
的值。这将输出 20
,因为 y
的值是 20
。
当然,很多时候,我们用三元运算符,是为了简单赋值的操作。就如下面:
result = "Pass" if score >= 60 else "Fail"
如果 score
大于或等于 60
,result
将被赋值为 "Pass"
,否则将被赋值为 "Fail"
。这样就可以简单判断成绩的合格与否。
4. match...case
在 Python 3.10 中引入的 match...case
语法是一种新的模式匹配语法,它提供了一种更简洁、更直观的方式来处理复杂的条件逻辑。这种语法在很多其他编程语言中都有类似实现,如 Rust、Scala、Kotlin 等。
match...case
语法允许你使用类似于 switch...case
的结构,但是更加灵活和强大。它允许你匹配对象的类型、结构、属性等,并根据匹配的结果执行相应的代码块。
与if-elif-else语句相比,match...case
提供了一种更具表达力的方式来处理复杂的条件判断,更适合用于多个条件的情况,并且可以在一个结构中直观地展示多种模式的匹配。
match...case
语法结构:
match expression:
case pattern1:
# 处理pattern1的情况
case pattern2:
# 处理pattern2的情况
...
case _:
# 处理其他情况,类似于default
expression
是需要进行匹配的表达式。pattern1
,pattern2
, ... 是不同的模式,用来匹配expression
的值。_
是通配符,用于匹配其他未列出的所有情况,类似于switch
语句中的default
。
示例代码:
data = "String"
def check_data_type(data):
match data:
case int:
print("整数")
case str:
print("字符串")
case list:
print("列表")
case _:
print("未知类型")
在这个例子中,根据传入的data
的类型,打印出相应的信息。如果传入的data
类型不在已知的类型中,则打印"未知类型"。
再次提醒:Python 3.10 中才引入match...case 语法,所以,得检查一下你的Python环境是不是Python 3.10,用python --version,去看看吧。
5. 练习题
判断用户是否成年的程序:
age = int(input("请输入您的年龄:"))
if age >= 18:
print("您已经成年了!")
else:
print("您还未成年。")
根据用户输入的成绩判断等级的程序:
score = float(input("请输入您的成绩:"))
if score >= 90:
print("您的成绩为 A 级别")
elif score >= 80:
print("您的成绩为 B 级别")
elif score >= 70:
print("您的成绩为 C 级别")
elif score >= 60:
print("您的成绩为 D 级别")
else:
print("您的成绩为 E 级别,不及格")
根据用户输入的月份判断季节的程序:
month = int(input("请输入一个月份(1-12):"))
if month < 1 or month > 12:
print("输入错误,请输入一个有效的月份!")
else:
if month in [12, 1, 2]:
print("这是冬季。")
elif month in [3, 4, 5]:
print("这是春季。")
elif month in [6, 7, 8]:
print("这是夏季。")
else:
print("这是秋季。")
这些程序中,input()
函数用于接收用户的输入,并将其转换为适当的类型(如 int
或 float
)进行判断。
结语
Python 条件语句在实际编程中广泛应用。大家可以尝试着跟着代码一起学习,如果后面还有补充的,我将继续为大家分享。
我们下一篇文章将开始Python结构语法的讲解,继续学习、记录python的下一个知识点。
如果感觉阅读对您还有些作用,可以评论留言,关注我。谢谢您的阅读!
往期学习: