程序异常是python语言基本控制结构_Python语言程序设计(嵩天)-第4周-程序的控制结构...

目录:

4.1 程序的分支结构

4.2 实例5: 身体质量指数BMI

4.3 程序的循环结构

4.4模块3: random库的使用

4.5实例6: 圆周率的计算

课程导学

前课复习

8bbb0e95cef2454a98798d687f97732d.jpg

3ffb6b706b8d4cbeb1421b9410d47e9c.jpg

a553cd61ed5d4ea4938c842de0a0477e.jpg

32387eb4e9b34e389c0a7f01a70d6537.jpg

d7aef097ec474bc89f3062769b2c6351.jpg

630119663972455fb51e76ebb1655f6e.jpg

本课概要

4.1 程序的分支结构

4.2 实例5: 身体质量指数BMI

4.3 程序的循环结构

4.4模块3: random库的使用

4.5实例6: 圆周率的计算

方法论- Python程序的控制语法及结构

实践能力-学会编写带有条件判断及循环的程序

练习(可选)- 5道编程@Python123

测验- 10道单选+2道编程@Python123

22ae39a6631543fdbb7b8b700733dc2b.jpg

4.1 程序的分支结构

目录:

单分支结构

二分支结构

多分支结构

条件判断及组合

程序的异常处理

小结:

单分支if 二分支if-else 及紧凑形式

多分支if-elif-else 及条件之间关系

not and or > >= == <= < !=

异常处理try-except-else-finally

4.1.1-单分支结构

:根据判断条件结果而选择不同向前路径的运行方式

bdde249dab9341589caaf865dc2d67b7.jpg

29bdaaedb9d742cf81b43f8129e36125.jpg

4.1.2-二分支结构

876ae491d6b84c18b60d42737bf448b2.jpg

b5e63ab9744941768c7c2b827fd98e5d.jpg

c8af0f55e845473d95e24203eb2b1248.jpg

4.1.3-多分支结构

8fe5a27bc0dc4a8886ee7224b9c795fd.jpg

c9f029e89a984ed7bb871806e608d8a2.jpg

51d493ab1abd4220b59555233258c3a4.jpg

4.1.4-条件判断及组合

6a6f1fc953c04c8e8bd2cbff51dcb6ca.jpg

7ba6dda9d012488f8f41cd9d138f97f9.jpg

bdfdb46cdce94cb383a8526b43352d80.jpg

4.1.5-程序的异常处理

812184a5a50647249e3c0a51703e522d.jpg

dcfd475e096144a3ae447310a2bc9d2f.jpg

7990dfc3695f4c008198bd7c37f740e4.jpg

19a94f2fbb734ce6834f76212f734e26.jpg

4b901f6697ba4a7f8c0c86b065e7c4e3.jpg

0652129d079d4a86b07af475566db057.jpg

4.2 实例5: 身体质量指数BMI

4.2.1 问题分析

身体质量指数BMI

BMI:对身体质量的刻画

BMI:Body Mass Index

国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析

定义

BMI = 体重(kg) / 身高2(m2)

实例:体重72 kg 身高1.75mBMI 值是23.5

这个值是否健康呢?

59150955bfc34f21b5967f9cbc6dbafd.jpg

问题需求

输入:给定体重和身高值

输出:BMI指标分类信息(国际和国内)

4.2.2 实例讲解

思路方法

-难点在于同时输出国际和国内对应的分类

-思路1:分别计算并给出国际和国内BMI分类

-思路2:混合计算并给出国际和国内BMI分类

#CalBMIv1.py

height, weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开]: "))

bmi = weight / pow(height, 2)

print("BMI 数值为:{:.2f}".format(bmi))

who = ""

if bmi < 18.5:

who = "偏瘦"

elif 18.5 <= bmi < 25:

who = "正常"

elif 25 <= bmi < 30:

who = "偏胖"

else:

who = "肥胖"

print("BMI 指标为:国际'{0}'".format(who))

e774b8475ed0461eb4c838cef7c3ba3c.jpg

#CalBMIv2.py

输入身高(米)和体重\(公斤)[逗号隔开]: "))

bmi = weight / pow(height, 2)

print("BMI 数值为:{:.2f}".format(bmi))

nat = ""

if bmi < 18.5:

nat = "偏瘦"

elif 18.5 <= bmi < 24:

nat = "正常"

elif 24 <= bmi < 28:

nat = "偏胖"

else:

nat = "肥胖"

print("BMI 指标为:国内'{0}'".format(nat))

#CalBMIv3.py

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))

4.2.3 举一反三

关注多分支条件的组合

-多分支条件之间的覆盖是重要问题

-程序可运行,但如果不正确,要注意多分支

-分支结构是程序的重要框架,读程序先看分支

4.3 程序的循环结构

目录:

遍历循环

无限循环

循环控制保留字

循环的高级用法

小结:

for…in遍历循环: 计数、字符串、列表、文件…

while无限循环

continue和break保留字:退出当前循环层次

循环else的高级用法: 与break有关

4.3.1-遍历循环

遍历某个结构形成的循环运行方式

8facf08215cf469394d1a4c46b351f62.jpg

a9a36a1537894140b83af95d5c814b04.jpg

b0230409515044bd8181a5dd24d805a9.jpg

57fbca851f6042c8ab4b1e894f55870d.jpg

遍历循环的应用

bbc83a1403c44cb0bf63318c95f02312.jpg

104a6892b4cc403199ab4751b9c79106.jpg

13b9bec9d3dd42ca8619ce7d973f7ecd.jpg

8d1ba468845f4db89081952b1ceda69a.jpg

b5486d0a4026469c80bbb1feea9b5caf.jpg

a85d1aed67b54a358abdc450f0088929.jpg

793f9503aa9446acafe5ea04e9e2ddf7.jpg

文件遍历循环

for line in fi:

fi是一个文件标识符,遍历其每行,产生循环

a02b7ba62df24bf89f812ede166e9f78.jpg

总结:

83e2aacc33824945b1daf9485e9cd093.jpg

4.3.2-无限循环

由条件控制的循环运行方式

c61e2948ce04401e9908633d7855da8d.jpg

无限循环的应用:

0c031b4336ff41868c5647a5190c1572.jpg

4.3.3-循环控制保留字

break 和continue

break跳出并结束当前整个循环,执行循环后的语句

continue结束当次循环,继续执行后续次数循环

break和continue可以与for和while循环搭配使用

d1cdf067345d4df8b78d5e79556fe978.jpg

8316e02fdc8b4a5c9f34efdc106bbf2d.jpg

4.3.4 循环的高级用法

循环的扩展:

73d9dd888e944a7eaee7b46c7b309e2d.jpg

循环与else:

当循环没有被break语句退出时,执行else语句块

else语句块作为"正常"完成循环的奖励

这里else的用法与异常处理中else用法相似

b23f6a59609b401184780f06d639f7a9.jpg

4.4模块3: random库的使用

4.4.1 random库基本介绍

random库概述

random库是使用随机数的Python标准库

-伪随机数: 采用梅森旋转算法生成的(伪)随机序列中元素

-random库主要用于生成随机数

-使用random库: import random

random库包括两类函数,常用共8个

-基本随机数函数:seed(),random()

-扩展随机数函数:randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()

4.4.2 基本随机数函数

a4d7f3254b8145c98b3aa4fe019be0b6.jpg

8911fb9b2d9246ab9c69e104a455f100.jpg

a93d1655ce6446faa9301db44408d6b4.jpg

4.4.3 扩展随机数函数

310a1bf4b18f4bfebeebaf07fb85273a.jpg

b1e19f70f11643648bf0cb386d2218a2.jpg

c7add39c444246339f971285311fc4ff.jpg

e7255326d23a4c0c93f820d71e293359.jpg

随机数函数的使用

需要掌握的能力:

-能够利用随机数种子产生"确定"伪随机数

-能够产生随机整数

-能够对序列类型进行随机操作

4.5实例6: 圆周率的计算

4.5.1 问题分析

圆周率的近似计算公式

c8777428a83e4440a38f7d6b5bdea079.jpg

9021420ca85b4c4e94594d9a8de3256c.jpg

4.5.2 实例讲解

近似计算公式:

#CalPiV1.py

pi = 0

N = 100

for k in range(N):

pi += 1/pow(16,k)*( \

4/(8*k+1) - 2/(8*k+4) - \

1/(8*k+5) - 1/(8*k+6) )

print("圆周率值是: {}".format(pi))

蒙特卡罗方法:

#CalPiV2.py

from random import random

from time import perf_counter

DARTS = 1000*1000

hits = 0.0

start = perf_counter()

for i in range(1, DARTS+1):

x, y = random(), random()

dist = pow(x ** 2 + y ** 2, 0.5)

if dist <= 1.0:

hits = hits + 1

pi = 4 * (hits/DARTS)

print("圆周率值是: {}".format(pi))

print("运行时间是: {:.5f}s".format(perf_counter() - start))

4.5.3 举一反三

理解方法思维

-数学思维:找到公式,利用公式求解

-计算思维:抽象一种过程,用计算机自动化求解

-谁更准确?(不好说…)

程序运行时间分析

-使用time库的计时方法获得程序运行时间

-改变撒点数量,理解程序运行时间的分布

-初步掌握简单的程序性能分析方法

计算问题的扩展

-不求解圆周率,而是某个特定图形的面积

-在工程计算中寻找蒙特卡罗方法的应用场景

76e1385dcb6648c29c36e6a8d5e93ae5.jpg

作业

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值