【问题标题】:ValueError: invalid literal for int() with base 10: '' pytthon:convert str list to int listValueError: int() 以 10 为底的无效文字:'' python:convert str list to int list
【发布时间】:2020-08-09 16:06:36
【问题描述】:

代码:-

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

工作:-
一行输入是 1 2 3 4 5 6
它按空格分隔 ['1','2','3','4','5','6']
并将每个元素 str 列表转换为 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: ''

【问题讨论】:

  • 您的代码对我来说运行良好。

标签: python-3.x list type-conversion


【解决方案1】:

问题在于您对 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 Documentation 声明,

如果 sep 未指定或为 None,则使用不同的分割算法 应用:连续空白的运行被视为单个 分隔符,(...)

长话短说:不要传递分隔符,

>>> '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']

【讨论】:

    【解决方案2】:

    默认split()可以用来去除空格,所以你可以使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-17
      • 2018-09-09
      • 2020-01-04
      • 2010-12-22
      • 2011-07-07
      • 2019-10-14
      相关资源
      最近更新 更多