Python 教程 - 决策构造
在本节中,你将学习 Python 编程中的决策构造。最常用的决策构造是 if…else
构造。
if…else
声明
当你有两个语句块并且你只想根据某些条件执行一个语句块时,将使用 if…else
语句。在 Python 编程中,大多数 if…elif…else
都用作决策构造。
if
声明
在 if
声明中,你只有一个语句块,并且仅当条件为 True
时才执行此块,当条件为 False
时,将忽略该语句块。
以下是 Python 中 if
声明的语法:
if condition:
statement(s)
Python 中的 if
语句主体不是用大括号括起来,而是使用缩进。主体的末端由第一条不在同一个缩进水平的行来决定。
if
声明示例
考虑以下 if
使用语句的示例:
a = 24
if a % 2 == 0:
print(a, "is an even number")
b = 23
if b % 2 == 0:
print(b, "is an odd number")
24 is an even number
在此代码中,首先为变量 a
分配一个值,然后评估语句中的 if
条件。它通过 % 2
来检查 a
是否为偶数,也就是是否 a % 2
为零,然后控制是否打印出相应的语句。
然后 b
分配一个奇数 23
。if
语句中的条件不是 True
,因此 print(b, "is an odd number")
将不会执行。
if...else
声明
以下是 if...else
语句的语法:
if condition:
block of statements
else:
block of statements
在 if...else
中,如果 if
条件为 True
,则执行相应的语句块,否则将执行 else
下的语句块。
if...else
声明示例
考虑下面 if...else
的代码:
a = 44
if a%2==0:
print(a, "is an even number")
else:
print(a, "is an odd number")
44 is an even number
如果 a
是偶数,它将打印 a is an even number
,否则将打印 a is an odd number
。
注意
if
和 else
块不能同时执行或忽略。根据条件是否执行仅执行一个程序段 True
。
if...elif...else
声明
以下是 if...elif...else
语句的语法:
if condition:
block of statements
elif condition:
block of statements
else:
block of statements
elif
代表 else if
它可以在此 if..elif..else
构造中多次使用。
当 if
条件为 False
时,将检查 elif
条件等等。当所有的 if
条件和 elif
条件是 False
时,else
部分将被执行。
注意
if...elif...else
仅能执行一个程序段。
if...elif...else
声明示例
考虑下面的代码,其中我们使用了用于检查多个条件的 if...elif...else
语句:
a = -34
if a > 0:
print("Number is Positive")
elif a < 0:
print("Number is Negative")
else:
print("Number is zero")
Number is Negative
嵌套 if
语句
在 Python 中,你可以在 if
内部包含另一个 if
语句,这被称为嵌套 if
语句。
你可以嵌套任何类型的 if
语句任意多次。但是在程序设计语言中使用嵌套 if
结构并不是一个好习惯,因为程序的可读性会因此而变差。
嵌套 if
语句示例
在以下代码中,嵌套 if
结构用于查找最大数量:
T = 52
if T > 25:
if T < 50:
print("Temperature is higher than 25 but lower than 50")
else:
print("Temperature is higher than 50")
else:
if T < 0:
print("Temperature is lower than 0")
else:
print("Temperature is higher than 0 but lower than 25")
Temperature is higher than 50
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn