4.1程序的分支结构
4.2实例:身体质量指数BIM
4.3程序的循环结构:for;while;
4.4 random()
4.5 实例: 圆周率的计算
4.1
单分支 if 二分支 if-else 多分支 if-elif-else
条件判断:
<;<=;>=;>;==;!=
条件组合:
x and y 逻辑与
x or y 逻辑或
not x 逻辑取非
EG: if guess >9 or guess <9:
print("错了")
else:
print("对了")
异常处理:
try:
<语句块1>
except [,<异常类型>]:
<语句块2>
else:
<语句块3> ---else在不发生异常时执行
finally:
<语句块4> ---finally一定执行
EG: try:
num=eval(input("输入一个整数")
print(num**2)
except:
print("输入不是整数")
4.2
身体质量指数 BMI 衡量人体肥胖和健康的重要标准
BMI=体重(kg)/身高^2(m^2)
输入体重和身高
输出国际和国内标准
#TextProBarV13.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
-----------------遍历循环for---------------------------------------(条件循环)无限循环while
for <循环变量> in <遍历结构>:
<语句块>
for i in range(M,N,K):
<语句块> 从M开始 不到N 间隔K k可省略
1.字符串遍历循环
for c in s: s----字符串 c ----每个字符
EG: for c in “Python123”:
print(c,end=",")
2.列表遍历循环
for item in ls:
<语句块> ls是一个列表,遍历其每个元素,产生循环
EG: for item in [123,“PY”,456]
print(item,end=",")
3.文件遍历循环
for line in fi:
<语句块> fi是一个文件标识符,遍历其每行,产生循环
EG: for line in
while <条件>:
<语句块>
EG: s="PYTHON"
while s!="":
for c in s:
print(c,end="")
s=s[:-1] #去掉最后一个字符
循环与else
循环:
else:
<语句块>
当循环没有被break语句退出时,执行else语句块 else作为“正常”完成循环的奖励 与异常处理中的else相似
4.4
random库 随机数的Python标准库
random.<b>
基本随机函数: seed() random()
默认种子为系统时间 种子相同 随机数相同
扩展随机数函数:randint(a,b) ,randrange(m,n[,k])
a-b之间的整数 生成[m,n)之间以k为间隔的随机整数
,getrandbits(k) ,uniform(a,b)
k比特长的随机整数 [a,b]之间的随机小数
,choice(seq) ,shuffle(seq)
从序列seq中随机选择一个元素 将序列seq中随机排列,返还打乱后的序列
s=[1,2,3,4,5,6];random.shuffle(s);print(s) #一行时要加分号
4.5
1.公式计算
#CalPiv1.py
pi=0
N=100
for k in range(N):
pi+=1/pow(16,k)(
4/(8k+1) - 2/(8k+4) -
1/(8k+5) - 1/(8*k+6))
print(“圆周率值是:{}”.format(pi))
2.蒙特卡罗方法 (撒点过程)
#CalpiV2.py
from random import random
from time import perf_counter
DARTS=10001000
hits=0.0
start=perf_counter()
for i in range(1,DARTS+1):
x,y=random(),random()
dist=pow(x2+y2,0.5)
if dist<=1.0:
hits=hits+1
pi=4(hits/DARTS)
print(“圆周率为:{}”.format(pi))
print(“运行时间为:{}”.format(perf_counter()-start))
错题:
条件循环也叫无限循环
使用while能够实现循环计数
for循环必须知道循环的次数,而while循环循环的次数可以是不确定的