Python - 5位随机数发生器,没有重复数字

时间:2017-04-11 16:24:31

标签: python random

我应该打印一个没有重复数字的随机5位数字,然后询问用户三位数字。如果用户的号码包含随机数的三位数字,请打印"更正"。

我使用此代码作为随机数

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

问题是它不会总是打印五位数字。

另外,我不知道如何将用户号码与随机号匹配。

谢谢。

4 个答案:

答案 0 :(得分:9)

取{0}位数0到9:

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

答案 1 :(得分:0)

使用zfill并设置如下:编辑以记录重复数字的数字

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 :(得分:0)

您可以使用如下所示的唯一数字生成所有5位数的整数:

b

然后使用output.csv随机选择一个。

(但是tdelaney的answer更好)

答案 3 :(得分:0)

如果你生成这样的数字:

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

从用户那里得到这样的数字:

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

您可以确定用户的号码是否在号码列表中,如下所示:

set(user_number) < set(larger_number)

然后将所有这些组合成一个程序将是一件非常简单的事情。请注意,这些数字实际上从未被视为数字 - 它们只是字符串。