写一个生成双色球号码的一个程序,生成的号码写到文件里面
# 中奖号码由6个红色球号码和1个蓝色球号码组成
# 篮球范围:01-16
# 红球范围:01-33
def swq(num):
random.ranint(1,16)
#tikti.txt
篮球:xx 红球号码是xx 01 08 09 12 13 19
篮球:xx 红球号码是xx 01 08 09 12 13 19
import random
f = open("tickets.txt","w+",encoding="utf-8")
def swq(num):
for i in range(num):
blueball = str(random.randint(1,16)) #随机产生篮球数字
if len(blueball)==1:
blueball = str(blueball).zfill(2)
#print(blueball)
redball_set = set()
while len(redball_set) < 6:
redball = str(random.randint(0,33)) #随机产生红球数字
if len(redball)==1:
redball = str(redball).zfill(2)
#print(redball)
redball_set.add(redball)
redballs = list(redball_set)
redball_str = ""
for i in redballs:
redball_str =redball_str +i+" "
f.write("篮球:"+blueball+" 红球:"+redball_str+"
")
swq(10)
运行后产生的结果为:
篮球:01 红球:22 12 07 31 24 25
篮球:15 红球:20 06 17 09 32 25
篮球:09 红球:19 12 08 31 23 25
篮球:14 红球:15 18 08 11 23 25
篮球:16 红球:27 33 06 28 09 05
篮球:01 红球:16 27 19 29 24 23
篮球:13 红球:16 22 09 32 29 11
篮球:03 红球:02 22 12 32 14 25
篮球:04 红球:26 06 22 09 29 31
篮球:13 红球:16 27 21 17 11 23
总结:
1. 因为要求每次产生的红球数为6个,且不能重复,所以可以将产生的红球放入到集合中,因为集合可以去重复。
redball_set.add(redball)
2. 打印时,因为需要每行打印出来号码数,但是集合若直接转化为字符串打印,会将红球的数字显示为一串带单引号,逗号的字符窜,不是独立的数字,所以需要将该集合转化为list,然后遍历取出每个值后,变成字符串拼接起来
for i in redballs:
redball_str =redball_str +i+" "
3. 产生的随机数中,若是一位数,需要前面补0,变成两位数,使用函数"".zfill()
if len(blueball)==1:
blueball = str(blueball).zfill(2)