Python程序的控制结构

程序的控制结构

4.1 程序的分支结构
4.1.1单分支结构

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

image-20221009091843525

4.1.2二分支结构

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

image-20221009092110144

紧凑形式:适用于简单表达式的二分支结构

image-20221009092247911

4.1.3多分支结构

image-20221009092334588

4.1.4条件判断及组合

操作符

image-20221009092619875

用于条件组合的三个保留字

image-20221009092713539

4.1.5程序的异常处理
num = eval(input("请输入一个整数:"))
print(num**2)

当用户没有输入整数时,会产生异常,怎么处理?

程序会报出如下错误提示:

image-20221009093411240

异常处理的基本使用

image-20221009093449447

try:
    num = eval(input("请输入一个整数:"))
    print(num**2)
except:
    print("输入不是整数")
OR
try:
    num = eval(input("请输入一个整数:"))
    print(num**2)
except NameError:   #标注异常类型后,仅响应此类异常  异常类型名字等同于变量名
    print("输入不是整数")

image-20221009093845095

4.2 实例5:身体质量指数BMI
4.2.1“身体质量指数BMI”问题分析

BMl:对身体质量的刻画

  • BMI: Body Mass Index
  • 国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析
  • 定义:BMI=体重(kg)/身高2(m2)

国际:世界卫生组织 国内:国家卫生健康委员会

image-20221009094514869

问题需求

  • 输入:给定体重和身高值
  • 输出:BMI指标分类信息(国际和国内)
4.2.2“身体质量指数BMI”实例讲解
  • 难点在于同时输出国际和国内对应的分类

  • 思路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
height,weight = eval(input("请输入身高(米)和体重(公斤)[逗号隔开:]"))
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.3 程序的循环结构
4.3.1遍历循环

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

image-20221009100649668

  • 从遍历结构中逐一提取元素,放在循环变量中

image-20221009100746447

  • 由保留字for和in组成,完整遍历所有元素后结束
  • 每次循环,所获得元素放入循环变量,并执行一次语句块

计数循环(N)次

image-20221009100956363

  • 遍历由range()函数产生的数字序列,产生循环

image-20221009101251680

image-20221009101303774

技术循环(N次)

image-20221009101349832

  • 遍历由range()函数产生的数字序列,产生循环

image-20221009101547284

字符串遍历循环

image-20221009101632806

  • s是字符串,遍历字符串每个字符,产生循环

image-20221009101801036

列表遍历循环

image-20221009101833061

  • ls是一个列表,遍历其每个元素,产生循环

image-20221009102006800

文件遍历循环

image-20221009102037737

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

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

image-20221009102239216

  • 反复执行语句块,直到条件不满足时结束

image-20221009102320295

4.3.3循环控制保留字

break和continue

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

break和continue的比较

image-20221009102622528

image-20221009102945117

4.3.4循环的高级用法

循环与else

image-20221009103023915

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

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

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

image-20221009104038356

4.4 模块3:random库的使用
4.4.1random库基本介绍

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

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

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

  • 使用random库:import random

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

  • 基本随机数函数: seed(),random()
  • 扩展随机数函数: randint(), getrandbits(),uniform(),randrange),choice(),shuffle()
4.4.2基本随机函数

image-20221009104715214

image-20221009104740406

image-20221009105112702

4.4.3扩展随机数函数
image-20221009105232450

image-20221009105253958

image-20221009105312786

image-20221009105343090

需要掌握的能力

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

  • 能够产生随机整数

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

4.5 实例6:圆周率的计算
4.5.1“圆周率的计算”问题分析

圆周率的近似计算公式

image-20221009105724397

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

个人学习记录会持续更新,不喜勿碰,如有指导建议,欢迎评论区留言,谢谢!!!

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Augenstern K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值