1

xとyの間の整数を評価し、整数3と5による除算性をチェックするためのコードをいくつか作成しました。これがコードです。

def div_3_5(start, end):
    result = 0
    result2 = 0
    result3 = 0 
    while start < end:
        result2 = start + result 
        result = result2 - start + 1
        if result2 % 3==0 or 5==0:
            result3 = result3 + 1 
        else:
            result3 = result3 + 0
        return result3

私は初心者ですが、「or」ステートメントを誤って使用したり、除算性を誤ってチェックしたりしない限り、もちろんコードではすべてが正常に見えます。それが私を主な質問に導きます。どんな助けでもいただければ幸いです。

4

1 に答える 1

6

これを行う必要があります:

if result2 % 3 == 0 or result2 % 5 == 0:

それ以外の場合は、として解析されますがif (result2 % 3==0) or (5==0):、これは明らかに間違ってい5 != 0ます。

除算性をチェックしたい数値が多いので、非常に役立つ別の提案:

if any(result2 % i == 0 for i in (3, 5)):

これは、あなたがやろうとしているように見えることのはるかに単純なバージョンです(プロジェクトオイラー問題1):

def div_3_5(start, end):
    return sum(1 for i in range(start, end+1) if i % 3 == 0 or i % 5 == 0)

または、ド・モルガンの法則とそれが-っぽい値0であるという事実を使用して:False

def div_3_5(start, end):
    return sum(1 for i in range(start, end+1) if not (i % 3 and i % 5))
于 2013-03-09T11:49:36.010 に答える