我有一个简单的问题:我想编写一个函数来检查元组的所有元素是否都是int。
这是我尝试过的:
def istuple(t):
if type(t)!=tuple:
return None
else:
for i in t:
while type(i) == int:
return True
return False
如果我输入以下元组,则代码的第一部分工作正常;
(1,2,3,6.6,3.5,9.0)或(2,4,'ok','yes','no')它应该返回False,但代码却给我True。 >
如何修改我的代码?我知道还有很多其他方法(甚至更短),但是我必须使用while循环
答案 0 :(得分:2)
您可以使用isinstance
来检查类型。
def istuple(t):
return all(isinstance(x, int) for x in t)
编辑:
我刚读完你的最后一行。为此,请使用while
循环:
def istuple(t):
if not t:
return False
gen = iter(t)
out = True
while out:
try:
out = isinstance(next(gen), int)
except StopIteration:
return True
return False