计算圆周率。存在圆心在直角坐标系原点且半径为 1 的圆及其外切正方形。为计算方便,仅考虑位于第一象限的四分之一正方形和四分之一圆。随机生成该四分之一正方形中一系列点,散布于四分之一圆内比例即为圆周率四分之一。散步点越多,结果越精确,耗时也越长。
from random import random from math import sqrt N = eval(input("请输入次数:")) K = 0 for i in range(1, N + 1): x, y = random(), random() dist = sqrt(x ** 2 + y ** 2) if dist <= 1.0: K = K + 1 pi = 4 * (K / N) print("圆周率值:{}".format(pi))
random 库的介绍
random库是产生伪随机数的。其中函数分类有(21个)
import random random.random() # 返回左闭右开的区间(0.0,1.0) 中的一个浮点数 # -random(n) 返回左闭右开的区间(0,n)的一个浮点数 random.randrange(n) # 返回给定区间里的一个随机整数 # -randrange(m, n) # -randrange(m, n, x) random.choice(s) # 从序列s里随机选择一个元素
其中该算法中所用的方法是基本随机函数: random.random()返回的是一个 0~1之间中随机的一个浮点数
math库的介绍
math库是python的标准库,提供了诸多的数学函数,可以使用整数和浮点数的数学运算
math库常用函数:
import math math.sqrt() # 计算平方根,返回的数据为浮点型数据 math.pow(底数, 指数) # 计算一个数值的N次方 math.fabs() # 计算一个数的绝对值 math.pi # 圆周率
eval() 函数
eval()函数 可以转化字符串的类型 并且 执行一个字符串表达式,并返回表达式的值
test1 = "[1, 2, 3, 4]" test2 = eval(test1) # 输出结果 print(test1, type(test1)) ========> [1, 2, 3, 4] <class 'str'> # - print(test2, type(test2)) ========> [1, 2, 3, 4] <class 'list'> test3 = "{'a': 1, 'b': 2}" test4 = eval(test3) # 输出结果 print(test1, type(test1)) ========> {'a': 1, 'b': 2} <class 'str'> # - print(test2, type(test2)) ========> {'a': 1, 'b': 2} <class 'dict'> test5 = "30 * 9" test6 = eval(test5) # print(test1, type(test5)) ========> 30 * 9 <class 'str'> # print(test2, type(test6)) ========> 270 <class 'int'>