编写一个函数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")
答案 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" == type
与type
相同。这没有任何意义 - 字符串&#34;你好&#34;显然与False
的概念不同,因此评估为type
。
你真正想问的是{&#34;你好&#34; str
与type(i) == str
类型相同。您可以按如下方式检查:int Box::objectCount = 0;
。对其余代码进行类似调整可以使其正常工作。