誰かが助けてくれることを願っています。私は、次のコードを書いた:Pythonの変数Count
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
は、与えられた辞書のキーの一つ一つの可能な組み合わせを返すヘルパー関数です。例えば。 dict={a:1, b:2, c:3}
、for item in get_partitions(dict)
あなたを取得:
[[a, b, c]] or [[a,b], [c]] or [[a], [b,c]] or [[a,c],[b]] or[[a],[b],[c]]
私のプログラムは、ネストされたリスト< =最大の値の合計かどうかを確認し、これらのアイテムを反復することになっ及びそのような場合では、すべてのネストされたリストをカウントしていますアイテム。上記の例ではcount
は1 ([a,b,c]),2 (e.g. [a,b],[c]) or 3 ([a],[b],[c])
でした。問題は、ネストされたリストの数が最も少ないアイテムを意味する最適なソリューションを返す方法がわからないことです。 counter = den(dict)
とtempCounter = den(dict)
を設定した場合、プログラムが(sum > limit
)とcounter = 0
を破損するため、最初のループtempCounter = 0
の後に設定します。それは常に最低値になります。私は違う方法で試してみると、私は同じ問題を抱えています(カウンターはいつもデン(dict))。 基本的に2つの問題があります。1.ネストされたすべてのリストに対して有効な意味のある項目にカウンタが設定されていることを確認するにはどうすればよいですか?そして、2:エラーメッセージUnboundLocalError: local variable 'result' referenced before assignment
が表示されることがあります。それはどういう意味ですか、プログラムが以前に動作していて、コード内でresult
の位置を変更していない場合、どうすれば可能ですか? 助けてくれてありがとう!
投稿ごとに1つの質問を残しましょう。 [mcve] | [質問] –
あなたの例には、何を反映させたいのか説明していません。 – TemporalWolf