Python - 使用map存储字符串和int(sys.stdin.readline())

Dea*_*oke 7 python python-2.7

如果输入包含空格分隔的int行,则 -

1 3
Run Code Online (Sandbox Code Playgroud)

我可以使用该map()函数将其存储在数组中

arr = map(int,sys.stdin.readline().split())
Run Code Online (Sandbox Code Playgroud)

或者甚至在两个单独的变量中

n,m = map(int,sys.stdin.readline().split())
Run Code Online (Sandbox Code Playgroud)

有没有办法使用相同的方法来读取包含混合数据类型的输入行.例如.-

foo 3
Run Code Online (Sandbox Code Playgroud)

where foo是一个字符串,3是一个整数?

Pad*_*ham 4

如果你总是有一个字符串和非负整数:

import sys
n, m = map(lambda x: (str, int)[x.isdigit()](x) ,sys.stdin.readline().split(None, 1)) 


print(n,m)
Run Code Online (Sandbox Code Playgroud)

但最安全的方法始终是在转换用户输入时使用 try/ except,即使只期望一种类型。

根据要求,可以检查是否为阴性:

import sys
n, m = map(lambda x: (str, int)[x.isdigit() or x.strip("-").isdigit()](x) ,sys.stdin.readline().split())


print(n, m)
Run Code Online (Sandbox Code Playgroud)

--10 --10--也可能通过测试但会导致错误,因此仅针对您的具体情况。