分支结构
应用场景
前面两次的python语句都是一条一条语句的执行,这种代码结构通常称之为顺序结构。顺序结构并不能解决大部分的问题,如闯关游戏,第一关需要达到1000分才可进行下一关,在完成第一关后我们要根据玩家积分来判断是进入第二关还是提示'Game over',这里会产生两个分支,有且只有一个分支会执行,所以这种结构被我们称为'分支结构'。
if语句的使用
在Python中,要构造分支结构可以使用if、elif和else关键字。
"""
身份验证
"""
userName = input('请输入用户名:')
password = input('请输入密码:')
if userName === 'admin' and password === '123456':
print('验证通过')
else:
print('验证不通过')
Python中没有用花括号来构造代码块而是使用了缩进的方式来表示代码的层次结构,如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。缩进可以使用任意数量的空格,但通常使用4个空格。
当然如果要构造出更多的分支,可以使用if...elif...else...结构或者嵌套的if...else...结构,下面的代码演示了如何利用多分支结构实现分段函数求值。
"""
分段式函数
"""
3x - 5 (x > 1)<>
f(x) = x + 2 (-1 <= x <= 1)
5x + 3 (x < -1)
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))
练习
练习1:英制单位英寸与公制单位厘米互换。
"""
英制单位与公制单位厘米互换
"""
value = float(input('请输入长度:'))
unit = input('请输入单位:')
if unit === 'in' or unit === '英寸':
print('%f英寸 = %f厘米' % (value, value * 2.54))
elif unit === 'cm' or unit === '厘米'
print('%f厘米 = %f英寸' % (value, value / 2.54))
else:
print('请输入有效的单位')
练习2:百分制成绩转换为等级制成绩。
要求:如果输入的成绩在90分以上(含90分)输出A;80分-90分(不含90分)输出B;70分-80分(不含80分)输出C;60分-70分(不含70分)输出D;60分以下输出E。
"""
百分制成绩转换为等级制成绩
"""
score = float(input('请输入成绩:'))
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'E'
print('对应的等级:', grade)
练习3:输入三条边长,如果能构成三角形就计算周长和面积。
"""
判断输入的边长能否构成三角形,如果能则计算出三角形的周长和面积
Version: 0.1
Author: 骆昊
"""
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b > c and a + c > b and b + c > a:
print('周长: %f' % (a + b + c))
p = (a + b + c) / 2
area = (p * (p - a) * (p - b) * (p - c)) ** 0.5
print('面积: %f' % (area))
else:
print('不能构成三角形')