2016-11-13 72 views
0

所以我需要一个列表,我有1个列表,随机生成1到8之间的负载值列表,随机生成1到8之间的负载值列表。我已成功地做到这一点下面我的代码:两个列表(对)相同的值

from random import * 
listA = [] 
listB = [] 
inp = int(input('Number of values generated')) 
for x in range(0,inp): 
    num = randint(0,8) 
    listA.append(num) 
    if num == 0: 
     numB = randint(1,8) 
    else: 
     numB = randint(0,8) 
    listB.append(numB) 
print(listA) 
print(listB) 

在第一列表中的值不能为0,并在seond列表中的值不能是零上也同样试用。我已经在我的代码中。但是,这是我的问题。

[4,,2,,1]

[1,,3,,4]

在listA的,5是产生两次而第二个列表中的第二个列表也会生成两次。当我们创建一个这样的对时,我无法弄清楚解决方案是从我的列表中获得这些解决方案。 谢谢。

+0

如果您只使用8个,为什么要问用户有多少个数字? – e4c5

+0

它的值介于0和8之间,但是需要将一定数量的数字添加到每个列表中 –

+0

您可以更改算法:创建包含数字1..8的元组现在,让N为用户的项目数输入(0 boardrider

回答

0

您可以使用下面的帮助函数来生成一个不在列表中的唯一编号并将其附加到列表中。

这应该为你工作:

def generateUnique(list, start, end): # Helper Function to generate and return unique number not in list 
    num = randint(start, end) 
    while num in list: # loop will keep generating a value, until it is unique in the given list 
     num = randint(start, end) 
    return num 


from random import * 
listA = [] 
listB = [] 
inp = int(input('Number of values generated')) 
for x in range(0,inp): 
    num = generateUnique(listA, 0, 8) 
    listA.append(num) 
    if num == 0: 
     numB = generateUnique(listB, 1, 8) 
    else: 
     numB = generateUnique(listB, 0, 8) 
    listB.append(numB) 

print(listA) 
print(listB) 

希望这有助于!

相关问题