分支结构
迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构。但顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后,我们要根据玩家得到分数来决定究竟是进入第二关,还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行。类似的场景还有很多,我们将这种结构称之为“分支结构”或“选择结构”。在Python中,要构造分支结构可以使用if
、elif
和else
关键字。
if 语句
username=input('用户名:')
password=input('密码:')
if username=='admin'and password=='Admin123!!':
print('登录成功!')
print('欢迎使用xxx系统')
print('客服热线:400-00-8800')
else:
print('登录失败!用户名或密码错误')
print('程序结束,再见!')
Python中使用了缩进的方式来表示代码的层次结构,如果if
条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。缩进可以使用任意数量的空格,但通常使用4个空格。
温馨提示:
if
和else
的最后面有一个:
分段函数求值
x = float(input('x='))
if x > 1:
y = 3 * x - 5
elif x > -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f(x)={y}')
根据实际开发的需要,分支结构是可以嵌套的。
x = float(input('x='))
if x > 1:
y = 3 * x - 5
else:
if x < -1:
y = 5 * x + 3
else:
y = x + 2
print(f'f(x)={y}')
练习
以下表为例,输入本月总收入,输入本月五险一金扣除金额,计算出应缴税款和税后收入。
F=float(input('请输入本月工资收入:'))
G=float(input('请输入本月五险一金扣除额:'))
E=F-G
I=E-3500
if 0<=I<=1500:
R=0
D=0
elif 1500<I<=4500:
R=0.03
D=105
elif 4500<I<=9000:
R=0.2
D=555
elif 9000<I<=35000:
R=0.25
D=1005
elif 35000<I<=55000:
R=0.3
D=2755
elif 55000<I<=80000:
R=0.35
D=5505
else:
R=0.45
D=13505
if I<=0:
T=0
A=E-T
else:
T=I*R-D
A=E-T
print(f'应缴税款:{T:.2f}')
print(f'税后收入:{A:.2f}')
循环结构
循环结构就是程序中控制某条或某些指令重复执行的结构。在Python中构造循环结构有两种做法,一种是for-in
循环,一种是while
循环。
for-in循环
如果明确的知道循环执行的次数,我们推荐使用for-in
循环。
# 1-100中3或5的倍数求和
total = 0
for i in range(1, 101):
if i % 3 == 0 or i % 5 == 0:
total += i # total=total+i
#else:
#pass
print(total)
温馨提示
-
range(101)
:可以用来产生0到100范围的整数,需要注意的是取不到101。 -
range(1, 101)
:可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。 -
range(1, 101, 2)
:可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。 -
range(100, 0, -2)
:可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
# 1-100奇数求和
total = 0
for i in range(1, 101, 2):
total += i # total=total+i
print(total)
# 1-100偶数求和
total = 0
for i in range(2, 101, 2):
total += i # total=total+i
print(total)
while循环
如果要构造不知道具体循环次数的循环结构,我们推荐使用while
循环。while
循环通过一个能够产生或转换出bool
值的表达式来控制循环,表达式的值为True
则继续循环;表达式的值为False
则结束循环。
输入两个正整数,找出最大公约数
n1 = int(input('n1='))
n2 = int(input('n2='))
for i in range(n1, 0, -1):
if n1 % i == 0 and n2 % i == 0:
print(i)
break