码迷,mamicode.com
首页 > 编程语言 > 详细

Python 练习册,每天一个小程序 -- 0001题

时间:2015-11-24 18:43:53      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:python 练习题

继续做题:

第 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


本文出自 “一个奋斗的小运维” 博客,请务必保留此出处http://yucanghai.blog.51cto.com/5260262/1716436

Python 练习册,每天一个小程序 -- 0001题

标签:python 练习题

原文地址:http://yucanghai.blog.51cto.com/5260262/1716436

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!