如何让输入识别其他类型的变量?

时间:2018-08-17 21:02:33

标签: python variables

这是我写下来的一个非常快速的程序。

var = input ("Insert A Variable: ")

#Integer
if isinstance(var, int):
    VarType = "Integer"

#String
if isinstance(var, str):
    VarType = "String"

#List
if isinstance(var, list):
    VarType = "List"

#IDictionary
if isinstance(var, dict):
    VarType = "Dictionary"

print ("Variable Type: " + VarType + ".")

但是,每个输入都返回String值,将12视为"12",将[]视为"[]",等等。

有什么想法吗?预先感谢!

1 个答案:

答案 0 :(得分:3)

在Python 3中,input()始终返回一个字符串。您可以使用ast.literal_eval()安全地评估用户输入,并使用type()确定类型:

>>> import ast
>>> var = ast.literal_eval(input())
{}
>>> type(var)
<class 'dict'>

或者按照Jon Clements的建议,完全处理不良输入:

def get_type(prompt=''):
    text = input(prompt)
    try:
        T = type(ast.literal_eval(text))
    except (ValueError, SyntaxError):
        T = str
    return T.__name__