gpt4 book ai didi

python - 尝试将重量分类为 python 中的包

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:08:01 26 4
gpt4 key购买 nike

posted类似于这个问题,但我在实现代码时遇到了问题。

我有一个 python 程序,它从 HTML 文件中收集数据,包括重量、价格、书名等。我想把书分成“n”包,每包重量不超过 10 磅。我可以毫无错误地运行该程序并提取信息,但我没有得到任何关于包装的结果。

这是我的代码,有人可以给我建议吗?

import glob
from bs4 import BeautifulSoup

class weight():
def main():
data = []
for filename in glob.iglob('*.html'):
with open(filename) as f:
soup = BeautifulSoup(f)

weight = soup.find('b', text='Shipping Weight:').next_sibling
data.append({})

return weight

def Bin(weight):
def __init__(self):
self.items = []
self.sum = 0

def append(self, item):
self.items.append(item)
self.sum += item

def __str__(self):
return 'Bin(sum=%d, items=%s)' % (self.sum, str(self.items))

def pack(values, maxValue):
values = sorted(values, reverse=True)
bins = []

for item in values:
# Try to fit item into a bin
for bin in bins:
if bin.sum + item <= maxValue:
#print 'Adding', item, 'to', bin
bin.append(item)
break
else:
# item didn't fit into any bin, start a new bin
#print 'Making new bin for', item
Bin = weight()
bin.append(item)
bins.append(bin)

return bins

if __name__ == '__main__':
import random

def packAndShow(aList, maxValue):
print 'List with sum', sum(aList), 'requires at least', (sum(aList)+maxValue-1)/maxValue, 'bins'

bins = pack(aList, maxValue)

print 'Solution using', len(bins), 'bins:'
for bin in bins:
print bin

print

def pack(values, maxValue):
values = sorted(values, reverse=True)
bins = []

for item in values:
# Try to fit item into a bin
for bin in bins:
if bin.sum + item <= maxValue:
#print 'Adding', item, 'to', bin
bin.append(item)
break
else:
# item didn't fit into any bin, start a new bin
#print 'Making new bin for', item
Bin = weight()
bin.append(item)
bins.append(bin)

return bins

if __name__ == '__main__':
import random

def packAndShow(aList, maxValue):
print 'List with sum', sum(aList), 'requires at least', (sum(aList)+maxValue-1)/maxValue, 'bins'

bins = pack(aList, maxValue)

print 'Solution using', len(bins), 'bins:'
for bin in bins:
print bin

print

最佳答案

您定义了类,但您的代码布局实际上从未运行过任何东西。

将所有内容移到后面

if __name__ == "__main__": #(the first one)

在像这样的函数下:

def main():
paste the data from below

然后它会在调用时自动运行您的代码。

此外,我会认真考虑重新调整您的代码。想得更小更简单您在可以优化和消除的事情上浪费了很多按键。例如定义附加函数或创建从未使用过的类函数。

我能给你的最好建议是尝试像 this 这样的东西以更熟悉一些概念。它将消除许多简单的错误并使调试更容易。

关于python - 尝试将重量分类为 python 中的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com