Python 要点
1、想随机生成一组数据
import random
random 文件里有random.random()和random.choice()两个函数
random.random() 为随机生成一个(0,1)的浮点数
random.choice(range(n)) 为随机生成一个(0,n)的浮点数
2、输入一个数值n 并循环为
number = int(input('please input a number: '))
for i in range(number):
3、randrange()
randrange(a,b,c) 函数为:返回指定递增基数集合中的一个随机数,基数默认值(初始值)为1. a,b为区间 c为step步长
eg.
randrange(1,100,2) 指随机从1到100的奇数集合中随机抽取一个数
另:
用randrange()函数要导入random模块,即 import random
4、正则表达式(regular expression):
https://www.runoob.com/regexp/regexp-tutorial.html
Python 习题
- 蒙特卡洛方法计算圆周率的近似值
- 抓狐狸游戏
1.用蒙特卡洛方法计算圆周率的近似值
蒙特-卡罗方法是一种通过概率来得到问题近似解的方法。假设又一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x,y)必然在木板上(更多的是落在单位圆内),如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以4,这个次数会无限接近圆周率的值。
代码:
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)
2、抓狐狸游戏
假设一共有一排5个洞口,小狐狸最开始的时候在其中一个洞口,然后玩家随机打开一个洞口,如果里面有狐狸就抓到了。如果洞口里没有狐狸就第二天再来抓,但是第二天狐狸会在玩家来抓之前跳到隔壁洞口里。
代码:
from random import choice,randrange
def catchMe(n=5,maxStep=10):
'''模拟抓小狐狸,一共n个洞口,允许抓maxStep次
如果失败,小狐狸就会跳到隔壁洞口'''
# n个洞口,有狐狸为1,没有狐狸为0
positions = [0] * n
# 狐狸的随机位置
oldPos = randrange(0,n)
positions[oldPos] = 1
# 抓maxStep次
while maxStep >= 0:
maxStep -= 1
# 这个循环保证用户输入的是有效洞口编号
while True:
try:
x = input('今天打算打开哪个洞口(0-{0}):'.format(n-1))
# 如果输入的不是数字,就会跳转到except部分
x = int(x)
# 如果输入的洞口有效,结束这个循环,否则就继续输入
assert 0 <= x < n,'要按套路来啊,再给你一次机会。'
break
except:
# 如果输入的不是数字,就执行这里的代码
print('要按套路来啊,再给你一次机会。')
if positions[x] == 1:
print('成功,我抓到小狐狸啦。')
break
else:
print('今天又没抓到。')
# 如果这次没抓到,狐狸就跳到隔壁洞口
if oldPos == n-1:
newPos = oldPos - 1
elif oldPos == 0:
newPos = oldPos + 1
else:
newPos = oldPos + choice((-1,1))
positions[oldPos],positions[newPos] = 0,1
oldPos = newPos
else:
print('放弃吧,你这样乱试是没有希望的。')
# 启动游戏,开始抓狐狸吧
catchMe()
3、