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 ran
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)
Take a random sample of the digits 0 to 9:
''.join(random.sample('0123456789', 5))
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)
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.