我将要打印一个没有重复数字的随机5位数,并要求用户输入一个三位数。如果用户输入的数字包含随机数中的三个数字,则打印“正确”。
我正在使用以下代码生成随机数:
num = random.randint (0,99999)
print (num)
问题在于它不会总是打印出五位数。
此外,我不知道如何将用户数字与随机数字匹配。
谢谢。
我将要打印一个没有重复数字的随机5位数,并要求用户输入一个三位数。如果用户输入的数字包含随机数中的三个数字,则打印“正确”。
我正在使用以下代码生成随机数:
num = random.randint (0,99999)
print (num)
随机取样 0 到 9 的数字:random.sample
''.join(random.sample('0123456789', 5))
range()
来代替一个长字符串。random.sample(range(0,10),5)
- Sergiy Kolodyazhnyyimport 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)
您可以这样生成所有具有唯一数字的5位整数:
tgt=set()
for i in range(1234,99999+1):
s='{:05d}'.format(i)
if len(set(s))==5:
tgt.add(s)
然后使用random.choose(tgt)
随机选择一个。
(但是tdelaney的answer更好)
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)
然后将所有这些组合成一个程序将变得非常简单。请注意,数字实际上从未被视为数字 - 它们只是字符串。