기본적으로 저는 정말로 전형적인 문제가 있습니다. 이전에 stackoverflow에서 몇 가지 해결책을 찾았지만, 실제로 도움이되지 않았습니다.파이썬에서 두리스트를 이스케이프 처리합니다.
나는 bobsleigh 팀을 분석해야하는 학교 과제가 있습니다. 나는 3 개의 분리 된 명부에있는 그들의 이름, 그들의 등급 및 무게가 있고 나는 4 개의 경쟁자를 뽑을 필요가있다 최상 등급 및 그들의 무게 합계는 325 킬로그램 이상이면 안된다. 이미 내가 한 것은 for
주기를 만들어 가장 높은 등급의 경쟁자 4 명을 골라 내었지만, 높은 평점을 가질 수는 있지만 325kg을 초과하는 체중이 될 수 있다는 점입니다.
["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에 대한 예를 들어 90kg 이름의 무게 경쟁을 간다있다 : 예를 들어 나는 세 가지 목록이 이름 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)과의 경쟁만큼되지 작동
나는 2 개의 for 루프를 가지고 어떻게 든 할 수 있다고 생각하지만, 나는 3 번 시도하고 비참하게 실패했다.
우리 학교에서는 에스토니아어로 코드를 작성해야하므로 영어로 쓰지 않는 것에 대해 사과드립니다.
나는 정말로 내가 쓰는 것이 읽기 쉽고 당신이 나를 도울 수 있기를 바란다. 미리 감사드립니다.
http://pastebin.com/1JPKqUbh는 어떻게되는지에 대한 나의 설명이 충분히 명확하지 않은 경우 전체 코드를 pastebin에 추가했습니다. – charen