Python - 5 digit random number generator with no repeating digits

前端 未结 4 1048
臣服心动
臣服心动 2021-01-06 15:25

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

相关标签:
4条回答
  • 2021-01-06 15:30

    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)
    
    0 讨论(0)
  • 2021-01-06 15:42

    Take a random sample of the digits 0 to 9:

    ''.join(random.sample('0123456789', 5))
    
    0 讨论(0)
  • 2021-01-06 15:46

    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)

    0 讨论(0)
  • 2021-01-06 15:48

    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.

    0 讨论(0)
提交回复
热议问题