Python - 5 digit random number generator with no repeating digits

I am supposed to print a random 5-digit number with no repeating digits, then ask the user for a three digit number. If the user's number contains three digits from the random number, print "correct".

I am using this code for the random number

num = random.randint (0,99999)
print (num)

The problem is it will not always print a five digit number.

Also, I don't know how to match the user number with the random number.

Thank you.

7

4 Answers

Take a random sample of the digits 0 to 9:

''.join(random.sample('0123456789', 5))
6

You can generate all the 5 digits ints with unique digits like so:

tgt=set()
for i in range(1234,99999+1): s='{:05d}'.format(i) if len(set(s))==5: tgt.add(s) 

Then use random.choose(tgt) to select one at random.

(but tdelaney's answer is better)

Use zfill and set like so: Edited to account for numbers with repeating digits

import random
def threeInFive(user_num): num = str(random.randint(0, 99999)).zfill(5) num = ''.join(set([n for n in num])) if len(num) < 5: print "There were repeating digits...trying again" threeInFive(user_num) elif str(user_num) in num: print "The user number is in there!" return True else: print "The user number : %s is not in : %s" % (user_num, num) return False
threeInFive(500)
2

If you generate your numbers like this:

larger_number = ''.join(random.sample(string.digits, 5))

And got the numbers from the user like this:

def get_user_num(length=5): while True: num = raw_input('Enter a {}-digit number with no repeating digits: '.format(length)).zfill(length) if len(set(num)) < length: print('Please try again.') continue else: return num

You could determine if the user's numbers were in the number list like so:

set(user_number) < set(larger_number)

And then it would be a really simple matter to combine this all together into a program. Note that the numbers are never actually treated as numbers - they're just strings.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like