初写此篇,恰逢烟花三月下扬州,再启此篇,已是中秋月圆任长思。愿时光安好,光阴箭指江南。
author:落寞红颜玉玫瑰(这个网名用了十年了)
2.1 概念与理解
样例:exampleTuple=(1,2,"ww",12)
理解:为一个函数,把列表转化为元组,其中元素不可更改,只能查看,可以看作是list后的确定数据,并且它的元素可以重复。2.2 基本操作-创建tuple
#1. 通过tuple方法创建数组
exampleTu=(1,2,3,"suiyue",7)
exampleTu
#2. 直接tuple()就可以了
##1.对list
exampleList=[1,2,1,2,3,4,0,"oidnc"]
print(exampleList)
tupleTran=tuple(exampleList)
print(tupleTran)
##2.对dictonary,默认取出 keys 值
exampleDict={"name":"moumou",
"sex":"boy",
"gen":22}
tupleDictF=tuple(exampleDict)
print(tupleDictF)
#3. 对于元组本身来说,返回元组
exampleTupleS=(1,2,3,2,"jco")
transT=tuple(exampleTupleS)
print(transT)
2.3 基本操作-查
##其中元素不可更改
print(tupleTran[0])
##我们通过语句来跳过错误,看更改结果
try:
tupleTran[0]="3"## 报错
except: ##发现并没有更改
print(tupleTran,"\n",tupleTran[0])
##我们可以对dict本身操作,使得tuple()取出values 和 items。
tupleDictS=tuple(exampleDict.values())
print(tupleDictS)
tupleDictT=tuple(exampleDict.items())
print(tupleDictT)
2.4 祖率:Pi
详细信息参考:https://baike.baidu.com/item/圆周率
使用方法:逼近法
1. 首先,让我们来画一个圆,看看它产生的过程
#导入需要的模块
import matplotlib.pyplot as plt
import random
##求pi的方法与这个圆如何产生大致相同,接下来我们来分析过程
circle()
##模拟投掷法产生圆的函数
def circle():
fre=int(input("Please in a number:"))
plotX=[]
plotY=[]
for j in range(fre):
i=0
while i<10000:
x=random.random()
y=random.random()
X=2*x-1
Y=2*y-1
sum=round(X*X+Y*Y,2)
if sum==1.00:
i+=1
plotX.append(X)
plotY.append(Y)
plt.plot(plotX,plotY)
plt.show()
#print(len(plotX))
2. 在网上,找到这张单位圆的图片,进行下一步分析
图片来源:https://image.so.com/view?q=单位圆#id=0857350366c37daf45da90b33e6e87b7&currsn=0&ps=56&pc=56
3. 对上图,产生一个正方形,边长为圆的直径,圆于四条边同时相切。
那么此时圆的面积:S1=Pi*R^2
正方形的面积:S2=(2R)^2
假设我们手里有足够多的且足够理想的针,我们随机抛出,且每根针不会超出正方形,那么由概率的相关知识可以知道落在院内的概率为圆与正方形面积的比。即:
f()=S1/s2=Pi*R^2/(2R)^2=Pi*r^2/4*R^2=Pi/4
得到: f()=Pi/4
4. 当抛出的足够多时,落在圆内的概率为:f()=f(落在圆内的次数)/f(总次数)
5. 用随机数来模拟抛出的针,用坐标来表示针的位置(x,y),那么在圆内点的条件是 x^2+y^2<=1,用代码来写如下:
sum=X*X+Y*Y
sum<=1:
6. 由前面可以知道:f()=f(落在圆内的次数)/f(总次数)=Pi/4
即:Pi=4*(f(落在圆内的次数)/f(总次数))
#7.调用f()函数,计算Pi
f(6000000)
#如果不怕数据被污染,可以把数组和变量放到外面
def f(frequence):
'''一个函数,辅助计算Pi的值'''
#import matplotlib.pyplot as plt
#确保本次数据不被污染,清空数组,计数变量清零
freOfList=[0,0]
freQue=0
freCir=0
for i in range(frequence):
x=random.random()
y=random.random()
X=2*x-1
Y=2*y-1
sum=X*X+Y*Y
freQue+=1
if sum<=1:
freCir+=1
freOfList[0]=freCir
freOfList[1]=freQue
Pi=4*(freOfList[0]/freOfList[1])
return "得到的近似Pi值为{}".format(Pi)