5

我正在编写一个函数,它将返回一个平方数列表,但如果该函数采用参数 ('apple') 或 (range(10)) 或一个列表,它将返回一个空列表。我已经完成了第一部分,但如果参数 n 不是整数,我无法弄清楚如何返回空集 - 我不断收到错误:不可排序的类型:str() > int() 我知道字符串可以' t 与整数进行比较,但我需要它来返回空列表。

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
4

3 回答 3

5

您可以使用typepython 中的函数来检查变量是什么数据类型。为此,您将使用type(n) is int检查是否n是您想要的数据类型。此外,map已经返回一个列表,因此不需要演员表。所以...

def Squares(n):
    squareList = []

    if type(n) is int and n > 0:
        squareList = map(square, range(1, n+1))

    return squareList
于 2013-07-06T03:13:47.563 回答
2

您可以将导致返回空列表的所有条件链接到一个条件中or,如果它是一个列表,则使用 'sie,或者等于'apple',或者等于,range(10)或者n < 0然后返回一个空列表。否则返回 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检查是否nlist.

一些测试用例:

print squares([1,2])
print squares('apple')
print squares(range(10))
print squares(0)
print squares(5)

获取

[]
[]
[]
[]
[1, 4, 9, 16, 25]
>>> 
于 2013-07-06T03:09:12.777 回答
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]
[]
于 2013-07-06T03:08:21.043 回答