Ich hoffe, dass jemand helfen kann. Ich schrieb den folgenden Code:Graf Variable in Python
def minTransport(dict, max):
sum = 0
tempList = []
counter = len(dict)
tempCounter = len(dict)
for item in get_partitions(dict):
for list in item:
for i in list:
sum += dict[i]
if sum <= limit:
tempList.append(list)
sum = 0
else:
sum = 0
tempList = []
break
counter = len(tempList)
if counter < tempCounter:
result = tempList
tempCounter = counter
tempList = []
else:
tempList = []
return result
get_partitions
ist eine Hilfsfunktion, die jede einzelne mögliche Kombination der Tasten in der angegebenen dict zurückgibt. Z.B. dict={a:1, b:2, c:3}
, for item in get_partitions(dict)
bekommt man:
[[a, b, c]] or [[a,b], [c]] or [[a], [b,c]] or [[a,c],[b]] or[[a],[b],[c]]
Mein Programm soll über diese Elemente zu durchlaufen, sehen, ob die Summe der Werte der verschachtelten Liste < = max und wenn das der Fall ist zählen alle verschachtelten Listen in ein Gegenstand. Im obigen Beispiel könnte count
1 ([a,b,c]),2 (e.g. [a,b],[c]) or 3 ([a],[b],[c])
gewesen sein. Das Problem ist, dass ich nicht weiß, wie man die optimale Lösung zurückgibt, die den Artikel mit der geringsten Anzahl von verschachtelten Listen bedeutet. Wenn ich counter = den(dict)
und tempCounter = den(dict)
einstellen, nach der ersten Schleife tempCounter = 0
, weil das Programm bricht (sum > limit
) und die counter = 0
. Das wird also immer der niedrigste Wert sein. Wenn ich es anders versuche habe ich das gleiche Problem (counter immer den (dict)). Es gibt im Grunde 2 Probleme: 1. Wie kann ich sicherstellen, dass der Zähler nur auf die Elemente gesetzt wird, die gültig sind sum<=max
für alle verschachtelten Listen? Und 2 .: Ich bekomme manchmal die Fehlermeldung UnboundLocalError: local variable 'result' referenced before assignment
. Was bedeutet das und wie ist das möglich, wenn das Programm vorher funktioniert hat und ich die Positionen result
im Code nicht ändere? Danke für jede Hilfe!
Lassen Sie uns eine Frage pro Post halten. [mcve] | [ask] –
Ihr Beispiel erklärt nicht, was Sie zählen möchten, um zu reflektieren. – TemporalWolf