首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较python中的变量类型?

如何比较python中的变量类型?
EN

Stack Overflow用户
提问于 2015-10-15 10:23:58
回答 4查看 8.7K关注 0票数 4

我正在开发一个简单的程序,它将询问天气和温度,并输出用户应该穿的衣服。但是,我想确保用户不能输入"g“度或任何其他字符串。有没有比较变量类型的简单方法?换句话说,有没有类似的东西:

代码语言:javascript
复制
if (type(temp) == 'str'):

    print("Invalid. Try again.")

或者是不太复杂的类似的东西?就我个人而言,我可以使用高级函数之类的东西,但对我的CS老师来说,这看起来很粗略。

EN

回答 4

Stack Overflow用户

发布于 2015-10-15 10:26:07

你说得很对,只是不需要引用。

代码语言:javascript
复制
>>> type(5) == int
True
>>> type('5') == int
False
>>> type('5') == str
True
票数 5
EN

Stack Overflow用户

发布于 2015-10-15 10:28:43

It's easier to beg forgiveness than to ask permission.

考虑一下我们大多数人在这个场景中会做什么(假设是Python 3):

代码语言:javascript
复制
temp = int(input("Enter a numerical input: "))

如果我们得到的输入不是一个数字,我们将用一个ValueError来炸掉它。了解了这一点,我们应该对其执行just...catch:

代码语言:javascript
复制
try:
    temp = int(input("Enter a numerical input: "))
except ValueError as e:
    print("Invalid input - please enter a whole number!");

不要纠结于类型检查,因为这会让你的代码不那么Pythonic风格。相反,不要害怕这段代码有机会崩溃;如果它失败了,只需捕获异常并在以后处理后果即可。

票数 3
EN

Stack Overflow用户

发布于 2015-10-15 10:33:13

Python有一个用于检查变量类型的内置函数。从docs

isinstance(对象,类信息)

如果object参数是classinfo参数的实例或其(直接、间接或虚拟)子类的实例,则返回true。如果classinfo是类型对象(新型类),并且对象是该类型或其(直接、间接或虚拟)子类的对象,则也返回true。如果object不是类实例或给定类型的对象,则函数始终返回false。如果classinfo既不是类对象也不是类型对象,它可以是类或类型对象的元组,或者可以递归地包含其他这样的元组(不接受其他序列类型)。如果classinfo不是类、类型或类、类型和此类元组的元组,则会引发TypeError异常。

例如:

代码语言:javascript
复制
>>>n=3 
>>>isinstance(n, int)
True
>>>isinstance(n, str)
False
>>>m="example"
>>>isinstance(m, int)
False
>>>isinstance(m, str)
True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33138783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档