我是个新手,正为这个循环问题而发狂。我想随机地把一个国家分配给参加抽奖比赛的人的名单。一旦一个国家被分配了,那么它就不再可以在循环的进一步迭代中被分配。循环应该遍历整个人员列表(这比国家列表要短)。是的,我知道代码可能更简单,但这正是我放弃的时候。请指点!
import random
filez = open ('C:/Users/Andy/Desktop/countrys.txt', 'r')
countries = filez.readlines()
filez2 = open ('C:/Users/Andy/Desktop/names.txt', 'r' )
people = filez2.readlines()
def chop (x): #gets rid of wierd added bits
for i in range(0, len(x)):
x[i] = x[i] [:-1]
return x
chop(countries)
chop(people)
def assign (y):
used = []
for person in range(0, len(y)):
num = random.randint(0, len(countries))
if num not in used:
print (people[person] + " gets " + countries[num])
used.append(num)
else:
num = random.randint(0, len(countries))
print (people[person] + " gets " + countries[num])
used.append(num)
assign(people)发布于 2014-03-06 23:37:33
一个可能的解决办法是:
random.shuffle(countries)
assignments = list(zip(people, countries))这将给出一个(person, country)元组的列表。
https://stackoverflow.com/questions/22238472
复制相似问题