所以基本上我有一个非常典型的问题,我在之前发现了一些来自stackoverflow的解决方案,但这并没有真正帮助我。在Python中转义两个列表
我有一个学校的任务,需要我分析雪橇队。我在三个单独的名单中列出了名字,他们的评级和体重,我需要挑选四名最佳等级的选手,他们的体重总和不得超过325公斤。我已经完成的是我创建了一个for
周期,该周期挑选出四个最高评级的竞争对手,但问题是他们可能有很高的评级,但他们的体重总和超过325公斤。 比如我有三个列表:
["Name1","Name2","Name3","Name4","Name5","Name6","Name7","Name8"] ## names
[1,2,3,4,5,6,7,8] ##ratings
[50,60,70,80,90,100,110,120] ##weights
什么,我得到的是[5,6,7,8]
(和他们每个人都有一个根据权重表和名单,例如用于评价5进入的竞争者,重量90公斤和名称是名字5)但他们的体重总和高于325kg(90 + 100 + 110 + 120> 325)
我已经完成了编码,至少将最小元素(5)移除并替换为另一个下元素,但是当切换最后一个元素还不够时,问题就会出现(问题是我不知道该怎么做),我需要尝试替换元素6并将元素5保留在原位。
眼下用于切换的代码是:
while (kaalude_summa > 325): #if weight is over 325 kg
positsioon = reiting.index(max(reiting)) #position for max rating
if kaalud[positsioon] < kaalude_tulemused[3]: #two lists - one is for elements not in the resulting list (kaalud) and one is for the elements in resulting list (kaalude_tulemused)
kaalude_tulemused[3] = kaalud[positsioon] #sets new weight in result list
tulemuslist.remove(min(tulemuslist)) #removes number 5 from example list [5,6,7,8] (check above)
tulemuslist.append(max(reiting)) #adds number 4 from example list
kaalude_summa = kaalude_summa - vahekaal + kaalude_tulemused[3] #new calculated weight
reiting.remove(max(reiting)) #removes element from list [1,2,3,4]
kaalud.remove(kaalud[positsioon])
这只要工作与等级1,2,3或4重量+其他三个权重(6,7,8)的竞争对手不大于325.
我明白这可以用两个for循环以某种方式完成,但我尝试了三次,失败惨败。
爱沙尼亚语在我们学校写代码是强制性的,所以我很抱歉不用英文写作。
我真的很希望我写的内容可读,而且能够帮助我。先谢谢你。
http://pastebin.com/1JPKqUbh将整个代码添加到pastebin中,如果我对发生的事情的解释不够清楚。 – charen 2014-09-27 16:09:27