Python 3.x 在int()中包装input().split()时获取TypeError
所以我只是想知道我所得到的错误的原因和原因,以便更好地理解python 这是我试过的 代码片段#1Python 3.x 在int()中包装input().split()时获取TypeError,python-3.x,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'> 因此,在这里,在int()内包装input().split()时,它会抛出一个错误,如下所示: TypeError:int()参数必须是字
x,y=int(input()),int(input())
print(x,y)
print(type(x))
print(type(y))
所以我得到了输出-
4
6
4 6
<class 'int'>
<class 'int'>
因此,在这里,在int()内包装input().split()时,它会抛出一个错误,如下所示:
TypeError:int()参数必须是字符串、类似字节的对象或
编号,而不是“列表”
我的怀疑
我只是想知道为什么我不能在input()中包装int()。split()?有没有别的办法?或者如果不允许,请解释原因 来自:
str.split()返回str中单词的列表
您不能将列表
转换为int
您可以这样尝试:
(x, y) = (int(x) for x in input().split('-'))
print(x, y)
print(type(x))
print(type(y))
好的,如果您想在一行中获取多个输入,并将其转换为所需的数据类型,可以使用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'>
2 3 4
2 3 4
正如@dyukha正确指出的,无法将input()包装起来的原因。int()中的split()是因为split()返回一个列表,而我们无法将列表强制转换为int数据类型。因为split返回一个列表。您不能将列表强制转换为int。您应该使用列表理解或
map
使其工作。@dyukha您是正确的。我刚接触到map的概念,发现了你所说的。你的解决方案也是可以接受的,也是完成工作的另一种方式。感谢你的帮助。
2 3 4
2 3 4
<class 'int'>
<class 'int'>
<class 'int'>