首页 > 编程语言 >【Python基础学习】4.程序的控制结构

【Python基础学习】4.程序的控制结构

时间:2023-01-23 11:44:07浏览次数:80  
标签:遍历 BMI Python random 程序 控制结构 else 循环 随机数

主要参考来源:慕课嵩天老师的“Python语言程序设计”[https://www.icourse163.org/course/BIT-268001?tid=1468130447]

4.1程序的分支结构

顺序结构、分支结构、循环结构

单分支结构:if <条件>:<语句块>

二分支结构:

一般形式:
紧凑形式:<语句块1> if <条件> else <语句块2>

多分支结构:

if、elif、else正常使用,只是elif个数可以是多个

条件判断及组合:

操作符:

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

程序的异常处理:

try、except、else、finally

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

“身体质量指数BMI”问题分析:

BMI即Body Mass Index,表示人体质量健康程度的指标,等于体重(kg)/身高^2 (m^2),分类上有国内、国际两种标准

“身体质量指数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}',国内'{1}'".format(who,nat))

“身体质量指数BMI”举一反三:

多分支条件之间注意不要覆盖
分支结构是程序的重要框架,阅读和编写代码时注意

4.3程序的循环结构

遍历循环:

for <循环变量> in <遍历结构>:
<语句块>
从遍历结构中逐一提取元素,放在循环变量中
计数循环
N次:
for i in range(N):
<语句块>
特定次:
for i in range(M,N,K):
<语句块>
字符串遍历循环
for c in s:
<语句块>
s是字符串,遍历字符串每个字符,产生循环
列表遍历循环
for item in ls:
<语句块>
ls是一个列表,遍历其中每个元素,产生循环
文件遍历循环
for line in fi:
<语句块>
fi是一个文件标示符,遍历其每行,产生循环

无限循环:

while <条件>:
<语句块>
反复执行语句块,直到不满足条件为止
注意:ctrl+c快捷键停止程序运行

循环控制保留字:

break、continue(可与for和while循环搭配使用)
break跳出并结束当前整个循环,执行循环后的语句
continue结束当次循环,继续执行后续次数循环
break仅跳出当前最内层循环,一个break跳出一层循环

循环的高级用法:

将循环和else搭配使用,当循环没有被break语句退出时,执行else语句块,else语句块作为“正常”完成循环的奖励,此处用法与异常处理中else用法相似

4.4模块3:random库的使用

random库概述

random库是使用随机数的Python标准库
伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
random库主要用于生成随机数
使用random库:import random
random库包括两类函数,常用共8个
基本随机数函数:seed(),random()
扩展随机数函数:randint(),getrandbits(),uniform(),randrange(),choice(),shuffle()

基本随机数函数

随机数种子-->梅森旋转算法-->随机序列

函数 描述
seed(a=None) 初始化给定的随机数种子,默认为当前系统时间
random() 生成一个[0.0,1.0]之间的随即小数

扩展随机数函数

函数 描述
randint(a,b) 生成一个[a,b]之间的整数
randrange(m,n[,k]) 生成一个[m,n]之间以k为步长的随机整数
getrandbits(k) 生成一个k比特长的随机整数
uniform(a,b) 生成一个[a,b]之间的随即小数
choice(seq) 从序列seq中随机选择一个元素
shuffle(seq) 将序列seq中元素随机排列,返回打乱后的序列

4.5实例6:圆周率的计算

“圆周率的计算”问题分析:

圆周率的近似计算公式

蒙特卡罗方法
撒点

“圆周率的计算”实例讲解:

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

“圆周率的计算”举一反三:

理解计算思维
数学思维:找到公式,进行求解
计算思维:抽象一种过程,用计算机自动化求解
程序运行时间分析
使用time库的计时方法获得程序运行时间
改变撒点数量,理解程序运行时间的分布
初步掌握简单的程序性能分析方法
计算问题的扩展
蒙特卡罗方法在工程计算中的运用

标签:遍历,BMI,Python,random,程序,控制结构,else,循环,随机数
From: https://www.cnblogs.com/HumdrumVictor/p/17064912.html

相关文章