我正在编写一个函数,它将返回一个正方形数字列表,但如果该函数采用参数('apple')或(range(10))或列表,则返回一个空列表。我已完成第一部分,但如果参数n不是整数,则无法弄清楚如何返回空集 - 我不断收到错误:unorderable types:str()> INT() 我知道字符串不能与整数进行比较,但我需要它来返回空列表。
def square(n):
return n**2
def Squares(n):
if n>0:
mapResult=map(square,range(1,n+1))
squareList=(list(mapResult))
else:
squareList=[]
return squareList
答案 0 :(得分:4)
您可以使用python中的type
函数来检查变量的数据类型。为此,您可以使用type(n) is int
检查n
是否是您想要的数据类型。此外,map
已经返回一个列表,因此不需要强制转换。因此...
def Squares(n):
squareList = []
if type(n) is int and n > 0:
mapResult = map(square, range(1, n+1))
return squareList
答案 1 :(得分:1)
您可以使用or
链接导致将空列表返回到一个条件的所有条件。即如果它是一个列表,或等于'apple'
,或等于range(10)
或n < 0
,则返回一个空列表。 ELSE返回mapResult。
def square(n):
return n**2
def squares(n):
if isinstance(n,list) or n == 'apple' or n == range(10) or n < 0:
return []
else:
return list(map(square,range(1,n+1)))
isinstance
检查n
是list
的实例。
一些测试用例:
print squares([1,2])
print squares('apple')
print squares(range(10))
print squares(0)
print squares(5)
获取
[]
[]
[]
[]
[1, 4, 9, 16, 25]
>>>
答案 2 :(得分:0)
您无法像尝试那样将字符串与整数进行比较。如果您想检查n
是否为整数,可以使用isinstance()
:
def squares(n):
squareList = []
if isinstance(n, (int, float)) and n > 0: # If n is an integer or a float
squareList = list(map(square,range(1,n+1)))
return squareList
现在,如果给出一个字符串或一个列表作为参数,该函数将立即返回一个空列表[]
。如果没有,那么它将继续正常运行。
一些例子:
print(squares('apple'))
print(squares(5))
print(squares(range(10)))
将返回:
[]
[1, 4, 9, 16, 25]
[]