Python-蒙特·卡罗方法计算圆周率近似值、筛选法求素数、猜数游戏

1、使用蒙特·卡罗方法计算圆周率近似值

蒙特· 卡罗方法是一种通过概率来得到问题近似解的方法, 在很多领域都有重要的应用,其中就包括圆周率近似值的计算问题。假设有一块边长为 2 的正方形木板,上面
画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x, y)必然在木板上(更多的时候是落在单位圆内),如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以 4,这个数字会无限逼近圆周率的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法,如图所示。
Python-蒙特·卡罗方法计算圆周率近似值、筛选法求素数、猜数游戏_第1张图片
模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周率近似值。

from random import random

times=int(input('请输入掷飞镖次数:'))
hits=0
for i in range(times):   #循环
    x=random()           #产生随机数
    y=random()
    if x*x+y*y<=1:
        hits+=1
print(4.0*hits/times)

运行结果如下:
Python-蒙特·卡罗方法计算圆周率近似值、筛选法求素数、猜数游戏_第2张图片

2、使用列表实现筛选法求素数

编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表。
使用内置函数,enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。filter()函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,可以通过list()转化为列表或者通过for循环取值。

maxNumber=int(input('请输入一个大于2的自然数:'))
lst=list(range(2,maxNumber))
m=int(maxNumber**0.5)                 #最大整数的平方根
for index,value in enumerate(lst):
    if value>m:                       #如果当前数字已大于最大整数平方根,结束判断
        break
    lst[index+1:]=filter(lambda x:x%value !=0, lst[index+1:])  #对该位置之后的元素进行过滤
print(lst)

运行结果如下:
Python-蒙特·卡罗方法计算圆周率近似值、筛选法求素数、猜数游戏_第3张图片

3、猜数游戏

编写程序模拟猜数游戏。程序运行时,系统生成一个随机数,然后提示用户进行猜测,并根据用户输入进行必要的提示(猜对了、太大了、太小了),如果猜对则提前结束程序,如果次数用完仍没有猜对,提示游戏结束并给出正确答案。
用random产生随机数。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。用循环来将猜测值与随机值做比较,来验证是否猜测正确。

from random import randint

def guessNumber(maxValue=10,maxTimes=3):
    value=randint(1,maxValue)       #产生随机数
    for i in range(maxTimes):
        prompt='Start to guess:' if i==0 else 'Guess again:'
        try:                       #异常处理结构,防止输入不是数字的情况
            x=int(input(prompt))
        except:
            print('Must input an integer between 1 and',maxValue)
        else:
            if x==value:        #数字猜对的情况
                print('Congratulation!')
                break
            elif x>value:      #猜测的数字太大了
                print('Too big!')
            else:              #猜测的数字太小了
                print('Too little!')
    else:                      #猜错三次后,游戏失败
        print('Game over. FAIL!')
        print('The value is',value)
guessNumber()

运行结果如下:
Python-蒙特·卡罗方法计算圆周率近似值、筛选法求素数、猜数游戏_第4张图片

你可能感兴趣的:(Python)