在python中使用“input”提示整数和字符串输入

时间:2015-03-30 02:53:45

标签: python

在python中我可以使用input()来获取输入而不管数据类型。我知道我们不能使用input()直接输入字符串。但是如何在用户不知道输入类型的情况下提示用户输入?

1 个答案:

答案 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文字的字符串转换为该数据类型。 (这允许您输入TrueFalseNone,列表,元组和词典以及整数,浮点数和复杂的数字。)如果失败,您可以捕获错误并只使用输入的原始字符串。

from ast import literal_eval
value = input("Enter value: ")
try:
    value = literal_eval(value)
except ValueError:
    pass

解析完字符串后,打印值的类型很简单:

print(type(value))

或更简洁:

print(type(value).__name__))