программа Python выдает ошибку (проблема с дробным рюкзаком)

#python #algorithm #greedy

#python #алгоритм #жадный

Вопрос:

проблема с дробным рюкзаком с 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)
  

Комментарии:

1. Ваш код отлично работает на моей машине. Я запускаю ее, ввожу некоторые значения, и она возвращает мне некоторые ответы.

Ответ №1:

Кажется, что вы пытаетесь запустить этот код с помощью Python 2.x интерпретатора, в то время как ваш код написан на Python 3 . Чтобы иметь возможность запустить ее, вам необходимо проверить, что она Python 3 установлена на вашем компьютере (инструкции по установке см. здесь).
Чтобы запустить его, выполните

 python3 my_script.py
  

в терминале.
Другая возможность — вставить

 #!/usr/bin/env python3
  

в верхней части вашего скрипта на Python. Затем, если вы сделаете файл исполняемым (запустив chmod x myscript.py , например, Ubuntu), вы можете запустить его просто с

 ./my_script.py