学习python中,小白一枚,谁会啊?

img


最后的计算结果不对,也不知道是哪里错了,有人可以帮忙完整的写一下吗?


from random import *

# 设置随机数种子
seed(10)

# 输入帆船最大承载量和旅客数量
max_weight = int(input("请输入帆船最大承载量(130<=w<=200):"))
n = int(input("请输入旅客数量(1<=n<=300):"))

# 随机生成旅客体重
weights = [randint(30, 130) for i in range(n)]

# 将旅客体重从小到大排序
weights.sort()

# 初始化帆船数量和当前组的最大体重
boat_count = 0
max_group_weight = 0

# 遍历旅客体重
while len(weights) > 0:
    # 取出最小体重的旅客
    min_weight = weights.pop(0)
    # 如果当前组的最大体重加上最小体重小于等于帆船最大承载量,则将最大体重的旅客加入当前组
    if max_group_weight + min_weight <= max_weight:
        max_group_weight += min_weight
        # 如果当前组已经有两个人或者已经遍历完所有旅客,则当前组结束,帆船数量加一,当前组的最大体重重置为0
        if len(weights) == 0 or len(weights) > 0 and max_group_weight + weights[-1] > max_weight:
            boat_count += 1
            max_group_weight = 0
    # 如果当前组的最大体重加上最小体重大于帆船最大承载量,则最大体重的旅客自成一组,帆船数量加一,当前组的最大体重重置为0
    else:
        boat_count += 1
        max_group_weight = 0
        weights.pop()

# 输出最少所需的帆船数
print("最少所需的帆船数为:", boat_count)
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^