简体   繁体   English

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

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

fraction knapsack problem with python it gives an error when i'm running the code, is the split function is not working for the integer values. 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 

Here is the source code of a Python program to solve the fractional knapsack problem using greedy algorithm.这是使用贪婪算法解决分数背包问题的Python程序的源代码。 what i'm doing wrong please tell me.我做错了什么请告诉我。 thanks in advance.提前致谢。

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)

It seems that you try to run this code with a Python 2.x interpreter, while your code is written in Python 3 .您似乎尝试使用Python 2.x解释器运行此代码,而您的代码是用Python 3编写的。 In order to be able to run it, you need to check that Python 3 is installed on your machine (see here for installations instructions).为了能够运行它,您需要检查您的机器上是否安装了Python 3 (有关安装说明,请参见此处)。
To run it, run要运行它,运行

python3 my_script.py

in a terminal.在一个终端。
Another possiblity is to paste另一种可能是粘贴

#!/usr/bin/env python3

at the top of your python script.在你的python 脚本的顶部。 Then if you make the file executable (by running chmod +x myscript.py on ubuntu for instance), you can then run it simply with然后,如果您使文件可执行(例如,通过在 ubuntu 上运行chmod +x myscript.py ),则可以简单地运行它

./my_script.py

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

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