1

リストのすべての要素がパラメーターの要素であるかどうかを確認するメソッドを定義しようとしています。

ここに私が持っているものがあります:

def factorall(x):
if all(x % num  for num in nums) == 0:
    return True
else:
    return False

(この場合、nums は 1 から 10 までの整数のリストです)

ただし、これは任意の数値に対して true を返します。これは 1 だけをチェックしてから True を返すためだと思いますが、all() は True を返す前にリストのすべての要素をチェックするべきではありませんか?

私は all() に少し慣れていないので、おそらく間違って実装しました。誰かが私を正しい方向に向けることができますか?

ありがとう!

4

3 に答える 3

7

not anyすべての代わりに使用する必要があります

def factorall(x):
    return not any(x%num for num in nums) #if any of these is a value other than 0

または、現在持っているのと同じようにしたい場合

def factorall(x):
    return all(x%num==0 for num in nums)
于 2013-08-08T19:41:11.367 に答える
2
def factorall(x):
    if all(x % num == 0  for num in nums):
        return True
    else:
        return False
于 2013-08-08T19:38:58.013 に答える
2

関数内で比較を行うallか、単純に削除して、結果の否定を使用する必要がありますx % num

def factorall(x):
    return all(not x % num for num in nums)

return ステートメントは次のように機能します。

return all(x % num == 0 for num in nums)

2番目の方が明確に見えることに同意します。

于 2013-08-08T19:39:09.993 に答える