Привет У меня есть блок кода здесь, намереваясь прочитать входные данные в переменные:Не знаю, почему Python readlines() не работает здесь
if __name__ == "__main__":
data = list(map(int, sys.stdin.readlines().split()))
n, capacity = data[0:2]
values = data[2:(2 * n + 2):2]
weights = data[3:(2 * n + 2):2]
opt_value = get_optimal_value(capacity, weights, values)
print("{:.10f}".format(opt_value))
Тогда самоопределенную get_optimal_value (мощность, вес, значения). Пример ввода:
3 50
60 20
100 50
120 30
Предполагается достижение следующих целей:
n = 3
capacity = 50
values = [60,100,120]
weights = [20,50,30]
Однако код не происходит после того, как я печатаю в приведенных выше цифрах входных и не дает мне никакого результата. Это означает, что числа не считываются в переменные, а списки не сформулированы. Я попробовал свой код в автоматическую проверку ошибок; это говорит мне:
AttributeError: 'list' object has no attribute 'split'
Почему это и как мне изменить свой код?
Дополнительный вопрос: автоматически ли считывание номера знает, где остановиться, т. Е. Когда оно обнаруживает место и не содержит следующих чисел? Я предполагаю, что код выполнит функцию и вычислит результат сразу после того, как он прочитает все входные данные, является ли это правильным с точки зрения процесса? Я чувствую, что мне не хватает «шага», чтобы уведомить код «рассчитать» после ввода ввода.
'readlines()' возвращает список строк (одна строка в каждой строке). Вы можете изменить это на 'read()', который считывает весь файл в одну строку, которая затем может быть разделена на 'split()'. – Meyer