程序的控制结构
顺序结构
分支结构
循环结构
分支结构
分支结构
if <条件>:
<语句块>
条件组合保留字 and or not
异常处理 2种方式 try和except
try:
<语句块1>
except:
<语句块2>
没有异常执行语句块1,出现异常执行语句块2
try:
<语句块1>
except <异常类型>:
<语句块2>
#增加异常类型标记,只有在这种异常类型发生时,才执行语句块2
异常处理的高级使用
try:
<语句块1>
except:
<语句块2>
else:
<语句块3>
finally:
<语句块4>
#无论发不发生异常都会执行语句块4
#只有在不发生异常时才会执行语句块3
身体质量指数BMI
循环
遍历循环 & 无限循环
#计数循环N次
for i in range(N):
<语句块>
for i in range(M, N, K):
<语句块>
#字符串遍历循环
for c in s:
<语句块>
字符串为可遍历的结构
列表遍历循环
for item in ls:
<语句块>
#文件遍历循环
for line in fi:
<语句块>
#fi是一个文件标识符,遍历其每行,产生循环
#无限循环
while <条件>:
<语句块>
循环可控制保留字
break
continue
循环的高级搭配 与break有关
当循环没有被break语句退出时,执行else语句块
else语句块作为“正常”完成循环的奖励
这里的else与异常处理中的else作用相似
random库的使用
random库是使用随机数的Python标准库
伪随机数:采用梅森旋转算法生成的伪随机序列中元素
import 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的随机数 |
getrandbits(k) | 生成一个k比特长的随机整数 |
uniform(a, b) | 生成一个[a, b]之间的随机小数 |
choice(seq) | 从序列seq中随机选择一个元素 |
shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 |
圆周率的计算
公式法
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))
梅森法
from random import *
from time import perf_counter
DARTS=eval(input())
hits=0.0
start=perf_counter()
seed(123)
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("%.6f" % pi)
# print("圆周率值是:{}".format(pi))
# print("运行时间是:{:.5f}".format(perf_counter()-start))