问题描述:
根据福利×××双色球玩法规则,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
转载于:https://blog.51cto.com/jmbzs/1787240