3.3 python中的条件表达式
在Python中,编写条件表达式通常指的是使用三元操作符(尽管Python官方文档可能不直接称其为“三元操作符”,但它是基于三个操作数:条件、真值表达式和假值表达式)来在一行内实现简单的if-else逻辑。条件表达式的语法如下:
if condition:
result = value_if_true
else:
value_if_false
也可以简写为如下形式:
result = value_if_true if condition else value_if_false
这里,condition
是一个布尔表达式,它会被评估。如果 condition
为 True
,则 result
被赋值为 value_if_true
;如果 condition
为 False
,则 result
被赋值为 value_if_false
。
示例
假设我们有一个变量 age
,我们想要根据它的值来返回一个字符串,表示这个人是否成年:
age = 18
if age >= 18:
status = "成年"
else:
status ="未成年"
print(status) # 输出: 成年
status = "成年" if age >= 18 else "未成年"
print(status) # 输出: 成年
age = 15
status = "成年" if age >= 18 else "未成年"
print(status) # 输出: 未成年
在这个例子中,我们首先检查 age >= 18
这个条件。如果条件为真(即年龄大于或等于18岁),则 status
被赋值为 "成年"
;如果条件为假(即年龄小于18岁),则 status
被赋值为 "未成年"
。
注意事项
- 条件表达式的结果必须是可以被赋值的类型,比如数字、字符串、列表等。
- 尽管条件表达式可以写出非常紧凑的代码,但在处理更复杂的逻辑时,使用完整的
if-elif-else
语句可能更清晰、更易于理解。 - 条件表达式不能包含多个条件分支(即没有直接的“三元”以上的扩展)。如果你需要处理多个条件,应该使用
if-elif-else
语句或考虑使用字典映射等其他方法。 - 条件表达式可以嵌套,但通常不推荐这样做,因为这会降低代码的可读性。
嵌套条件表达式的示例(尽管不推荐)
score = 85
grade = "A" if score >= 90 else ("B" if score >= 80 else "C")
print(grade) # 输出: B
在这个嵌套示例中,我们首先检查 score >= 90
。如果为假,则继续检查 score >= 80
。如果为真,则 grade
被赋值为 "B"
;如果为假(且第一个条件也为假),则 grade
将默认为 "C"
(在这个例子中,因为我们没有为低于80分的情况提供明确的值,但你可以通过添加更多的 else
子句来处理这种情况)。然而,正如之前提到的,对于更复杂的逻辑,使用 if-elif-else
语句通常是更好的选择。