如何在单行中将不同的数据类型作为输入

时间:2019-08-21 15:31:23

标签: python python-3.x

我想使用单个输入行将字符串和整数作为输入,但是解释器返回了错误'type' object is not iterable。这是我尝试的代码:

name, age = map(str, int, input("Enter the name and age \t").split())

3 个答案:

答案 0 :(得分:1)

您很亲密,可以稍后进行投射:

name, age = input("Enter the name and age \t").split()
age = int(age)

您使用的map错误。如果您真的想在一行中执行此操作,则可以使用如下所示的lambda函数:

name, age = map(lambda x: int(x) if x.isdigit() else x, input("Enter the name and age \t").split())

答案 1 :(得分:1)

不要使事情复杂化。

name, age = input("Enter the name and age\t").split()
age = int(age)

问题在于map期望一个是可调用的,其后是一个或多个可迭代的值,具体取决于可调用对象期望的参数数量。可调用对象应用于每个可迭代对象中的一个元素,等效于

# result = list(map(f, x1, x2, ...))
result = [f(a1, a2, ...) for a1, a2, ... in zip(x1, x2, ...)]

您想要的是多个可调用对象,每个可调用对象都将应用于单个可迭代对象的不同元素:

name, age = [f(a) for f, a in zip([str, int], xs)]

答案 2 :(得分:0)

name, age = [int(i) if i.isdigit() else i for i in input("Enter the name and age \t").split()]

注意:

  

您不能以这种方式使用map功能

     

map()函数为其中的每个项目执行指定的功能   一个可迭代的。该项作为参数发送到函数。

     

语法

map(function, iterables)