deen-

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

  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)

 

分类:

技术点:

相关文章: