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

继续做题:

第 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

Python 练习册,每天一个小程序 -- 0001题的相关文章

python练习册 每天一个小程序 第0002题

1 #-*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中. 6 ''' 7 """ 8 import MySQLdb as mdb 9 10 config = { 11 'host': '127.0.0.1', 12 'port': 3306, 13 'user': 'root', 14 'passwd': '', 15 'd

python练习册 每天一个小程序 第0013题

# -*-coding:utf-8-*- ''' 题目描述: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-) 地址: http://tieba.baidu.com/p/2166231880 思路: 用正则表达式匹配图片链接,然后进行下载 ''' ''' import re import requests def main(): url = 'http://tieba.baidu.com/p/2166231880' response = requests.get(url

python练习册 每天一个小程序

PIL库学习链接:http://blog.csdn.net/column/details/pythonpil.html?&page=1 1 #-*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目说明: 5 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 6 ''' 7 from PIL import Image 8 from PIL import ImageChops 9 from P

python练习册 每天一个小程序 第0009题

1 ''' 2 题目描述: 3 找出一个html文件中所有的url 4 5 思路 : 6 利用正则表达式进行匹配 7 8 ''' 9 10 11 import re 12 13 14 with open('test.txt') as fp: 15 text = fp.read() 16 pattern = re.compile( 17 "((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\

python练习册 每天一个小程序 第0010题

# -*-coding:utf-8-*- ''' 题目描述: 使用 Python 生成类似于下图中的字母验证码图片 思路: 运用PIL库加random 随机字母进行生成 ''' import random import string from PIL import Image, ImageDraw, ImageFont, ImageFilter def rnword(): return random.choice(string.letters) def color(): return (rand

python练习册 每天一个小程序 第0004题

1 #-*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述:任一个英文的纯文本文件,统计其中的单词出现的个数. 5 参考学习链接: 6 re http://www.cnblogs.com/tina-python/p/5508402.html#undefined 7 collections http://blog.csdn.net/liufang0001/article/details/54618484 8 ''' 9 import re,co

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

python入门后需要不断的练习才能加深印象,为了提升自己的python编码能力,特地找了一些python小例子进行练习,这个是原文地址:https://github.com/Yixiaohan/show-me-the-code 所有的题目都在这里.虽然不能做到每天一题,但是会做到有时间就做一道练习题. 下面开始第一题: 第 0000 题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 分析问题: 通过分析题目可以得知,本题是在图片上

每天一个小程序—0000题(python图像处理)

第 0000 题: 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 python中的pillow库是专门用于处理图像的. 1 from PIL import Image, ImageFont, ImageDraw 2 3 def add_num(size, num): 4 im = Image.open('1.jpg') 5 font = ImageFont.truetype('C:/windows/fonts/Arial.ttf',

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

Python 练习册,每天一个小程序 说明: Python 练习册,每天一个小程序.注:将 Python 换成其他语言,大多数题目也适用 不会出现诸如「打印九九乘法表」.「打印水仙花」之类的题目 点此链接,会看到每个题目的代码, 欢迎大家 Pull Request 出题目,贴代码(Gist.Blog皆可):-) 本文本文由@史江歌([email protected] QQ:499065469)根据互联网资料收集整理而成,感谢互联网,感谢各位的分享.鸣谢!本文会不断更新. Talk is chea