继续做题:
第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?
分析问题:
一般来说,公司在搞活动的时候都会有批量的激活码放出,一般激活码的格式都是 xxxxx-xxxxx...的格式,并且是随机生成的,我这里使用到的是 python的random模块。
解决问题:
简单的实现如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- import random def create_key(key_num,key_fmt): key = ‘‘ temp_list = [] for i in range(key_fmt): for i in range(key_num): if i != random.randrange(0,3): string = chr(random.randint(65,90)) else: string = random.randint(0,9) key+=str(string) temp_list.append(key) key = ‘‘ return (‘-‘).join(temp_list) if __name__ == ‘__main__‘: print create_key(5,5)
但是,百度了一下别人的实现方式,发现自己的代码好low啊,别人的代码都比较的精简,还是写的少啊,下面借鉴别人的代码:
他主要使用到了三个函数:
# 第一个:确定生成随机组合的个数 # 第二个:确定每个激活码有几组 # 第三个:确定生成激活码的个数 # 激活码类似于 asqE-9xRK-lqWU-QkMT
具体代码:
#!/usr/bin/env python # -*- coding: utf-8 -*- import random import string filed = string.digits+string.letters def get_random(): return ‘‘.join(random.sample(filed,4)) def concatenate(n): return ‘-‘.join([get_random() for i in range(n)]) def generate(n): return [concatenate(4) for i in range(n)] if __name__ == ‘__main__‘: print generate(200)
这里主要使用到了 列表推导式,简化了代码,提升了可读性
以后编写代码需要注意:
1 编写之前先思考 实现的流程
2 整理并优化实现的流程
3 尽量用精简的代码表达复杂的意思
4 多学习一下别人代码的实现方式
后记:
这里只是简单的实现生成优惠券,但是没有考虑到重复性这个问题,在实际的生产环境中使用肯定不行,怎么生成唯一性的key,这个是后续需要解决的问题。可以参考这篇文章:
http://linsir.org/post/Creat-the-unique-activation-code-with-python
参考文章:
http://blog.csdn.net/huangxiongbiao/article/details/45016649
http://www.oschina.net/code/snippet_1866842_45177
时间: 2024-10-08 18:06:14