知识点:程序的控制结构
一、程序的分支结构
1、单分支结构:根据判断条件结果而选择不同向前路径的运行方式。
示例:
guess =eval(input())
if guess==99:
print("猜对了")
- 1
- 2
- 3
2、二分支结构
if <条件>:
<语句块1>
else:
<语句块2>
示例:
guess=eval(input())
if guess==99:
print("猜对了")
else:
print("猜错了")
- 1
- 2
- 3
- 4
- 5
紧凑形式:适用于简单表达式的二分支结构
示例:
guess=eval(input())
print("猜{}了".format("对" if guess==99 else "错"))
- 1
- 2
3、多分支结构
示例:对不同分数分级的问题
score=eval(input())
if score>=60:
grade="D"
elif score>=70:
grade="C"
elif score>=80:
grade="B"
elif score>=90:
grade="A"
print("输入成绩属于级别{}".format(grade))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
4、程序的异常处理
try:
<语句块1>
except:
<语句块2>
else :
<语句块3>
finally:
<语句块4>
其中-finally对应语句块4一定执行,-else对应语句块3在不发生异常时执行。
二、程序的循环结构
1、遍历循环:遍历某个结构形成的循环运行方式
如 for i in range(N):
遍历由range()函数产生的数字序列,产生N循环
字符串循环遍历:for c in s:
s是字符串,遍历字符串每个字符,产生循环
列表遍历循环 :for item in ls:
ls是一个列表,遍历其每个元素,产生循环。
文件遍历循环:for line in fi:
fi是一个文件标识符,遍历其每行,产生循环。
2、无限循环:由控制条件控制的循环运行方式。
while<条件>:
<语句块>
反复执行语句块,直到条件不满足时结束。
3、循环控制保留字:break 和contiue
-break 跳出并结素当前整个循环,执行循环后的语句。
-contiue 结束当次循环,继续执行后续次数循环。
-break和contiue可以和for 和 while 循环搭配使用。
for c in "PYTHON":
if c=="T"
contiue
print(c,end="")
- 1
- 2
- 3
- 4
结果为: PYHON
for c in "PYTHON":
if c=="T"
break
print(c,end="")
- 1
- 2
- 3
- 4
结果为:PY
break 仅跳出当前最内层循环
三、random 库的使用
1、random库基本介绍:random库是使用随机数Python标准库。
-伪随机数:采用梅森旋转算法生成的伪随机序列中元素
-random库主要用于生成随机数
-使用random库: import random
基本随机函数:seed() ,random()
扩展随机函数:randint(),getrandbits(),uniform() , randrange(), choice() , shuffle ()
2、基本随机函数:
如:
3、扩展随机函数:
-能够利用随机数种子产生“确定”伪随机数
-能够产生随机整数
-能够对序列类型进行随机操作。
四、运用实例
1、身体质量指标BMI
混合计算国际和国内BMI分类
代码;
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))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
运行结果:
2、圆周率的计算
用蒙特卡罗方法
代码:
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()
dits=pow(x**2+y**2,0.5)
if dits<=1.0:
hits=hits+1
pi =4*(hits/DARTS)
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
运行结果: