在 Python 中,if-else 语句是用来基于条件执行不同代码块的一种控制流结构。它允许程序根据某个条件的结果(真或假)来决定执行哪一部分代码。
If 语句
if
语句使用 if
关键字后跟一个条件。当条件为真时,执行 if
语句体内的代码;否则,如果存在的话,执行 if
语句之后的代码。
语法
if condition:
# 如果条件为真,则执行这里的代码
以下是如何 if
语句工作的完整流程:
- 测试表达式(条件)首先被评估。
- 如果表达式为真(非零或非空),则执行
if
语句体内的代码。 - 如果表达式为假(零或空),则跳过
if
语句体内的代码,执行if
语句之后的代码。 - 不管条件真假,位于
if
语句之外的代码都会默认被执行。
为了更好地理解这一点,我们来看例子:
当条件为真时的情况
在下面的代码中,因为 a
大于 50,所以两个 print
语句都将被执行:
a = 60
if a > 50:
print("a is greater than 50.") # 条件为真时执行
print("This is also inside the if block.") # 条件为真时执行
print("This is outside the if block.") # 这行代码总是会被执行
当条件为假时的情况
在下面的代码中,因为 20 不大于 50,所以 if
块内部的代码不会被执行,而 if
块外部的代码将会被执行。
a = 20
if a > 50:
print("This is the if body") # 如果 a 大于 50,这行代码会被执行
print("This is outside the if block") # 这行代码总是会被执行
If-Else 语句
if-else
语句用于根据给定条件执行两个不同的代码块:一个是条件为真的情况下的代码块,另一个是条件为假的情况下的代码块。如果条件为真,则执行 if
块中的代码;如果条件为假,则执行 else
块中的代码。
语法
if condition:
# 如果条件为真,则执行这里的代码
else:
# 如果条件为假,则执行这里的代码
值得注意的是,Python 使用缩进来定义代码块的范围。其他编程语言通常使用花括号 {}
来达到相同的目的。
工作流程
下面是 if-else
语句的工作流程:
- 首先,测试表达式被评估。
- 如果测试表达式为真,那么
if
块中的语句将被执行。 - 接下来,
if
块之后的语句将被执行。 - 如果测试表达式为假,那么
else
块中的语句将被执行。 - 然后,
if-else
结构之后的语句将被执行。
示例
下面是一个示例,展示了 if-else
语句是如何工作的:
# 设定一个变量 i
i = 4
# 检查 i 是否能被 2 整除
if i % 2 == 0:
print("The value of i is even.")
else:
print("The value of i is odd.")
# 继续执行此后的代码
print("This is executed no matter the value of i.")
在这个例子中,如果 i
的值能被 2 整除(即 i
是偶数),那么 “The value of i is even.” 将会被打印出来;如果 i
不能被 2 整除(即 i
是奇数),那么 “The value of i is odd.” 将会被打印出来。最后一条 print
语句无论 i
的值是什么都会被执行。
嵌套的 If 语句
当一个 if
语句存在于另一个 if
语句内部时,这种情况被称为嵌套的 IF
语句。嵌套 IF
语句适用于需要多次过滤同一变量的情况。
语法
if condition1:
# 如果 condition1 为真,则执行这里的代码
if condition2:
# 如果 condition2 为真,则执行这里的代码
# condition2 结束的地方
# condition1 结束的地方
在嵌套的 IF
语句中,你应当始终注意缩进来定义每个语句的作用域。理论上,你可以根据需要嵌套多层 if
语句,但这会使程序效率降低,并且可能导致代码难以阅读和理解。因此,应尽量减少嵌套 IF
语句的使用。
工作流程
下面的工作流程图展示了嵌套 IF
语句是如何工作的:
- 首先评估
test-expression-1
。 - 如果
test-expression-1
为真,则执行if
块内的代码。 - 在这个
if
块内部,可能会有另一个if
语句,它评估test-expression-2
。 - 如果
test-expression-2
为真,则执行其对应的代码块。 - 如果
test-expression-2
为假,则跳过其对应的代码块,并继续执行if
块内的其余代码。 - 如果
test-expression-1
为假,则跳过整个if
块,并执行if
块之后的代码。
示例
假设我们有一个数字,我们要检查这个数字是否大于 25。如果小于 25,我们将检查它是否是奇数或偶数。如果大于 25,我们将打印出该数字大于 25。
# 定义一个数字
number = 23
# 第一层 if 语句
if number < 25:
# 如果 number 小于 25,则执行这里
# 第二层 if 语句,检查是否为偶数
if number % 2 == 0:
print("The number is less than 25 and is even.")
else:
print("The number is less than 25 and is odd.")
else:
# 如果 number 大于等于 25,则执行这里
print("The number is greater than 25.")
if-elif-else 语句
if-elif-else
语句是一种扩展的条件控制结构,它允许你在多个条件之间进行选择。当 if
条件为假时,程序会检查下一个 elif
(即“else if”)条件。如果所有的 elif
条件都为假,则执行 else
块中的代码。
语法
if condition1:
# 如果 condition1 为真,则执行这里的代码
elif condition2:
# 如果 condition1 为假并且 condition2 为真,则执行这里的代码
elif condition3:
# 如果 condition1 和 condition2 为假并且 condition3 为真,则执行这里的代码
else:
# 如果所有条件都为假,则执行这里的代码
工作流程
下面是一个流程图,展示 if-elif-else
结构是如何工作的:
- 首先检查
Test Expression1
。 - 如果
Test Expression1
为真,则执行if
块中的代码。 - 如果
Test Expression1
为假,则控制权转移到下一个Test Expression2
。 - 如果
Test Expression2
为真,则执行elif1
块中的代码。 - 如果
Test Expression2
为假,则检查Test Expression3
。 - 如果
Test Expression3
为真,则执行elif2
块中的代码。 - 如果
Test Expression3
也为假,则执行else
块中的代码。 - 之后,程序将继续执行
if-elif-else
结构之后的代码。
示例
下面的程序使用 if-elif-else
结构来检查一个字母是元音还是辅音。
letter = 'a'
if letter.lower() in ['a', 'e', 'i', 'o', 'u']:
print("The letter is a vowel.")
elif letter.isalpha():
print("The letter is a consonant.")
else:
print("The input is not a letter.")
在这个例子中:
- 如果
letter
是元音(‘a’, ‘e’, ‘i’, ‘o’, ‘u’),则输出 “The letter is a vowel.” - 如果
letter
是字母但不是元音,则输出 “The letter is a consonant.” - 如果
letter
不是字母,则输出 “The input is not a letter.”
总结
希望这篇博客帮助你理解了 Python 中的条件语句。你学习了 if、else、if-elif-else 以及嵌套的 IF 语句,条件语句是编程中非常基础且重要的部分,它们让你的程序可以根据不同的条件作出不同的响应,从而实现更复杂的逻辑。