python数据结构系列2--元组tuple

        初写此篇,恰逢烟花三月下扬州,再启此篇,已是中秋月圆任长思。愿时光安好,光阴箭指江南。

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落寞红颜玉玫瑰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值