1
def common(num): 
    #returns true if num is divisible by all the 'i' integers 

    if all(num%divisor==0 for divisor in (1,10)): 
     return True 
    else: 
     return False 

print(common(2520)) --> True 
print(common(10)) --> True 
print(common(17)) --> False 

こんにちは、この関数は、 'num'がすべての 'i'番号の共通倍数であるかどうかを判断することになっています。私はなぜ10が真を返すのか理解できません。 「すべて()」とは、すべてのテストが真でなければならないということですか? 私はそれを間違って使用していますか?私が使うべきもっと良い機能は何ですか?どんな洞察にも感謝します。'all()'関数を使用したIF文での複数ブールテスト

-WT

+1

:機能common()のように、あなたはそれを定義することができます

all(num%divisor==0 for divisor in range(1,10)) 

と同じ戻り値を持っていることを

注意二。あなたが何をすべきかは不明です。多分、あなたは、例えば 'range(1,10)'を望んでいたでしょうか?推測できない。 –

+0

またはおそらく 'range(1,11)' – chapelo

+1

もしあなたが 'if条件を実行していると分かったのなら、FY​​I、return True; else:return False'、実際には 'return condition'を行うだけです。 (ある状況では、Pythonは 'if'文のブール値に変換しますので、スーパーバイヤーにしたい場合は' return bool(condition) 'を実行してください) – detly

答えて

3

自分を見つける方法:

num=10 
for divisor in (1,10): 
    print(divisor, num%divisor , num%divisor==0) 

1 0 True 
10 0 True 

を与え、あなたは確かにrange(1,10)を望んでいながら(1,10)は、タプルであることを理解します。 divisor` `にバインドされた値のみがそれらのわずか1および10ある

def common(num): 
    return all(num%divisor==0 for divisor in range(1,10)) 
+1

@ジョンOK。私はちょうど感謝としてあなたの最もupvoted答えをupvoted – eyquem

+0

ありがとうジョン!私はプログラミング/ Pythonには新しいので、タプルが何であるか分からなかった。そして、あなたはifステートメントを省略することが何を意味するのかを見ています。あなたはロック! – watchTower

関連する問題