2022年 11月 8日

Python 慕课学习(05)

知识点:程序的控制结构

一、程序的分支结构
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

运行结果:
在这里插入图片描述