繁体   English   中英

python程序报错(分数背包问题)

[英]python program give error(fraction knapsack problem)

python的分数背包问题它在我运行代码时出现错误,是拆分函数不适用于整数值。

Traceback (most recent call last):
  File "C:/Users/Akshay/Desktop/python/kapsack_problem.py", line 49, in <module>
    .format(n)).split()
  File "<string>", line 1
    60 100 120
         ^
SyntaxError: invalid syntax 

这是使用贪婪算法解决分数背包问题的Python程序的源代码。 我做错了什么请告诉我。 提前致谢。

def fractional_knapsack(value, weight, capacity):

    index = list(range(len(value)))
    # contains ratios of values to weight
    ratio = [v/w for v, w in zip(value, weight)]
    # index is sorted according to value-to-weight ratio in decreasing order
    index.sort(key=lambda i: ratio[i], reverse=True)

    max_value = 0
    fractions = [0]*len(value)
    for i in index:
        if weight[i] <= capacity:
            fractions[i] = 1
            max_value += value[i]
            capacity -= weight[i]
        else:
            fractions[i] = capacity/weight[i]
            max_value += value[i]*capacity/weight[i]
            break

    return max_value, fractions


n = int(input('Enter number of items: '))
value = input('Enter the values of the {} item(s) in order: '
              .format(n)).split()
value = [int(v) for v in value]
weight = input('Enter the positive weights of the {} item(s) in order: '
               .format(n)).split()
weight = [int(w) for w in weight]
capacity = int(input('Enter maximum weight: '))

max_value, fractions = fractional_knapsack(value, weight, capacity)
print('The maximum value of items that can be carried:', max_value)
print('The fractions in which the items should be taken:', fractions)

您似乎尝试使用Python 2.x解释器运行此代码,而您的代码是用Python 3编写的。 为了能够运行它,您需要检查您的机器上是否安装了Python 3 (有关安装说明,请参见此处)。
要运行它,运行

python3 my_script.py

在一个终端。
另一种可能是粘贴

#!/usr/bin/env python3

在你的python 脚本的顶部。 然后,如果您使文件可执行(例如,通过在 ubuntu 上运行chmod +x myscript.py ),则可以简单地运行它

./my_script.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM