Python学习笔记
Day_03-分支结构
应用场景
学习了两天的教程,可以看出,所有的例题中的程序都是按照顺序执行的。最初的程序设计也就是这样的。但是当我们需要程序进行“选择”或者“重复”的时候,顺序结构的程序一是代码量会非常大,另外呢也容易出错。比如,幼儿园老师让小朋友做游戏,如果是男生,就站到右侧,如果是女生,就站到左侧;再比如,银行贷款的利率,当本金低于一定标准的时候是一种利率,当高于这一标准时是另外一种利率;还有我们非常熟悉的数学分段函数,不同的自变量区间对应不同的函数式,等等诸如此类,都涉及到了“选择”。
if...else...语句
"""
f(x) = x + 10 (x > = 0)
= x - 10 (x < 0)
author: chris
version: 0.1
"""
x = float(input("请输入自变量x的值":))
if x > 0 or x == 0:
print(x + 10)
else:
print(x - 10)
运行后提示输入自变量x的值,比如输入5.6,运行结果就是15.6。
请输入自变量x的值:5.6
15.6
上面的代码就是一个简单的 if...else...
语句。if
和 else
都称作该语句的关键词。在程序中你不能将它用作变量名和其它用途。if
和else
两个关键词后面紧跟一个冒号:
,内部语句相对于两个关键词有四个空格的缩进(一个Tab)。
语句的逻辑关系是:输入一个值或者存在一个值,首先执行if
后面的条件,如果满足,输出if
后面的语句;如果关键词if
后面的条件不满足,则执行else
关键词后面的语句。
借用Vamei大佬的话说,“if
和else
就像两个老大,老大只有借着条件赢了,后面的小弟才有机会亮相。”
当然,if...else..
语句中,else
语句可以没有,如果if
语句条件不成立,则程序什么也不执行。
if...elif...else...语句
当判断条件超过2个的时候,就会用到if...elif...else...
语句。我现在将上面的一个例题进行修改:
"""
f(x) = x + 10 (x > 0)
= x (x == 0)
= x - 10 (x < 0)
author: chris
version: 0.2
"""
x = float(input("请输入自变量x的值":))
if x > 0:
print("x > 0")
print(x + 10)
elif x == 0:
print("x == 0")
print(x)
else:
print("x < 0")
print(x - 10)
if的嵌套
if
的嵌套,顾名思义,就是在一个if
语句里面在嵌套if
语句。我们还是拿数学函数式来举例。
"""
f(x) = x + 10 (x >= 0)
= x (-5< x < 0)
= x - 10 (-10 < x <= -5)
= x - 20 (x <= -10)
author: chris
version:0.1
"""
x = float(input("请输入自变量x的值:"))
if x > 0 or x == 0:
print(x + 10)
else:
if -5 < x < 0:
print(x)
elif -10 < x <= -5:
print(x-10)
else:
print(x-20)
运行后依次测试不同区间段的自变量x值,很明显可以得到正确的答案。从这个例子中可以看出,在第一层if...else...
语句中使用了第二层if...elif...else
的嵌套语句。需要注意的是,嵌套的if...elif...else
语句后面相对于该层的关键词又缩进了四个空格。
教程作者提到,根据开发需要,if语句是可以嵌套的,但是从python推崇的“扁平化”的原则,为了提高代码的可读性,能扁平化就不适用嵌套。
练习题
1. 英制单位英寸与公制单位厘米互换。
说明:1英寸=2.54厘米,或者1in=2.54cm。
"""
1英寸=2.54厘米,或者1in=2.54cm
输入一个数值,然后给定单位,得出换算后的值。
author: chris
version:0.1
"""
x = float(input("请输入数值:"))
y = str(input("请输入单位:"))
if y == "英寸":
print("转换结果为:%.2f 厘米" %(2.54 * x))
elif y == "in":
print("转换结果为:%.2f cm" %(2.54 * x))
else:
print("请输入正确的数值或单位")
首先,输入3.5
和“in”
,输出结果如下:
请输入数值:3.5
请输入单位:"in"
转换结果为:8.89 cm
输入5.5
和“英寸”
,输出结果如下:
请输入数值:5.5
请输入单位:"英寸"
转换结果为:13.97 厘米
输入6.8
和“kg”
,输出结果如下:
请输入数值:6.8
请输入单位:"kg"
请输入正确的数值或单位
2. 百分制成绩转换为等级制成绩。
如果输入的成绩在90分以上(含90分)输出A;80分-90分(不含90分)输出B;70分-80分(不含80分)输出C;60分-70分(不含70分)输出D;60分以下输出E.
"""
如果输入的成绩在90分以上(含90分)输出A;80分-90分(不含90分)输出B;
70分-80分(不含80分)输出C;60分-70分(不含70分)输出D;60分以下输出E
author: chris
version:0.1
"""
achievement = float(input("请输入学生的成绩:"))
if achievement >= 90:
print("Great! You Got an A!")
elif 80 <= achievement < 90:
print("Good!You Got a B!")
elif 70 <= achievement < 80:
print("Not Bad! You Got a C!")
elif 60 <= achievement < 70:
print("You Got a D!")
else:
print("What a Pity! You Got a E")
3. 输入三条边长,如果能构成三角形就计算周长和面积
程序代码如下:
# -*- coding: utf-8 -*-
"""
1/首先判断能否组成三角形,a+b>c,a+c>b,b+c>a
2/利用海伦公式求面积
author: chris
version:0.1
"""
a = input("请输入第一条边:")
b = input("请输入第二条边:")
c = input("请输入第三条边:")
if a + b > c and b + c > a and a + c > b:
print("能构成三角形!")
print("三角形周长:%.2f" %(a + b + c))
p = (a + b + c)/2
S = ((p * (p-a) * (p-b) * (p-c))) ** 0.5
print("三角形面积:%.2f" %(S))
else:
print("无法构成三角形!")
输入a、b、c三边长度分别为6,9,12,得到以下运行结果:
请输入第一条边:6
请输入第二条边:9
请输入第三条边:12
能构成三角形!
三角形周长:27.00
三角形面积:19.08
如果输入a、b、c三边长度分别为4,5,12,得到以下运行结果:
请输入第一条边:4
请输入第二条边:5
请输入第三条边:12
无法构成三角形!
小结
这一节中学习了if...elif...else
语句的基本用法,同时可通过各种简单的示例加深了对该用法的理解。
网友评论