话不多说,直接上代码
import random
# 生成前区的号码范围列表
rule_list1 = []
for i in range(35):
rule_list1.append(i + 1)
# 随机筛选5个数字
li1 = random.sample(rule_list1, 5)
# 从小到大排序
li1.sort()
# 将列表内数字转换为字符串
li_temp1 = []
for i in li1:
li_temp1.append(str(i))
# 给小于10的数字左边添加0
for i in range(len(li_temp1)):
if len(li_temp1[i]) < 2:
li_temp1[i] = "0" + li_temp1[i]
# 生成后区的号码范围列表
rule_list2 = []
for i in range(12):
rule_list2.append(i + 1)
# 随机筛选2个数字
li2 = random.sample(rule_list2, 2)
# 从小到大排序
li2.sort()
# 将列表内数字转换为字符串
li_temp2 = []
for i in li2:
li_temp2.append(str(i))
# 给小于10的数字左边添加0
for i in range(len(li_temp2)):
if len(li_temp2[i]) < 2:
li_temp2[i] = "0" + li_temp2[i]
lotto = li_temp1 + ["+"] + li_temp2
print(" ".join(lotto))
# 运行结果
05 07 08 12 26 + 09 10
不过,这看起来有些太low了,那我们就来优化一下下:
1.使用列表推导式
2.zfill()方法添加前导0
3.定义生成随机号码的方法
4.打印添加颜色
5.添加注释
import random
def random_num(ran_range, num):
"""
指定范围生成指定数量的数字
:param ran_range:
:param num:
:return:
"""
li1 = random.sample([i + 1 for i in range(ran_range)], num)
li1.sort()
li2 = [str(i).zfill(2) for i in li1]
return li2
def lucky_num_lotto(num, front_range, front_num, latter_range, latter_num):
"""
生成中奖号码
:param num: 中奖号码注数
:param front_range: 前区号码范围
:param front_num: 前区号码数量
:param latter_range: 后区号码范围
:param latter_num: 后区号码数量
:return:
"""
for i in range(num):
head_num = " ".join(random_num(front_range, front_num)) # 前区号码
tail_num = " ".join(random_num(latter_range, latter_num)) # 后区号码
print(f"\033[1;31m{head_num}\033[0m", end="") # 打印前区号码,不换行,红色加粗
print(f"\033[1;38m{' + '}\033[0m", end="") # 打印”+“,不换行,默认颜色加粗
print(f"\033[1;34m{tail_num}\033[0m") # 打印后区号码,蓝色加粗
if __name__=="__main__":
# 生成两注大乐透
lucky_num_lotto(2, 35, 5, 12, 2)
# 生成两注双色球
lucky_num_lotto(2, 33, 6, 16, 1)
运行结果: