你好我正在編寫和測試一個遞歸動態編程揹包(0-1)(下面的代碼是主要文件和函數) (這是張貼後的代碼)...我真的很困惑,以什麼錯誤是如此的任何幫助將不勝感激!Python錯誤類型錯誤:無法訂購的類型:int()> list()
主文件
import Knapsack_Test
size = 10
W = 2**size
knapsack = Knapsack_Test.Knapsack_Test()
for i in range(1, 10):
knapsack.recursive_knapsack_test(size, W)
size = size + 100*i
W = 2**size
函數調用(這是CLASS Knapsack_Test.py
def recursive_dynamic_knap(self, v, w, i, W):
n = len(v) - 1
if i == n:
if W < w[n]:
return 0
else:
return v
elif W < w[i]:
return self.recursive_dynamic_knap(v, w, i+1, W)
return max(self.recursive_dynamic_knap(v, w, i+1,W), self.recursive_dynamic_knap(v, w, i+1, W-w[i]) + v[i])
ERROR
Traceback (most recent call last):
File "\\minerfiles.mst.edu\dfs\users\asadmb\Desktop\Programming 3\Knapsack_Main.py", line 9, in <module>
knapsack.recursive_knapsack_test(size, W)
File "\\minerfiles.mst.edu\dfs\users\asadmb\Desktop\Programming 3\Knapsack_Test.py", line 19, in recursive_knapsack_test
self.knapsack.recursive_dynamic_knap(v, w, j, W)
File "\\minerfiles.mst.edu\dfs\users\asadmb\Desktop\Programming 3\KnapsackClass.py", line 22, in recursive_dynamic_knap
return max(self.recursive_dynamic_knap(v, w, i+1,W), self.recursive_dynamic_knap(v, w, i+1, W-w[i]) + v[i])
File "\\minerfiles.mst.edu\dfs\users\asadmb\Desktop\Programming 3\KnapsackClass.py", line 22, in recursive_dynamic_knap
return max(self.recursive_dynamic_knap(v, w, i+1,W), self.recursive_dynamic_knap(v, w, i+1, W-w[i]) + v[i])
File "\\minerfiles.mst.edu\dfs\users\asadmb\Desktop\Programming 3\KnapsackClass.py", line 22, in recursive_dynamic_knap
return max(self.recursive_dynamic_knap(v, w, i+1,W), self.recursive_dynamic_knap(v, w, i+1, W-w[i]) + v[i])
File "\\minerfiles.mst.edu\dfs\users\asadmb\Desktop\Programming 3\KnapsackClass.py", line 22, in recursive_dynamic_knap
return max(self.recursive_dynamic_knap(v, w, i+1,W), self.recursive_dynamic_knap(v, w, i+1, W-w[i]) + v[i])
File "\\minerfiles.mst.edu\dfs\users\asadmb\Desktop\Programming 3\KnapsackClass.py", line 22, in recursive_dynamic_knap
return max(self.recursive_dynamic_knap(v, w, i+1,W), self.recursive_dynamic_knap(v, w, i+1, W-w[i]) + v[i])
File "\\minerfiles.mst.edu\dfs\users\asadmb\Desktop\Programming 3\KnapsackClass.py", line 22, in recursive_dynamic_knap
return max(self.recursive_dynamic_knap(v, w, i+1,W), self.recursive_dynamic_knap(v, w, i+1, W-w[i]) + v[i])
File "\\minerfiles.mst.edu\dfs\users\asadmb\Desktop\Programming 3\KnapsackClass.py", line 22, in recursive_dynamic_knap
return max(self.recursive_dynamic_knap(v, w, i+1,W), self.recursive_dynamic_knap(v, w, i+1, W-w[i]) + v[i])
TypeError: unorderable types: int() > list()
您也可以發佈函數'knapsack.recursive_knapsack_test'嗎? – lvc
請解決我的問題,我解決了它! – user1661211
看起來'recursive_dynamic_knap'返回兩種類型的值:'v',它是'list'和'0'。也許你打算返回'v [x]'?整數和列表之間的比較是未定義的。 –