马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wei_Y 于 2014-10-25 22:11 编辑
学了一下range和random和大家分享一下。
1.range翻译过来是范围,现在表示的是一定范围的数字。
本来的函数是range([start,] stop[, step]) start是开始,stop是停下,step是步长。
1.1 普通用法
只有一个参数。
直接用来生成一个序列。会生成0-6不会包括7,因为python是从0开始记得。
两个参数。
与上面基本一样。限定了范围。
三个参数。
是限定步长。1-6,3步一个。
也可以是负数的呦。
1.2 反序
有的时候需要反序一个但是加入list里在reversed也太麻烦了点。有什么方法呢?
第一种: 其实range本身也是个列表。直接reversed就可以啦。
第二种: 本身函数的默认的步长是1. so,直接range(7,1)是木有效果的。
不过我们可以修改步长。
需要注意的是必须有三个参数。
1.3 不能用小数,否则会报错。
2. 随机模块random。
一些概率问题和路线问题还是比较好用的。不过用的太多效率比较低。
导入模块
2.1 random.random()
随机生成一个0-1的浮点数。
2.2random.uniform(7,9)
升级版,生成范围内的浮点数。
负数也可以哦。
2.3random.randint(7,9)
用的比较多,生成整数。求概率可以用这个方法来判断。
2.4random.randrange(7,19,2)
随机生成一个7-19中步长2的一个。
2.5random.choice(list(range(7,19,2)))
与上面的等效,用处是随机选择列表中的一个元素返回。
不过一般用作字符串。
当然列表里的东西都可以。。
数字的话到底那个效率比较高呢?应该差不多吧。
2.6random.shuffle(['Fish','C','.com'])
从名字就可以看出来'洗牌',自然是打乱顺序咯。
2.7random.sample(['Fish','C','.com'],2)
用于随机选择指定参数的元素。
3. 综合的用法还是要靠自己折腾折腾。
下面一个我折腾了好久出的。用的随机数。不过看大神用的range,而且效率高好多好多好多- -。
大家也做一下试试吧。
给你一个由元组组成的元组,其中第一个元组具有一个整数,每下一个元组具有一个比上一个元祖整数个数多一个。这个由元组组成的元组看起来像一个三角形。你需要写一个程序,来帮助史蒂芬在金字塔中找到最赚钱的路线下所收集到黄金的最大数量。下金字塔所有路线是向左下方或者向右下方。
输入: 金字塔作为一个由元组组成的元组。每个元组包含整数(int)。 输出: 能采集的最大黄金量作为整数(int)。
可以试试这个例子:
count_gold(((1,),(2,3),(3,3,1),(3,1,5,4),(3,1,3,1,3),(2,2,2,2,2,2),(5,6,4,5,6,4,3)))
我的:低效率随机数版。import random as r
def count_gold(pyramid):
list1 = []
list2 = []
length = len(pyramid)
b = 0
for i in range(50000): #总共来50000次随机
for j in range(length): #每次都从头到底
list2.append(pyramid[j][b]) #这里是走的路径。
rint = r.randint(0,1) #往下走的话随机。因为数足够大所以会有所有的结果。
b += rint #不过这样也就低效率了。
if list2 not in list1: #为了使列表不至于很大很大很大。
list1.append(list2)
list2 = [] #初始化
b = 0
else:
list2 = [] #初始化
b = 0
for t in range(len(list1)): #求每条路线的总和。
list1[t] = sum(list1[t])
return max(list1) #输出总和中的最大量。
大神的:
|