网站首页> 文章专栏> 机器学习之python(3):Python条件判断
机器学习之python(3):Python条件判断
原创 时间:2025-02-23 21:37 作者:管理员 浏览量:3

一、Python 条件判断初体验

在日常生活中,我们无时无刻不在做着各种判断。比如早上出门前,我们会看看天气预报,如果预报有雨,就会带上雨伞;如果是晴天,可能就会轻装上阵。又或者在购物时,我们会根据自己的预算来决定购买哪些商品,如果预算充足,可能会选择更贵但品质更好的商品;如果预算有限,就会挑选性价比更高的产品 。

在 Python 编程中,也有类似的机制,那就是条件判断。它允许程序根据不同的条件执行不同的代码块,就像我们根据不同的情况做出不同的决策一样。通过条件判断,我们可以让程序更加智能和灵活,能够根据不同的输入或环境做出相应的反应。接下来,就让我们一起走进 Python 条件判断的世界,看看它是如何工作的吧!


二、基础语法详解

(一)if 语句

if 语句是 Python 中最基本的条件判断语句,它的基本结构如下:
if 条件:
条件成立时执行的代码块
在这里,“条件” 是一个表达式,它的结果要么是True,要么是False。如果条件的结果为True,那么就会执行紧跟在if语句后面缩进的代码块;如果条件的结果为False,则跳过该代码块,继续执行后面的代码。需要注意的是,冒号:是语法的一部分,它表示条件语句的结束,而缩进则用于表示代码块的开始和结束。在 Python 中,通常使用 4 个空格来进行缩进,这是 Python 的官方推荐风格,也是大多数代码编辑器的默认设置。例如:
age = 18
if age >= 18:
print("你已经成年了,可以进行一些需要成年人身份的操作。")
在这个例子中,首先定义了一个变量age并赋值为 18。然后,if语句判断age是否大于等于 18,由于条件成立,所以会执行缩进后的print语句,输出 “你已经成年了,可以进行一些需要成年人身份的操作。”。

(二)if - else 语句

if - else语句用于实现双向条件判断,即当条件成立时执行一段代码,当条件不成立时执行另一段代码。它的语法结构如下:
if 条件:
条件成立时执行的代码块
else:
条件不成立时执行的代码块
同样,冒号和缩进的规则与if语句一致。else关键字后面没有条件表达式,它表示当if语句中的条件为False时执行的代码块。例如:
age = 16
if age >= 18:
print("你已经成年了,可以进行一些需要成年人身份的操作。")
else:
print("你还未成年,需要遵守未成年人相关规定。")
在这个例子中,age的值为 16,小于 18,所以if语句的条件不成立,程序会跳过if代码块,执行else代码块中的print语句,输出 “你还未成年,需要遵守未成年人相关规定。” 。

(三)if - elif - else 语句

当需要进行多个条件判断时,就可以使用if - elif - else语句。它的语法结构如下:
if 条件1:
条件1成立时执行的代码块
elif 条件2:
条件2成立时执行的代码块
elif 条件3:
条件3成立时执行的代码块
...
else:
以上条件都不成立时执行的代码块
elif是else if的缩写,它可以有多个。Python 会按照顺序依次判断每个条件,只要有一个条件成立,就会执行对应的代码块,然后跳过整个if - elif - else结构,继续执行后面的代码。如果所有条件都不成立,就会执行else代码块(else部分是可选的,如果没有else部分,当所有条件都不成立时,程序不会执行任何操作)。例如,我们可以根据学生的考试成绩来给出相应的评价:
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")

在这个例子中,score的值为 85,首先判断score是否大于等于 90,不成立;接着判断score是否大于等于 80,成立,所以执行对应的print语句,输出 “良好”,然后跳过后面的elif和else部分。


三、运算符的巧用

(一)比较运算符

比较运算符用于比较两个值的大小或是否相等,其返回值是布尔类型(True或False)。在 Python 中,常见的比较运算符有以下几种:
  • 等于(==:判断两个值是否相等,如果相等返回True,否则返回False。例如:
a = 5
b = 5
print(a == b) # 输出: True
  • 不等于(!=:判断两个值是否不相等,如果不相等返回True,否则返回False。例如:
a = 5
b = 3
print(a!= b) # 输出: True
  • 大于(>:判断左边的值是否大于右边的值,如果大于返回True,否则返回False。例如:
a = 5
b = 3
print(a > b) # 输出: True
  • 小于(<:判断左边的值是否小于右边的值,如果小于返回True,否则返回False。例如:
a = 3
b = 5
print(a < b) # 输出: True
  • 大于等于(>=:判断左边的值是否大于或等于右边的值,如果是返回True,否则返回False。例如:
a = 5
b = 5
print(a >= b) # 输出: True
  • 小于等于(<=:判断左边的值是否小于或等于右边的值,如果是返回True,否则返回False。例如:
a = 3
b = 5
print(a <= b) # 输出: True
这些比较运算符在条件判断中起着关键作用。比如,在一个根据学生成绩划分等级的程序中:
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
这里就使用了大于等于(>=)比较运算符来判断成绩所处的范围,从而确定对应的等级。

(二)逻辑运算符

逻辑运算符用于组合多个条件,以实现更复杂的条件判断逻辑。Python 中的逻辑运算符主要有and(与)、or(或)、not(非) 。
  • and(与):只有当and两边的条件都为True时,整个表达式的结果才为True,否则为False。例如,判断一个人是否既成年又有驾照:
age = 20
has_license = True
if age >= 18 and has_license:
print("你可以合法开车")
else:
print("你不能合法开车")
在这个例子中,只有当age >= 18和has_license都为True时,才会输出 “你可以合法开车”。如果其中任何一个条件为False,整个条件判断就为False,会执行else分支。
  • or(或):只要or两边的条件中有一个为True,整个表达式的结果就为True,只有当两边条件都为False时,结果才为False。比如,判断是否满足参加活动的条件:
is_member = False
has_ticket = True
if is_member or has_ticket:
print("你可以参加活动")
else:
print("你不能参加活动")
这里只要is_member或has_ticket中有一个为True,就可以参加活动,只有当两者都为False时,才不能参加活动。
  • not(非):not用于对一个条件进行取反操作,如果原来的条件为True,经过not运算后变为False;如果原来的条件为False,经过not运算后变为True。例如:
is_student = True
if not is_student:
print("你不是学生")
else:
print("你是学生")
这里因为is_student为True,not is_student就为False,所以会执行else分支,输出 “你是学生”。如果is_student初始值为False,那么not is_student为True,就会执行if分支,输出 “你不是学生” 。
逻辑运算符可以组合使用,通过合理运用括号,可以明确运算的优先级,实现非常复杂的条件判断逻辑。例如:
age = 16
has_license = False
is_accompanied = True
if (age >= 18 or has_license) and not is_accompanied:
print("你可以独自开车")
else:
print("你不能独自开车")

这个例子中,先判断(age >= 18 or has_license),如果这个条件成立,再判断not is_accompanied,只有当这两个条件都满足时,才会输出 “你可以独自开车”,否则输出 “你不能独自开车” 。


四、实战演练

(一)简单案例

为了更好地理解和掌握 Python 条件判断的用法,我们通过一些具体的案例来进行实践。先来看两个简单的例子,判断一个数是否为偶数和判断成绩等级。
判断一个数是否为偶数
num = 10
if num % 2 == 0:
print(f"{num} 是偶数")
else:
print(f"{num} 是奇数")
在这个例子中,使用取模运算符%来判断num除以 2 的余数是否为 0。如果余数为 0,说明num能被 2 整除,是偶数,执行if代码块;否则是奇数,执行else代码块 。
判断成绩等级
score = 78
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
这个例子根据学生的考试成绩来判断等级。首先判断成绩是否大于等于 90,如果是则输出 “优秀”;如果不是,继续判断是否大于等于 80,以此类推。如果成绩小于 60,则输出 “不及格” 。通过这个案例,我们可以看到if - elif - else语句在处理多个条件判断时的应用。

(二)复杂案例

接下来,我们看一个更复杂的实际案例 —— 电商订单处理。在电商系统中,订单处理涉及到多个条件和复杂的业务逻辑。例如,需要根据订单的状态、金额、商品类别等信息来进行不同的处理,如判断订单是否有效、是否可以享受折扣、是否需要特殊处理等。假设我们有一个电商订单的数据结构,每个订单是一个字典,包含订单编号、订单状态、订单总额、商品列表等信息。商品列表是一个包含每个商品信息的字典列表,每个商品字典包含商品名称、类别、价格等信息。下面是一个简化的示例代码,展示如何根据订单状态、金额和商品类别来处理订单:
orders = [
{
"order_id": 1,
"status": "paid",
"total_amount": 150,
"items": [
{"name": "商品1", "category": "electronics", "price": 50},
{"name": "商品2", "category": "clothes", "price": 100}
]
},
{
"order_id": 2,
"status": "unpaid",
"total_amount": 80,
"items": [
{"name": "商品3", "category": "food", "price": 80}
]
}
]
for order in orders:
if order["status"] == "paid":
if order["total_amount"] >= 100:
for item in order["items"]:
if item["category"] == "electronics":
print(f"订单 {order['order_id']} 中的电子产品 {item['name']} 享受9折优惠")
item["price"] *= 0.9
else:
print(f"订单 {order['order_id']} 已支付,但金额不足100元,无优惠")
else:
print(f"订单 {order['order_id']} 未支付,暂不处理")

在这个示例中,外层的for循环遍历每个订单。对于每个订单,首先判断订单状态是否为 “paid”(已支付)。如果已支付,再判断订单总额是否大于等于 100 元。如果满足金额条件,接着遍历订单中的商品列表,对于每个商品,判断其类别是否为 “electronics”(电子产品)。如果是电子产品,就打印出该商品享受 9 折优惠的信息,并更新商品价格。如果订单状态不是 “paid”,则打印出订单未支付,暂不处理的信息 。通过这个案例,我们可以看到如何在实际场景中运用条件判断来处理复杂的业务逻辑,通过多层条件判断和循环结构,实现对订单的精细化处理。


五、易错点与注意事项

(一)缩进问题

在 Python 中,缩进是语法的重要组成部分,它用于表示代码块的层次结构。在条件判断语句中,正确的缩进至关重要。如果缩进不正确,可能会导致语法错误,或者程序的逻辑与预期不符。比如下面这段错误代码:
age = 20
if age >= 18:
print("你已经成年了")
在这个例子中,print语句没有正确缩进,它不属于if语句的代码块,Python 解释器会抛出IndentationError错误,提示缩进错误。正确的代码应该是:
age = 20
if age >= 18:
print("你已经成年了")
通过正确的缩进,print语句被包含在if语句的代码块中,当age >= 18条件成立时,就会执行该语句。另外,在同一个代码块中,所有代码的缩进量必须保持一致。例如:
age = 20
if age >= 18:
print("你已经成年了")
print("可以进行一些成年人的活动")
上述代码中,第二个print语句的缩进与第一个print语句不一致,这同样会导致IndentationError错误。在实际编程中,为了避免缩进错误,建议使用代码编辑器或 IDE 的自动缩进功能,这样可以帮助我们自动保持代码的正确缩进。同时,要养成良好的编程习惯,在编写代码时时刻注意缩进的一致性。

(二)条件顺序

在使用if - elif - else语句进行多个条件判断时,条件的顺序非常重要。因为 Python 会按照从上到下的顺序依次判断每个条件,一旦找到一个满足的条件,就会执行对应的代码块,然后跳过整个if - elif - else结构。如果条件顺序不当,可能会导致逻辑错误。例如,下面是一个根据成绩判断等级的错误示例:
score = 85
if score >= 60:
print("及格")
elif score >= 80:
print("良好")
elif score >= 90:
print("优秀")
else:
print("不及格")
在这个例子中,由于score >= 60这个条件在最前面,当score为 85 时,它首先满足score >= 60这个条件,所以会输出 “及格”,而不会再去判断后面的条件,这显然不符合我们的预期。正确的顺序应该是将条件从严格到宽松进行排列,即:
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
这样,当score为 85 时,会先判断score >= 90,不成立;再判断score >= 80,成立,所以会输出 “良好”,符合我们对成绩等级判断的逻辑。因此,在编写条件判断语句时,一定要仔细考虑条件的顺序,确保程序的逻辑正确性。



Python 条件判断的应用远不止于此。在未来的学习和实践中,随着你对 Python 语言的深入了解,你会发现它在更多复杂场景和高级应用中都有着不可或缺的地位。比如在人工智能领域,条件判断可以用于根据模型的输出结果做出决策,控制程序的流程;在大数据处理中,通过条件判断可以筛选和处理海量的数据。希望大家在后续的 Python 学习之旅中,不断深入探索条件判断的更多用法,将其与其他知识相结合,提升自己的编程水平,用代码创造更多的可能!

动动小手 !!!
来说两句吧
最新评论