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)