在python中我可以使用input()来获取输入而不管数据类型。我知道我们不能使用input()直接输入字符串。但是如何在用户不知道输入类型的情况下提示用户输入?
答案 0 :(得分:2)
input
(假设Python 3;在Python 2中你应该使用raw_input
)总是返回一个字符串。因此,您需要做的是尝试将其转换为各种数据类型。当你无法将其转换为一个时,请尝试另一个。如果您无法将其转换为您尝试的任何类型,请按原样使用字符串。对于简单的情况,我喜欢辅助函数:
def tryconvert(value, *types):
for t in types:
try:
return t(value)
except ValueError, TypeError:
continue
return value
value = tryconvert(input("Enter value: "), int, float)
请注意,您必须指定要从最独特到最少尝试的类型。例如,每个整数都可以解析为float,因此float
不能在int
之前,因为所有int
都将被解析为float
s。
另一种方法是使用ast.literal_eval
,它使用Python自己的规则将包含任何有效Python文字的字符串转换为该数据类型。 (这允许您输入True
,False
,None
,列表,元组和词典以及整数,浮点数和复杂的数字。)如果失败,您可以捕获错误并只使用输入的原始字符串。
from ast import literal_eval
value = input("Enter value: ")
try:
value = literal_eval(value)
except ValueError:
pass
解析完字符串后,打印值的类型很简单:
print(type(value))
或更简洁:
print(type(value).__name__))