【发布时间】:2018-05-20 11:14:14
【问题描述】:
在我的项目中,我必须定义一个函数,其中我得到下面两个列表和一个小时,通过早期文件提取(这些完全是任意的,但数据的顺序是相同的)。 “return”命令必须返回一个包含操作员姓名的列表,后跟客户姓名。
[('Ricardo Tavares', 'portuguese', '(mobiles; printers)', '14:15', 42), ('Carl Thompson', 'english', '(laptops)', '14:17', 54), ('Nuria Castro', 'spanish', '(cameras; hifi)', '14:24', 37), ('Giovanni Olivetti', 'italian', '(laptops; bimby; hifi)', '14:52', 21), ('Georg Muller', 'deutsch', '(cameras)', '15:05', 31)]
[('Henry Miller', 'english', 'laptops', 'premium', 3), ('Francois Greenwich', 'spanish', 'cameras', 'premium', 6), ('Ricardo Carvalho', 'portuguese', 'refrigerators', 'premium', 2)]
目标是将操作员(第一个列表)分配给客户(第二个列表)。必须根据知识领域(例如手机、打印机)和操作员的语言(例如葡萄牙语、英语)以及客户的帮助主题(例如笔记本电脑、相机)和他们都说的语言(例如。 英式西班牙语)。此外,有必要记住,必须先服务于“高级”的客户,而不是其他“高级”的客户。操作员对客户的分配必须根据他们工作的分钟数(每个列表元素的最后一个元组值)以及他们最后一次回答客户的时间(例如 14:15)来完成。
在所有这些条件下,除了变得有点混乱之外,我不太清楚哪种方法是解决此代码的最有效方法,而在编程时不会过于防御!
这是我现在拥有的,但列表保持空白。
def assign_tasks(operators, requests, current_time):
operators = sorted(operators, key=itemgetter(3), reverse=False)
requests = sorted(requests, key=itemgetter(3), reverse=True)
tasks = []
langr = 0 #Variable that gets the language of the request's file (customer's language)
lango = 0 #Variable that gets the language of the operator's file (operator's language)
for i in range(0, len(requests)):
langr = requests[i][1] #What language does the customer speaks?
for k in range(0, len(operators)):
lango = operators[k][1] #What language does the operator speaks?
if langr == lango: #Do they speak the same language?
for j in range(0, len(operators[k][2])):
if operators[k][2][j] == requests[i][2]: # The operator knows how to solve the client's problem? If yes, then group them together.
tasks.append((current_time, operators[k][0], requests[i][0]))
operators.remove(operators[k])
requests.remove(requests[i])
print(tasks)
return tasks
operators = [('Leticia Ferreira', 'portuguese', '(laptops)', '11:03', 15), ('Atilio Moreno', 'portuguese', '(laptops)', '10:58', 104), ('Ruth Falk', 'german', '(phones; hifi)', '11:06', 150), ('Marianne Thibault', 'french', '(phones)', '11:09', 230), ('Mariana Santana', 'portuguese', '(phones)', '11:11', 230), ('Beate Adenauer', 'german', '(hifi; phones)', '11:12', 140), ('Romana Cerveny', 'czech', '(phones)', '11:13', 213), ('Zdenka Sedlak', 'czech', '(phones)', '11:13', 56)]
requests = [('Christina Holtzer', 'german', 'hifi', 'fremium', 7), ('Andrej Hlavac', 'czech', 'phones', 'fremium', 9), ('Dulce Chaves', 'portuguese', 'laptops', 'fremium', 15), ('Otavio Santiago', 'portuguese', 'laptops', 'fremium', 15), ('Dina Silveira', 'portuguese', 'phones', 'fremium', 9), ('Rafael Kaluza', 'slovenian', 'laptops', 'fremium', 13), ('Sabina Rosario', 'portuguese', 'laptops', 'premium', 10), ('Nuno Rodrigues', 'portuguese', 'laptops', 'fremium', 12), ('Feliciano Santos', 'portuguese', 'phones', 'fremium', 12)]
current_time = "14:55 06:11:2017"
assign_tasks(operators, requests, current_time)
有什么问题吗?
【问题讨论】:
-
您的预期输出是什么?你忘了显示这个。
-
向我们展示您输入示例的预期结果。
-
另外,你尝试了什么?
-
解决具有挑战性的问题并成为一名更好的程序员的唯一方法就是深入研究并亲自动手。如果防御性编程是您的直观方法,那么从它开始,然后从那里开始。如果您真的被卡住了,请回到这里,努力展示自己,我们很乐意为您提供帮助。
-
But what is this ? 他编辑了,但我记得这篇文章,我认为他发布了完全相同的内容。你应该和你的同学谈谈。你们可能都有相同的想法。我可能是错的:但是这两个主题太接近了,不能不问。 ;)