Python语言程序设计(嵩天)-第4周-程序的控制结构

目录:

  • 4.1 程序的分支结构
  • 4.2 实例5: 身体质量指数BMI
  • 4.3 程序的循环结构
  • 4.4模块3: random库的使用
  • 4.5实例6: 圆周率的计算

课程导学

前课复习

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本课概要

  • 4.1 程序的分支结构
  • 4.2 实例5: 身体质量指数BMI
  • 4.3 程序的循环结构
  • 4.4模块3: random库的使用
  • 4.5实例6: 圆周率的计算

方法论- Python程序的控制语法及结构
实践能力-学会编写带有条件判断及循环的程序
练习(可选)- 5道编程@Python123
测验- 10道单选+2道编程@Python123

在这里插入图片描述

4.1 程序的分支结构

目录:

  • 单分支结构
  • 二分支结构
  • 多分支结构
  • 条件判断及组合
  • 程序的异常处理

小结:

  • 单分支if 二分支if-else 及紧凑形式
  • 多分支if-elif-else 及条件之间关系
  • not and or > >= == <= < !=
  • 异常处理try-except-else-finally

4.1.1-单分支结构

:根据判断条件结果而选择不同向前路径的运行方式
在这里插入图片描述

在这里插入图片描述

4.1.2-二分支结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.1.3-多分支结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.1.4-条件判断及组合

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.1.5-程序的异常处理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

4.2.1 问题分析

身体质量指数BMI
BMI:对身体质量的刻画

  • BMI:Body Mass Index
    国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析
  • 定义
    BMI = 体重(kg) / 身高2(m2)
  • 实例:体重72 kg 身高1.75mBMI 值是23.5
  • 这个值是否健康呢?
    在这里插入图片描述

问题需求

  • 输入:给定体重和身高值
  • 输出: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))

在这里插入图片描述

#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-遍历循环

遍历某个结构形成的循环运行方式
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
遍历循环的应用
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

文件遍历循环
for line in fi:
<语句块>

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

在这里插入图片描述

总结:
在这里插入图片描述

4.3.2-无限循环

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

在这里插入图片描述

无限循环的应用:
在这里插入图片描述

4.3.3-循环控制保留字

break 和continue

  • break跳出并结束当前整个循环,执行循环后的语句
  • continue结束当次循环,继续执行后续次数循环
  • break和continue可以与for和while循环搭配使用

在这里插入图片描述

在这里插入图片描述

4.3.4 循环的高级用法

循环的扩展:
在这里插入图片描述

循环与else:

  • 当循环没有被break语句退出时,执行else语句块
  • else语句块作为"正常"完成循环的奖励
  • 这里else的用法与异常处理中else用法相似

在这里插入图片描述

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 基本随机数函数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.4.3 扩展随机数函数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

随机数函数的使用
需要掌握的能力:
-能够利用随机数种子产生"确定"伪随机数
-能够产生随机整数
-能够对序列类型进行随机操作

4.5实例6: 圆周率的计算

4.5.1 问题分析

圆周率的近似计算公式
在这里插入图片描述

在这里插入图片描述

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库的计时方法获得程序运行时间
-改变撒点数量,理解程序运行时间的分布
-初步掌握简单的程序性能分析方法

计算问题的扩展
-不求解圆周率,而是某个特定图形的面积
-在工程计算中寻找蒙特卡罗方法的应用场景

在这里插入图片描述

作业

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值