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)

 

posted on 2017-07-07 09:17  _Deen  阅读(1420)  评论(0编辑  收藏  举报

导航