您的位置:首页 > 编程语言 > Python开发

双色球

2016-07-14 00:00 274 查看
问题描述:

根据福利彩票双色球玩法规则,6个蓝色球,范围为1~33,不允许重复,1个红色球,范围为1~16,自动生成6个蓝色球,1个红色球。

我的代码:

import random
a=[]
b=0
while len(a)<6:
b=random.randint(1,33)
if b not in a:
a.append(b)
a.append(random.randint(1,16))
print "the double color ball is: ",a


我的思路:

每一次循环都获得一个随机整数,并判断随机数是否在列表中,也就是判断蓝色球的重复性,只有不重复的数才被添加到列表中,这样就获得了6个不重复的蓝色球,最后再直接获取一个随机的红色球即可;

示例代码:

import random
def fun():
numa = [i for i in xrange(1, 34)]
a = []
for i in xrange(6):
a.append(random.choice(numa))
numa.remove(a[-1])
a.append(random.choice([i for i in xrange(1, 17)]))
print a
fun()


代码分析:

示例代码采用的方法是和我的不同,它是先定义一个1到33的列表,然后每一次从这个列表中取出一个数添加到另一个列表a中,并且把这个数从原列表中删除,这就避免了选出重复的数,循环结束后就取得了6个不同的蓝色球,最后再取出一个红色球就完成了整个程序;

总结:去除列表中重复的元素

1.采用内置的set方法

>>> a=[1,4,2,1,3]

>>> b=list(set(a))

>>> b

[1, 2, 3, 4]

2.采用字典的fromkeys方法

将列表a中的元素作为字典的key值(最后也只显示key),而字典的key是不允许重复的;

>>> b={}.fromkeys(a).keys()

>>> b

[1, 2, 3, 4]

3.采用in not in关键字

>>> a

[2, 3, 4, 2, 3, 1, 1]

>>> 3 in a

True

题目出处:http://www.cheemoedu.com/exercise/78
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python 双色球