所以我的计划目标是为每个人分配2个不同价值的物品。
程序收到一个数字和元组列表。当我选择第一件商品时,这个数字就是所有人。
选择顺序是第一个人一直选择一个到最后一个然后最后一个选择然后向后一直到第一个。
现在我正在努力的是理解如何使用for循环来完成这些元组并打印出我选择的2个项目。要弄清楚有多少人实际上想要获取物品是通过获取所有可用物品并除以2.我也感到困惑
ex input:
(0, [('pizza', 12), ('chicken', 10),] )
所以在这个例子中程序应该打印出来:“披萨:12只鸡:10”
答案 0 :(得分:0)
确保我正确地回答了问题:
如果你只想知道你获得的两个项目,你就不需要循环了。您可以按值对项目进行排序,计算列表中的两个索引。它们将是n / 2 - k - 1(注意,索引是从零开始的!),并且n / 2 + k:
def which_items_do_i_get(people_after_me, items):
# Get items sorted by value
sorted_items = sorted(items, key=lambda x: -x[1])
# Determine number of people
number_of_people = len(items) // 2
assert len(items) % 2 == 0 # Must be an even number of items
assert people_after_me < number_of_people # Need more items
# Determine first and second item
first_item = sorted_items[number_of_people - people_after_me - 1]
second_item = sorted_items[number_of_people + people_after_me]
# Print them out
for item_name, item_value in first_item, second_item:
print '%s: %d' % (item_name, item_value)