ValueError: неверный литерал для int () с основанием 10: '' pytthon: преобразовать список str в список int - PullRequest
1 голос
/ 26 апреля 2020

код: -

team_O = [int(i) for i in input().split(" ")]

рабочий: -
вход в одну строку равен 1 2 3 4 5 6
он разделен пробелом ['1', '2' , '3', '4', '5', '6'] * ​​1007 * и преобразовать каждый список строк элемента в список int

ожидаемый результат: -

team_O =[1,2,3,4,5,6]

ошибка: -

File "CandidateCode.py", line 9, in <listcomp>
    team_G = [int(j) for j in input().split(" ")]
ValueError: invalid literal for int() with base 10: ''

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

По умолчанию split() может использоваться для удаления пробелов, поэтому вы можете использовать:

team_0=[int(i) for i in input().split()]
0 голосов
/ 26 апреля 2020

Проблема в использовании str.split (). Вы передаете ему явный разделитель,

>>> '1 2 3 4'.split(' ')
['1', '2', '3', '4']

Хотя это выглядит так, как вы хотите, в большинстве случаев это не так. Например, если два слова разделены двумя последовательными вхождениями separator, пустое пространство между ними является частью выходных данных,

>>> '1 2 3  4'.split(' ').
['1', '2', '3', '', '4']

Аналогично, начальные и конечные пробелы имеют аналогичный эффект,

>>> '1 2 3 4 '.split(' ')
['1', '2', '3', '4', '']

Документация str.split гласит, что,

Если sep не указан или отсутствует, применяется другой алгоритм разбиения: выполняется последовательный пробел рассматриваются как один разделитель, (...)

Короче говоря: не пропустите разделитель,

>>> '1 2 3 4'.split()
['1', '2', '3', '4']
>>> '1 2 3  4'.split()
['1', '2', '3', '4']
>>> '1 2 3 4 '.split()
['1', '2', '3', '4']
...