我一直在遇到有关python中cps的问题。我们有一个约束条件,要求我们在3名教师之间分配2个科目(域中有6个科目),而不必在他们之间重复科目。我们遇到的问题是,我们不知道如何将域的2个值仅分配给一个变量。
problem.addVariables(['Billy', 'Jannet', 'Julia'], ['CN','CS','L','I','EF','M'])
所以我不知道该怎么做,例如如何将主题CN和CS分配给Billy。我试着做一个比较值的函数,如果不同则返回true,但它只会打印出这样的内容比利:男,珍妮特:我,朱莉娅:CN
几乎没有任何帮助。
您的答案就在眼前:一个清单。例如,
Billy = ['M', 'CS']
Jannet = ['I', 'L']
Julia = ['CN', 'EF']
由于您的名字以字符串而不是变量的形式出现,所以我希望您改用字典:
{ 'Billy' : ['M', 'CS'],
...
}
def addVariables(teachers, subjects):
# convert ['CN','CS','L','I','EF','M'] to [('CN', 'CS'), ('L', 'I'), ('EF', 'M')]
subjectPairs = zip(subjects[0::2], subjects[1::2])
return dict(zip(teachers, subjectPairs))
print(addVariables(['Billy', 'Jannet', 'Julia'], ['CN','CS','L','I','EF','M']))
# prints {'Billy': ('CN', 'CS'), 'Jannet': ('L', 'I'), 'Julia': ('EF', 'M')}