第四章 程序的控制结构
4.1 程序的分支结构
4.2 实例:身体质量指数BMI
4.3 程序的循环结构
4.4 模块:random库的使用
4.5 实例:圆周率计算
程序得控制结构包括:顺序结构、分支结构、循环结构
程序的分支结构
包括内容:单分支结构、二分支结构、多分支结构、程序的异常处理
单分支结构: 根据判断条件结果而选择不同向前路径的运行方式;(如果,则…)
#单分支示例
guess = eval(input())
if guess == 99:
print("猜对了")
if True:
print("猜对了")
#只要是if True 条件就会被执行
二分支结构: 根据判断条件结果而选择不同向前路径的运行方式;(如果,则…,否则…)
#二分支示例
guess = eval(input())
if guess == 99:
print("猜对了")
else:
print("猜错了")
if True:
print("猜对了”)
else:
print("猜错了”)
二分支结构存在紧凑形式:
#二分支紧凑形式示例
guess = eval(input())
print("猜{}了".format("对"if guess == 99 else "错"))
多分支结构: 对满足不同条件的问题分类讨论;
(如果1,则…如果二,则…)
#多分支紧凑形式示例
score = eval(input())
if 60 <= score <70:
grade = "D"
elif 70 <= score <80:
grade ="C"
elif 80 <= socre <90:
grade = "B"
elif 90 <= score <=100:
grade = "A"
print("成绩级别为{}".format(grade))
条件判断及组合
条件判断:操作符
条件组合:用于条件组合的三个保留字;
程序异常处理 需注意异常发生代码行数,异常类型,异常内容提示;
try:
num = eval(input(“输入整数”))
print(num*2)
except:
print("输入的不是整数”)
try:
num = eval(input(“输入整数”))
print(num*2)
except NameError:
print("输入的不是整数”)
#标注异常类型后,仅响应此类异常;异常类型名字等同于变量名;
异常处理高级的高级使用
实例:身体质量指数BMI
难点:输入变量为两个;须同时给出国内和国外两套标准;
#BMI
height,weight = eval(input("输入身高(米)体重(千克)[逗号隔开]:"))
bmi = weight/pow(height,2)
print("BMI数值:{:.2f}".format(bmi))
who, nat = "","" #此处为“”,“”需注意;指两个字符串;
if bmi < 18.5:
who,nat = "偏瘦","偏瘦"
elif 18.5 <= bmi < 24:
who,nat = "正常","正常"
elif 24<= bmi <25:
who,nat = "正常","肥胖"
elif 25 <= bmi < 28:
who,nat = "偏胖","偏胖"
elif 28 <= bmi < 30:
who,nat = "偏胖","肥胖"
else:
who,nat = "肥胖","肥胖"
print("BMI指标:国际'{0}',国内;'{1}'".format(who,nat))
程序的循环结构
包括内容:遍历循环、无限循环、循环控制保留字、循环的高级用法;
遍历循环:遍历某个结构形成的循环运行方式;
1,从遍历结构中逐一提取元素,放在循环变量中;
2,由保留字for和in组成,完整遍历所有元素后结束;
3,每次循环,所获得元素放入循环变量,并执行一次语句块;
#计数循环1
for i in range(5):
print(i)#range(5)产生0-4的数字序列
#计数循环2
for i in range(1,6,2):
print(i)#数字序列为1,3,5;
#字符串遍历
for c in "python123":
print(c,end=",")
#输出为p,y,t,h,o,n,1,2,3
#列表遍历
for item in [123,"py",456]:
print(item,end="")
#输出为:123,py,456
#123和“py”之所以同级,应该是123无法作为变量,所以默认为字符串处理,二py需要“”才可;
#文件遍历
for line in fi:
print(line)
#fi是一个文件标识符,遍历其每行,产生循环;
#无限循环
a = 3
while a > 0:
a = a+1
print(a)
#满足条件即可进入循环结构,ctrl+c退出执行;
循环保留字: break和continue;
注意:break跳出并结束当前整个循环,执行循环后的语句;continue结束当次循环,继续执行后续次数循环;
s = "python"
while s != "":
for c in s:
print(c,end="")
s = s[:-1]
s = "python"
while s != "":
for c in s:
if c == "t":
break
print(c,end="")
s = s[:-1] #break仅跳出最内层循环
循环的高级用法
循环与else:当循环没有被break语句退出时,执行else语句块;else语句块作为正常完成循环的奖励(此处与异常处理中else用法相似)