我尝试打印用户输入的数据类型并生成如下表:
ABCDEFGH = String
1.09 = float
0 = int
true = bool
等等。
我使用的是Python 3.2.3,我知道我可以使用type()
来获取数据的类型,但在Python中,所有用户输入都是字符串,我不知道如何确定输入是字符串、布尔、整数还是浮点型。
user_var = input("Please enter something: ")
print("you entered " + user_var)
print(type(user_var))
它总是为字符串返回str
。
4条答案
按热度按时间7z5jn7bk1#
qmelpv7a2#
input()
总是返回一个字符串。如果你想知道它是否可以被转换成一个整数,你应该做:你可以这样写一个函数:
但是,正如在其他答案中提到的,使用
ast.literal_eval
将是一个更简洁的解决方案。t1rydlwq3#
输入总是会返回一个字符串。你需要对这个字符串求值以得到一些Python值:
如果你想要安全(这里用户可以执行任意代码),你应该使用
ast.literal_eval
:q5iwbnjs4#
这里的问题是,任何输入都是“字符串”,所以我们需要把“字符串”当作一个特例,并把它和其他东西分开。
这里首先对输入进行求值。如果它不是字符串,eval函数将显示其类型。如果它是字符串,则认为它是一个“错误”,并给出错误消息“这是一个字符串”。