在之前编写的Python中我们都是一条一条的编写的语句,没有任何条件或判断,程序会按照代码编写顺序依次执行,这种编写结构叫顺序结构,是编程中最基本的控制结构。除了顺序机构,还有一个比较基本的控制结构,那就是分支结构(选择结构),这个结构是根据条件的真假来选择不同的执行路径。
分支结构可以使用if
语句来实现。if
语句的语法是:
if condition:
# 执行条件为真时的代码块
else:
# 执行条件为假时的代码块
其中condition
是一个表达式,它的值可以是True
或False
。如果condition
为True
,则执行if
代码块中的语句;如果condition
为False
,则执行else
代码块中的语句。
如:
username = input('用户名:')
password = input('密码:')
if username == 'admin' and password == 'admin':
print('登陆成功!')
print('欢迎使用xxx系统!')
else:
print('登陆失败!')
print('用户名或密码错误!')
print('程序结束,再见!')
该例使用了两个赋值表达式和与运算,只有同时满足上面两个表达式的条件,才会执行if里的代码块,否则执行else后面的代码块。
代码块:代码块是一组在程序中按照特定规则组织在一起的代码语句。代码块通常由花括号({})括起来,或者通过缩进来表示。
在大多数编程语言中,代码块用于将一组相关的语句作为一个整体来执行。代码块可以包含单个语句,也可以包含多个语句。代码块的主要目的是定义一个作用域,其中的变量和语句可以相互访问和影响。
需要说明的是,Python中没有用花括号来构造代码块,而是使用了缩进的方式来表示代码的层次结构,如果if条件成立的情况下需要执行多条语句,只需保持多条语句具有相同的缩进就可以了。缩进可以使用任意数量的空格,但通常使用4个空格,强烈建议大家不要使用制表键来缩进代码,如果你已经习惯了这么做,可以设置代码编辑工具将一个制表键自动变成4个空格,很多的代码编辑工具都支持这项功能。
除了基本的if-else
结构,还可以使用if-elif-else
结构来处理多个条件。elif
是else if
的缩写,用于检查多个条件。
如下面是一个利用分支结构实现分段函数求值的案例。
f ( x ) = { 2 x − 6 , x > 1 x + 3 , − 1 ≤ x ≤ 1 6 x + 2 , x < − 1 f(x) = \begin{cases} 2x-6, &x \gt 1 \\ x + 3, & -1 \le x \le 1 \\ 6x + 2, & x \lt -1 \end{cases} f(x)=⎩ ⎨ ⎧2x−6,x+3,6x+2,x>1−1≤x≤1x<−1
x = float(input('x = '))
if x > 1:
y = 2 * x - 6
elif x < -1:
y = x + 3
else:
y = 6 * x + 2
print(f'f({x}) = {y}')
上面案例先通过input输入一个数值x,然后判断x的值满足上面3个条件中哪一个,则执行相应的代码块,最终打印输出结果。
分支结构是可以嵌套的,如:
x = 10
y = 5
if x > y:
print("x 大于 y")
if x > 0:
print("x 是正数")
else:
print("x 是负数")
else:
print("x 小于等于 y")
在这个示例中,使用了一个if语句检查x是否大于y,如果条件为真,那么会执行if代码块中的语句。其中又在该if代码块中,又嵌套了一个if-else语句来检查x是否大于0。
在实际编程中,我们可以根据具体需求嵌套多层分支结构,以实现更灵活和复杂的程序行为。
但是在Python中,它更希望我们遵循以下原则:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
即:
漂亮的比丑陋的好
清晰的比晦涩的好
简单的比复杂的好
复杂的比错综复杂的好,正所谓简单即美,大道至简。
扁平的比嵌套的好
稀疏的比密集的好
可读性非常重要
特殊情况也不能狗特殊到破坏上述规则
所以分支结构可以嵌套使用,但是一定要注意嵌套的深度,嵌套太深会直接影响代码的可读性。