zoukankan      html  css  js  c++  java
  • python练习——第1题

    原GitHub地址:https://github.com/Yixiaohan/show-me-the-code

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

    代码:

    #coding=utf-8
    import random, string
    
    number = 20 # 激活码的数量
    length = 12 # 激活码的长度
    box = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' # 激活码的组成元素
    keys = {} # 用于保存生成的激活码
    
    temp_key = ''.join(random.sample(box, length)) # 生成第一个激活码
    k = 0 # 激活码的索引
    keys[k] = temp_key
    while(True):
        temp_key = ''.join(random.sample(box, length))
        for j in list(keys.keys()): # 判断新生成的激活码是否和以前的相同
            if keys[j] == temp_key: # 如果相同则重新生成
                break
            elif j == (len(keys) - 1): # 如果新生成的激活码和之前的激活码都不一样,则将新激活码加入keys
                k += 1
                keys[k] = temp_key
            else:
                continue
        if k == number - 1: # 已经生成足够的激活码,则结束
            break
    
    for i in keys:
        print(keys[i])
    

    效果如下:

    分析:
    这道题主要就是需要懂得如何将字母和数字以随机的方式组合起来,还有就是要保证生成的激活码没有重复的。因为每生成一个新激活码都要和已有的其他激活码比较是否相同,所以程序时间复杂度为O(n^2),比较慢。

    在网上看见另外一种简便的方法:

    import uuid
    
    uuids = []
    for i in range(200):
    	uuids.append(uuid.uuid1())
    print uuids
    
  • 相关阅读:
    2017.7.18 linux下ELK环境搭建
    2017.7.18 linux下用户、组和文件的操作
    action解耦方式
    action 耦合方式
    分页查询
    request,response,session
    Struts2
    hibernate中session,HQL,持久化,一对多,多对一
    hibernate 配置文件
    hibernate
  • 原文地址:https://www.cnblogs.com/Xlgd/p/12321419.html
Copyright © 2011-2022 走看看