目录:
方法论- Python程序的控制语法及结构
实践能力-学会编写带有条件判断及循环的程序
练习(可选)- 5道编程@Python123
测验- 10道单选+2道编程@Python123
目录:
小结:
身体质量指数BMI
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
输入身高(米)和体重\(公斤)[逗号隔开]: "))
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))
关注多分支条件的组合
-多分支条件之间的覆盖是重要问题
-程序可运行,但如果不正确,要注意多分支
-分支结构是程序的重要框架,读程序先看分支
目录:
小结:
文件遍历循环
for line in fi:
<语句块>
由条件控制的循环运行方式
break 和continue
循环与else:
random库概述
random库是使用随机数的Python标准库
-伪随机数: 采用梅森旋转算法生成的(伪)随机序列中元素
-random库主要用于生成随机数
-使用random库: import random
random库包括两类函数,常用共8个
-基本随机数函数:seed(),random()
-扩展随机数函数:randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()
随机数函数的使用
需要掌握的能力:
-能够利用随机数种子产生"确定"伪随机数
-能够产生随机整数
-能够对序列类型进行随机操作
近似计算公式:
#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库的计时方法获得程序运行时间
-改变撒点数量,理解程序运行时间的分布
-初步掌握简单的程序性能分析方法
计算问题的扩展
-不求解圆周率,而是某个特定图形的面积
-在工程计算中寻找蒙特卡罗方法的应用场景