1 # -*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? 6 ''' 7 ''' 8 import random 9 10 11 ''' 12 ''' 13 import string 14 import random 15 16 17 def coupon_creator(digit): 18 coupon = '' 19 for word in range(digit): 20 coupon += random.choice(string.ascii_uppercase + string.digits) 21 return coupon 22 23 24 def two_hundred_coupons(): 25 data = '' 26 count = 1 27 for count in range(200): 28 digit = 12 29 count += 1 30 data += 'coupon no.' + str(count) + ' ' + coupon_creator(digit) + '\n' 31 32 return data 33 34 35 coupondata = open('coupondata.txt', 'w') 36 coupondata.write(two_hundred_coupons()) 37 ''' 38 ''' 39 >>> import string 40 >>> string.ascii_letters 41 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 42 >>> string.ascii_lowercase 43 'abcdefghijklmnopqrstuvwxyz' 44 >>> string.ascii_uppercase 45 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 46 >>> string.digits 47 '0123456789' 48 >>> string.hexdigits 49 '0123456789abcdefABCDEF' 50 >>> string.letters 51 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 52 >>> string.lowercase 53 'abcdefghijklmnopqrstuvwxyz' 54 >>> string.uppercase 55 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 56 >>> string.octdigits 57 '01234567' 58 >>> string.punctuation 59 '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' 60 >>> string.printable 61 '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c' 62 >>> string.whitespace 63 64 ''' 65 ''' 66 random.random()用于生成 67 用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成随机数 68 ? 69 1 70 n: a <= n <= b。如果 a <b, 则 b <= n <= a。 71 ? 72 1 73 2 74 3 75 4 76 5 77 6 78 print random.uniform(10, 20) 79 print random.uniform(20, 10) 80 #---- 81 #18.7356606526 82 #12.5798298022 83 random.randint 84 用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,Python生成随机数 85 ? 86 1 87 2 88 3 89 print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20 90 print random.randint(20, 20) #结果永远是20 91 #print random.randint(20, 10) #该语句是错误的。 92 下限必须小于上限。 93 random.randrange 94 从指定范围内,按指定基数递增的集合中 ,这篇文章就是对python生成随机数的应用程序的部分介绍。 95 随机整数: 96 >>> import random 97 >>> random.randint(0,99) 98 21 99 随机选取0到100间的偶数: 100 >>> import random 101 >>> random.randrange(0, 101, 2) 102 42 103 随机浮点数: 104 >>> import random 105 >>> random.random() 106 0.85415370477785668 107 >>> random.uniform(1, 10) 108 5.4221167969800881 109 随机字符: 110 >>> import random 111 >>> random.choice('abcdefg&#%^*f') 112 'd' 113 多个字符中选取特定数量的字符: 114 >>> import random 115 random.sample('abcdefghij',3) 116 ['a', 'd', 'b'] 117 多个字符中选取特定数量的字符组成新字符串: 118 >>> import random 119 >>> import string 120 >>> string.join(random.sample(['a','b','c','d','e','f','g','h','i','j'], 3)).r 121 eplace(" ","") 122 'fih' 123 随机选取字符串: 124 >>> import random 125 >>> random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] ) 126 'lemon' 127 洗牌: 128 >>> import random 129 >>> items = [1, 2, 3, 4, 5, 6] 130 >>> random.shuffle(items) 131 >>> items 132 [3, 2, 5, 6, 4, 1] 133 ''' 134 135 # 改进 136 137 import string 138 import random 139 140 # n为生成的个数,length为生成的长度 141 def get_poll_codes(n, length): 142 poll_codes = list() 143 for i in range(n): 144 poll_code = '' 145 for j in range(length): 146 poll_code += random.choice(string.uppercase + string.digits) 147 if poll_code in poll_codes: 148 pass 149 else: 150 poll_codes.append(poll_code) 151 n = 0 152 with open('poll_codes.txt', 'w') as fp: 153 for i in poll_codes: 154 n += 1 155 fp.write(str(n) + ':' + i + '\n') 156 fp.close() 157 158 159 if __name__ == '__main__': 160 get_poll_codes(200, 10)