tweaking random number

Peter Otten __peter__ at web.de
Wed May 9 04:30:10 EDT 2012


Nikhil Verma wrote:
> Hi All
>> I want to generate a random number of 8 digits which involve 3 number and
> 5 digits.
> Like this :-
>> def random_number():
> # do something
>> random_number()
> "123abcde" # first 3 numbers and 5 letters after the numbers.
>> I am able to generate the random number 8 digit like this:-
>> def random_number():
> characters = list(string.ascii_lowercase + string.ascii_uppercase\
> + string.digits)
> coll_rand = []
> for i in range(8):
> random.shuffle(characters)
> coll_rand.append(characters[0])
> return ''.join(coll_rand)
>> This generates like this "Kkrgt56r"
>> Thanks in advance

If you generalize your random_number() function
>>> import random, string
>>> def random_code(n=8, 
chars=string.ascii_lowercase+string.ascii_uppercase+string.digits):
... return "".join(random.choice(chars) for _ in range(n))
... 
>>> random_code()
'NgcLhYdR'
>>> random_code()
'j9gafcHh'
>>> random_code(chars="123ABC")
'C311BA31'
>>> random_code(n=4)
'MAsV'
you can use it as a building block quite easily:
>>> def three_five():
... return random_code(3, string.digits) + random_code(5, 
string.ascii_lowercase + string.ascii_uppercase)
... 
>>> three_five()
'656xEWmd'
>>> three_five()
'589XqZcI'
>>> three_five()
'168iOOIM'


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /