Python "圆周率的计算"——遍历循环、无限循环和random库

遍历循环
遍历某个结构形式的循环运行方式:
for <循环变量> in <遍历结构>:
 <语句块>
-由保留字for和in组成,完整遍历所有元素后结束
-每次循环,所获得元素放入循环变量,并执行一次语句块

遍历循环的应用
1)计数循环(N次)
for i in range(N):
 <语句块>
-遍历由range()函数产生的数字序列,产生循环,即i的取值为0~N-1

for i in range(M,N,K):
 <语句块>
-遍历由range()函数产生的数字序列,产生循环,即i的取值为从M~N-1,步长为K,默认K为1

2)字符串遍历循环
for c in s:
 <语句块>
-s是字符串,遍历字符串即每个字符,产生循环

3)列表遍历循环
for item in ls:
 <语句块>
-ls是一个列表,遍历其每个元素,产生循环

4)文件遍历循环
for line in fi:
 <语句块>
-fi是一个文件标识符,遍历其每行,产生循环

无限循环
由条件控制的循环运行方式
while <条件>:
 <语句块>
-反复执行语句块,直到条件不满足时结束

循环控制保留字
break和continue
-break跳出并结束当前整个循环,执行循环后的语句,即break仅跳出当前最内层循环
-continue结束当次循环,继续执行后续次数循环
-break和continue可以与for和while循环搭配使用

循环的扩展:循环与else
for <循环变量> in <遍历结构>:
 <语句块1>
else:
 <语句块2>

while <条件>:
 <语句块1>
else:
 <语句块2>

-当循环没有被break语句退出时,执行else语句块
-else语句块作为"正常"完成循环的奖励
-这里的else用法与异常处理中else用法相似

random库基本介绍
random库是使用随机数的Python标准库
-伪随机数:采用梅森旋转算法生成的(伪)随机序列中的元素
-random库主要用于生成随机数
-使用random库:import random
-random库包括两类函数,常用共8个
1)基本随机数函数:seed()、random()
2)扩展随机数函数:randint()、getrandbits()、uniform()、randrange()、choice()、shuffle()

基本随机数函数:随机数种子确定随机序列的产生

函数 描述
seed(a=None) 初始化给的的随机数种子,默认为当前系统时间,如random.seed(10),产生种子10对应的序列
random() 生成一个[0.0,1.0)之间的随机小数

给出种子是为了下次执行此函数时,种子相同,出现的随机数相同,实现程序的再现。

扩展随机数函数

函数 描述
randint(a,b) 生成一个[a,b]之间的整数
randrange(m,n[,k]) 生成一个[m,n)之间以k为步长的随机整数
getrandbits(k) 生成一个k比特长的随机数
uniform(a,b) 生成一个[a,b]之间的随机小数,小数点16位数为精度
choice(seq) 从序列seq中随机选择一个元素
shuttle(seq) 将序列seq中元素随机排列,返回打乱后的序列

圆周率的计算
1)蒙特卡罗方法
Python
在这个正方形内部,随机产生n个点(这些点服从均匀分布),计算它们与中心点的距离是否大于圆的半径,以此判断是否落在圆的内部。

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):#循环DART个点
    x,y=random(),random() #随机生成x,y两个坐标
    dist=pow(x**2+y**2,0.5) #x**y表示x的y次方
    if dist<=1.0:
        hits=hits+1
pi=4*(hits/DARTS) #面积即π的大小
print("圆周率的值是:{}".format(pi))
print("运行时间是{:.5f}s".format(perf_counter()-start))

在这里插入图片描述

2)近似计算公式
在这里插入图片描述

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))

你可能感兴趣的:(Python自学笔记)