zoukankan      html  css  js  c++  java
  • 0001

    又一天过去了,今天上午写了一下练习,下午老黄让我跟另外两个男生一起坐图像识别,或许是创新项目吧,试试团队的力量也不错。

    回归正题:

    第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?

    想法只有一个解决方案,那就是把字母的随机数与数字的随机数放在一起就是激活码了,后来就想不到其他方法,参照了这几个算法:http://www.blogjava.net/BearRui/archive/2010/10/19/unique_random_code.html,然后根据这四个算法,写出了如下三种解决方案:

    1、代码如下:

     1 # coding=utf-8
     2 __author__ = 'wing1995'
     3 """
     4 单纯的随机数字和字母的组成
     5 """
     6 import string as s
     7 import random as r
     8 
     9 
    10 def ranDom():
    11     f = open('随机激活码.txt', 'w+')
    12     for i in range(200):
    13         random_str = ''.join(r.choice(s.ascii_uppercase + s.digits) for x in range(10)) + '
    '
    14         f.write(random_str)
    15     f.close()
    16 
    17 if __name__ == '__main__':
    18     ranDom()

    优点:或许是头脑简单吧,一般人都想得出来。

    缺点:当数据量比较大的时候,重复的可能性大。

    2、

     1 # coding=utf-8
     2 __author__ = 'wing1995'
     3 """
     4 直接使用uuid模块
     5 """
     6 import uuid as u
     7 
     8 
     9 def rand_uuid():
    10     f = open('随机激活码_1.txt', 'w+')
    11     for i in range(200):
    12         ID = str(u.uuid1()) + '
    '
    13         f.write(ID)
    14     f.close()
    15 
    16 if __name__ == '__main__':
    17     rand_uuid()

    优点:因为是借助别人写的模块,因此代码简单。

    缺点:产生的数据量较大,而且差别不是很大

    3、

     1 # coding=utf-8
     2 __author__ = 'wing1995'
     3 """
     4 使用主键和随机码
     5 """
     6 import string as s
     7 import random as r
     8 
     9 
    10 def rand_ID():
    11     f = open('随机激活码_2.txt', 'w+')
    12 
    13     for i in range(200):
    14         ID = id(i)
    15         rand_id = str(ID)[5:]  # 选取id的后面5位数字
    16         null = ''
    17         for j in rand_id:
    18             null += j + r.choice(s.ascii_uppercase)  # 在每一个数字后面添加一个大写字母
    19         f.write(null + '
    ')
    20     f.close()
    21 
    22 if __name__ == '__main__':
    23     rand_ID()

    优点:使用简单,可以直接根据激活码得出id

    缺点:按道理是有的,如果id是根据数据库的主键编号得来的话

    其实还有第四种方法:

    先获取id,然后将id转换为8进制,并转换成字符串,在字符串后面加一个固定的字符例如“9”,最后在这串字符串后面加上随机的数字,得到的就是随机的数字激活码了。但是觉得方法跟第三类差不多,只不过是一种钥匙而已,还有人说用MD5就可以生成唯一的值,也有理。这就像是密码学里面的明文和密文的关系。

    晚安!

    The more efforts,the more happiness
  • 相关阅读:
    python计算时间差的方法
    Apache Prefork、Worker和Event三種MPM分析
    nagios监控mysql
    linux安装nagios客户端
    简单易懂的snmpd.conf配置文件说明
    Linux基本监控项目
    python 2.0 s12 day5 常用模块介绍
    python2.0 s12 day4
    ubuntu常用系统命令
    ubuntu编译安装libimobiledevice,查看ios 日志
  • 原文地址:https://www.cnblogs.com/wing1995/p/4486370.html
Copyright © 2011-2022 走看看