将input()。split()封装在int()中时出现TypeError

时间:2019-02-12 07:11:15

标签: python-3.x

所以我只是想知道我得到错误的原因和原因,以便更好地了解python。

这是我尝试过的。

代码段1

x,y=int(input()),int(input())
print(x,y)
print(type(x))
print(type(y))

所以我得到了输出-

4
6
4 6
<class 'int'>
<class 'int'>

我对输出没问题,但令我感到困扰的是为什么我无法以-

的方式使用它

代码段2

x,y= int(input().split('-'))
print(x,y)
print(type(x))
print(type(y))

因此,在这里,将 input()。split()包裹在int()内时,它将引发错误:

  

TypeError:int()参数必须是字符串,类似字节的对象或   数字,而不是“列表”

我的怀疑

我只是想知道为什么我不能将int()包装在input()。split()中?有替代方法吗?或者,如果不允许,请说明原因。

2 个答案:

答案 0 :(得分:2)

来自docs.python.org

  

str.split()返回str中的单词的列表

您不能将list变成int

您可以尝试这种方式:

(x, y) = (int(x) for x in input().split('-'))
print(x, y)
print(type(x))
print(type(y))

答案 1 :(得分:1)

好的,如果您想在一行中接受多个输入并将其转换为所需的数据类型,则可以使用map()来实现。

代码段#3

x,y,z=map(int,input().strip().split())
print(x,y,z)
print(type(x))
print(type(y))
print(type(z))

所以您的输出将如下所示-

2 3 4
2 3 4
<class 'int'>
<class 'int'>
<class 'int'>

正如@dyukha正确指出的那样,您不能将input()。split()包裹在int()内的原因是因为split()返回一个列表,并且我们无法将列表转换为int数据类型。