程序的控制结构
程序的分支结构
单分支结构
二分支结构
紧凑形式:<表达式1> if <条件> else <表达式2>
多分支结构
条件判断及组合
程序的异常处理
try:
    <语句块1>
except:
    <语句块2>
try:
    num=int(input("请输入一个整数:"))
    print(num**2)
except:
    print("输入的不是整数")
try:
    <语句块1>
except <异常类型>:#标注异常名称之后只响应此类异常、异常类型名字等同于变量名
    <语句块2>
try:
    num=int(input("请输入一个整数:"))
    print(num**2)
except NameError:
    print("输入的不是整数")
#异常处理的高级使用
try:
    <语句块1>
except:
    <语句块2>
else:	#else对应的语句块在不发生异常时执行
    <语句块3>
finally:	#finally对应的语句块一定执行
    <语句块4>
实例:身体质量指数BMI
程序的循环结构
遍历循环
range()函数产生数字序列
range(M,N,K) M起点,N-1终点,K步长
无限循环
循环控制保留字
循环的高级使用
for <变量> in <遍历结构> :
    <语句块1>
else:    
    <语句块2>
while <条件>:
    <语句块1>
else:
    <语句块2>
- 当循环没有被break语句退出时,执行else语句块
 - else语句块作为”正常“完成循环的奖励
 - 这里else的用法和异常处理中else用法相似
 
实例:圆周率的计算
蒙特卡罗方法:
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=(x**2+y**2)**0.5
    if dist<=1.0:
        hits+=1
pi=4*(hits/darts)
print("圆周率值时:{}".format(pi))
print("运行时间时:{:.5f}s".format(perf_counter()-start))
公式法:
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))
random库简介
- 伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
 - random库主要用于生成随机数
 - 基本随机数函数:seed(), random()
 - 扩展随机数函数:randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()
 
| 函数 | 描述 | 
|---|---|
| seed(a=None) | 初始化给定的随机数种子,默认为当前系统时间 >>>random.seed(10)#产生种子10对应的序列  | 
| random() | 生成一个[0.0, 1.0]之间的随机小数 >>>random.random()  | 
| randint(a,b) | 生成一个[a,b]之间的整数 | 
| randrange(m,n[,k]) | 生成一个[m,n)之间以k为步长的随机整数 >>>random.randrange(10,100,10) 80  | 
| getrandbits(k) | 生成一个k比特长的随机整数 | 
| uniform(a,b) | 生成一个[a,b]之间的随机小数 | 
| choice(seq) | 从序列seq中随机选择一个元素 | 
| shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 |