我正在开发一个简单的程序,它将询问天气和温度,并输出用户应该穿的衣服。但是,我想确保用户不能输入"g“度或任何其他字符串。有没有比较变量类型的简单方法?换句话说,有没有类似的东西:
if (type(temp) == 'str'):
print("Invalid. Try again.")或者是不太复杂的类似的东西?就我个人而言,我可以使用高级函数之类的东西,但对我的CS老师来说,这看起来很粗略。
发布于 2015-10-15 10:26:07
你说得很对,只是不需要引用。
>>> type(5) == int
True
>>> type('5') == int
False
>>> type('5') == str
True发布于 2015-10-15 10:28:43
It's easier to beg forgiveness than to ask permission.
考虑一下我们大多数人在这个场景中会做什么(假设是Python 3):
temp = int(input("Enter a numerical input: "))如果我们得到的输入不是一个数字,我们将用一个ValueError来炸掉它。了解了这一点,我们应该对其执行just...catch:
try:
temp = int(input("Enter a numerical input: "))
except ValueError as e:
print("Invalid input - please enter a whole number!");不要纠结于类型检查,因为这会让你的代码不那么Pythonic风格。相反,不要害怕这段代码有机会崩溃;如果它失败了,只需捕获异常并在以后处理后果即可。
发布于 2015-10-15 10:33:13
Python有一个用于检查变量类型的内置函数。从docs
isinstance(对象,类信息)
如果object参数是classinfo参数的实例或其(直接、间接或虚拟)子类的实例,则返回true。如果classinfo是类型对象(新型类),并且对象是该类型或其(直接、间接或虚拟)子类的对象,则也返回true。如果object不是类实例或给定类型的对象,则函数始终返回false。如果classinfo既不是类对象也不是类型对象,它可以是类或类型对象的元组,或者可以递归地包含其他这样的元组(不接受其他序列类型)。如果classinfo不是类、类型或类、类型和此类元组的元组,则会引发TypeError异常。
例如:
>>>n=3
>>>isinstance(n, int)
True
>>>isinstance(n, str)
False
>>>m="example"
>>>isinstance(m, int)
False
>>>isinstance(m, str)
Truehttps://stackoverflow.com/questions/33138783
复制相似问题