从零开始学Python(四) 程序的控制结构

从零开始学Python(四) 程序的控制结构

本文思维导图:

在这里插入图片描述

一、程序分支结构

1、单分支结构
if <条件>:
<语句块>
2、二分支结构:根据判断条件结果而选择不同向前路径的运行方式。
if <条件>:
<语句块1>
else :
<语句块2>
紧凑形式(适用于简单表达式的二分支结构):<表达式1> if <条件> else <表达式2>
(注:紧凑形式中的if、else对应的不是语句而是表达式,不支持带等号的赋值形式)
3、多分支结构
if <条件>:
<语句块1>
elif:
<语句块2>
……
else :
<语句块n>
4、条件判断及组合
在这里插入图片描述
用于条件组合的三个保留字:and与, or或, not非
5、程序的异常处理
try:
<语句块1>
except:
<语句块2>
或:
try:
<语句块1>
except <异常类型>:
<语句块2>
高级使用:
try:
<语句块1>
except:
<语句块2>
else:
<语句块3>
finally:
<语句块4>
-else对应语句块3在不发生异常时执行
-finally对应语句块4一定执行

二、实例:身体质量指数BMI

#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}',国内'{0}'".format(who,nat))

注:①多分支条件之间的覆盖是重要问题
②程序可运行,但不正确,要注意多分支
③分支结构是程序的重要框架,读程序先看分支。

三、程序的循环结构

1、遍历循环:
(1)for <循环变量> in <遍历结构> :
<语句块>
①由保留字for和in组成,完整遍历所有元素后结束
②每次循环,所获得元素放入循环变量,并执行一次语句块。
(2)计数循环(N次)
for i in range(N):
<语句块>
-遍历由range()函数产生的数字序列,产生循环。
(3)字符串遍历循环
for c in s :
<语句块>
-s是字符串,遍历字符串每个字符,产生循环
(4)列表遍历循环
for item in ls :
<语句块>
-ls是一个列表,遍历其每个元素,产生循环
(5)文件遍历循环
for line in fi :
<语句块>
-fi是一个文件标识符,遍历其每行,产生循环。
2、无限循环:由条件控制的循环运行方式
while <条件> :
<语句块>
-反复执行语句块,直到条件不满足时结束(CTRL + C 退出执行)
3、循环控制保留字:break和continue
-break:跳出并结束当前整个循环,执行循环后的语句
-continue:结束当次循环,继续执行后续次数循环
(对于嵌套循环,break只能跳出一层循环。)
4、循环的高级用法:循环和else的搭配
当循环没有被break语句退出时,执行else语句块。Else语句块作为“正常”完成循环的奖励。

四、random库的使用

1、基本介绍:random库是使用随机数的Python标准库。
伪随机数:采用梅森旋转算法生成的(伪)随机序列中的元素。
2、基本随机数函数:
(1)随机数种子:通过对随机数种子使用梅森旋转算法获得随机数序列,随机数种子相同,则随机数序列相同。
(2)seed(a=None),初始化给定的随机数种子,默认为当前系统时间。
(3)random():生成一个[0.0,1.0)之间的随机小数。
3、扩展随机数函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、实例:圆周率的计算

#CalPiV1.py
pi = 0
N = 1000
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}".format(perf_counter()-start))

举一反三:
理解方法思维:
①数学思维:找到公式,利用公式求解
②计算思维:抽象一种过程,用计算机自动化求解。
程序运行时间分析:
①使用time库的计时方法获得程序运行时间
②改变撒点数量,理解程序运行时间的分布

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值