背景:
新写的项目还在跟前端的小伙伴沟通,等待她帮我调试完毕。
所以最近不是那么忙。
没事翻翻之前写的脚本,寻思开源一些给大家参考。
作为运维的我们经常要写各种脚本来帮助大家工作,当然写脚本是非常容易的,但是想要写好却又不是那么简单。
下面这个是我之前写的一个双色球脚本,逻辑简单,但是这里主要是锻炼使用argparse模块的add_argument方法。
它可以让你的脚本多了很多可选参数, 这样脚本的扩展性将会非常高。
脚本需求可以一次指定随机多少注,可以指定蓝球几个和红球,剩下的随机。或者全部都是随机都可以。
import random import argparse # 双色球规则 red_ball_range = range(1, 34) blue_ball_range = range(1, 17) num_red_balls = 6 num_blue_balls = 1 def generate_lottery(red_nums, blue_nums): all_red = set(red_ball_range) all_blue = set(blue_ball_range) # 指定了部分红球和蓝球 if red_nums and blue_nums: red_balls = set(red_nums) blue_balls = set(blue_nums) else: red_balls = set() blue_balls = set() # 随机生成剩余的红球和蓝球 red_balls = red_balls.union(set(random.sample(all_red - red_balls, num_red_balls - len(red_balls)))) blue_balls = blue_balls.union(set(random.sample(all_blue - blue_balls, num_blue_balls - len(blue_balls)))) return sorted(red_balls), sorted(blue_balls) if __name__ == '__main__': parser = argparse.ArgumentParser(description='生成指定数量的双色球号码') parser.add_argument('--red-num', nargs='+', type=int, help='指定红球号码') parser.add_argument('--blue-num', nargs='+', type=int, help='指定蓝球号码') parser.add_argument('--num-groups', type=int, default=1, help='生成号码组数') args = parser.parse_args() for i in range(args.num_groups): red, blue = generate_lottery(args.red_num, args.blue_num) print(f'第 {i + 1} 组号码:') print('红球:', end='') for num in red: print(f'{num:02d}', end=' ') print('\n蓝球:', end='') for num in blue: print(f'{num:02d}', end=' ') print('\n')
具体执行命令:
python3.9 shuangseqiu.py --red-num 2 7 --blue-num 5 --num-groups 3
其中:
--red-num 2 7 --blue-num 5 --num-groups 3
上面这三个可选参数。
结果如下:
如果该文章对各位有帮助,也希望大家能予以关注分享,以便让波哥出更多更好的作品回馈大家。谢谢各位!~