5

平方数のリストを返す関数を作成していますが、関数がパラメーター ('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
4

3 に答える 3

5

Pythonの関数を使用してtype、変数のデータ型を確認できます。これを行うには、必要なデータ型である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'を使用して 1range(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)))

isinstancenのインスタンスかどうかをチェックしますlist

いくつかのテストケース:

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 に答える