type()输入,基于数据类型打印()

时间:2017-03-17 23:22:52

标签: python python-2.7 types

编写一个函数data_type,它接受一个参数并打印出该参数的数据类型。因此,如果我们给一个字符串作为输入,它会说我们的输入是一个字符串,如果我们给出一个整数或一个浮点数就相同。 如果有人能给我一些解释,我不知道我做错了什么,我会非常感激!希望我对这个问题很清楚。

def data_type(x,y):
    for i in x,y:
        if i == type(str):
            print "str"
        elif i == type(int):
            print "int"
        else:
            if i == type(float):
                print "float"

data_type(1,"string")

2 个答案:

答案 0 :(得分:0)

更简单的函数实现:

def print_types(*args):
    for arg in args:
        print(type(arg).__name__)

关于此的一些注释:

*args语法允许函数采用许多位置参数,它们将被“打包”到args中(作为元组可用于函数)。 type(x)将返回x类型,其__name__属性。

请注意,对于“旧样式”类(在python2中,那些不从object继承的类),这有点不正确,您需要调整它:

>>> class C: pass
... 
>>> type(C())
<type 'instance'>
>>> type(C()).__name__
# Not what we want
'instance'

如果您还想处理旧式对象:

def print_types(*args):
    for arg in args:
        try:
            print(arg.__class__.__name__)
        except AttributeError:
            print(type(arg).__name__)

快速演示

>>> class C: pass
... 
>>> class D(object): pass
... 
>>> print_types(C, C(), D, D(), 'foo', 2)
classobj
C
type
D
str
int

在没有“旧式”类概念的python3中,您将获得以下内容:

>>> print_types(C, C(), D, D(), 'foo', 2)
type
C
type
D
str
int

答案 1 :(得分:-1)

你太通俗了。 i == type(str)模糊地读取&#34;我是类型字符串&#34;但它实际上并不意味着。

您可以通过将type(str)输入解释器来了解str。它会告诉您type属于str类型,这是有道理的,因为"hello" == type(str)是一种类型。

例如,"hello" == typetype相同。这没有任何意义 - 字符串&#34;你好&#34;显然与False的概念不同,因此评估为type

你真正想问的是{&#34;你好&#34; strtype(i) == str类型相同。您可以按如下方式检查:int Box::objectCount = 0;。对其余代码进行类似调整可以使其正常工作。